3D verilerin uygulamalar arasında aktarımı, özellikle özel formatlar olan yerel bilgisayar destekli tasarım (CAD) dosyaları ile uzun süreli bir zorluk olmuştur. CAD modelleri, fiziksel ürünlerin mühendislik ve üretim süreçleri için hayati öneme sahiptir, ancak karmaşık, işbirlikçi ve simülasyon odaklı ortamlar için tasarlanmamıştır. Bu durum, fiziksel yapay zeka uygulamaları gibi robotik ve özerk araçlar için önemli bir engel oluşturur.
Bu noktada, OpenUSD (Evrensel Sahne Tanımı) önemli bir rol oynamaktadır. OpenUSD, 3D dünyaları tanımlamak, birleştirmek, simüle etmek ve işbirliği yapmak için açık ve genişletilebilir bir ekosistem sunar. CAD verisini OpenUSD formatına dönüştürmek, geliştiricilerin fiziksel tasarımlarını gelişmiş yapay zeka simülasyonları için açmasını sağlar. Bu süreç, iş akışlarını iyileştirir ve araçlar arasında tutarlılığı garanti eder. Böylece fiziksel yapay zeka konseptlerinin tasarımdan gerçeğe dönüşümü mümkün hale gelir.
Bu yazı, bir CAD modelini pipeline için hazır bir USD varlığına dönüştürme için tamamlayıcı bir iş akışını anlatmaktadır. OpenUSD nin yıkıcı olmayan düzenleme ve kesintisiz işbirliği konularındaki gücünü vurgular. Ayrıca, Omniverse Kit SDK‘nın bu iş akışlarını daha erişilebilir hale getirmesine nasıl yardımcı olduğunu açıklar. Bu süreç, olası bir iş akışının yüksek düzeyli bir gösterimi olarak sunulmakta olup, kesin adımlarınız kullandığınız yazılım ve varlık karmaşıklığınıza bağlı olarak farklılık gösterebilir.
Modern 3D İş Akışlarında OpenUSD
Açık bir CAD formatından kullanılabilir bir USD varlığına dönüştürme süreci, öğrenme açısından zengin bir deneyim sunabilir. Dönüştürücüler sağlam bir başlangıç noktası sağlasa da, gerçek güç, OpenUSD yapılarını anlamaktan ve verileri belirli iş akışlarınız için özelleştirmekten gelir. Veri katmanlama, özel veri ekleme ve Python ile etkileşim oluşturma yeteneği, OpenUSD’yi veri işbirliği sorununu ele almak için son derece sağlam bir hale getirir. Her şey tek bir tıklama ile çözülmüyor çünkü OpenUSD’nin esnek yapısı altında birçok farklı iş akışı bulunmaktadır.
OpenUSD, 3D veri aktarım sorununu iki ana özellik ile ele alır: veri kapsayıcılığı ve veri toplama yoluyla işbirliği.
Veri Kapsayıcılığı
OpenUSD, 3D veriler için birçok yerleşik şema sunarak kapsayıcılığı artırır. Bu şemalar, mesh, kamera ve ışıklar gibi yaygın kavramları temsil etme biçimlerini tanımlayan standartlaştırılmış şablonlar gibi çalışır. Ayrıca, genişletilebilir yapı, geliştiricilerin yeni veya haritalanmamış veri modellerini eklemelerine imkan tanır. Bu durum, 3D ortamlar için farklı dosya formatlarının dönüştürülmesi gibi güçlü iş akışlarını mümkün kılar.
OpenUSD ilk olarak açık kaynak haline geldiğinde, şemalar gibi UsdPhysics ve UsdSemantics, katı cisim fiziği ve anlamsal etiketleme desteği sunmuştur. Geliştiriciler için bu şemalar, uygulamaların verileri okumalarını ve amacını anlamalarını sağlayan ortak bir dil oluşturur.
Bu tutarlı yapı, özel araç setlerini, veri doğrulamasını ve yalnızca görsel temsilin çok ötesinde gerçek anlamsal kapsayıcılığı ortaya çıkarır. Bu genişletilebilirlik, CAD parçalarını bir PLM sistemindeki kayıtlara bağlayan özellikler eklemek gibi güçlü özelleştirilmiş entegrasyonları mümkün kılar ve bu, orijinal verilerin tek başına yapamayacağı şekilde modeli zenginleştirir.
Veri Toplama Yoluyla İşbirliği
OpenUSD mimarisi, büyük ve karmaşık sahneleri bir araya getirmek için özellikle etkilidir. Ekiplerin ayrı bileşenler üzerinde paralel olarak çalışmasına olanak tanır; bu bileşenler daha sonra Referanslar ve Yüklemeler kullanılarak büyük sahnede birleştirilir. Bu yaklaşım, veri çoğaltımını önler ve güncellemelerin tüm iş akışına sorunsuz bir şekilde yayılmasını sağlar. Ayrıca, OpenUSD’nin yıkıcı olmayan katmanlama sistemi, ekiplerin birbirlerinin çalışmalarını silmeden üstüne inşa etmelerine olanak tanıyarak güçlü işbirliği iş akışlarını mümkün kılar.
Daha fazla bilgi için, OpenUSD Nasıl Kullanılır’a bakabilir ve NVIDIA Derin Öğrenme Enstitüsü’nün kendi hızınıza göre ilerleyebileceğiniz kursu olan OpenUSD Öğren: Kompozisyon Yayları Oluşturma kursuna göz atabilirsiniz.
CAD’den USD’ye Örnek İş Akışı
Bu örnek iş akışı, CAD verilerini bir Jupiter Tessellation (JT) dosyası olarak dışa aktarmakla başlar. JT, 3D görselleştirme ve işbirliği için yaygın olarak kullanılan bir Uluslararası Standartlar Örgütü (ISO) standardıdır. Karmaşık montajları ve parça meta verilerini temsil etmede iyidir, ancak doğrudan USD formatında değildir.
Başlangıç olarak, CAD varlığı (örneğin bir Nova Carter) OnShape’de host edilerek bir JT dosyasına dışa aktarılır.

Dosyanın USD’ye Dönüştürülmesi
Sonraki aşamada, JT dosyaları USD dosyalarına dönüştürülmektedir. Bu adım için birkaç ticari ve bazı yeni açık kaynak araçlar bulunmaktadır. Bu örnek, JT dosyasını USD’ye dönüştürmek için Omni.kit.converter.cad ve omni.kit.convert.jt_core Kit uzantılarını kullanmaktadır. Dışa aktarmak için headless bir yöntem kullanılmıştır; ancak Omniverse GUI‘yı da kullanabilirsiniz.
Bu örnek, JT varlığını dönüştürmek için Omniverse CAD Dönüştürücü CLI talimatlarını izlemektedir:
- Uzantıları Uzantı Yöneticisinde etkinleştirin.
- Kit yürütülebilir dosyasının bulunduğu dizine gidin.
- Bağımlılıklar bölümüne omni.services.convert.cad = {} ekleyin.
- Aşağıdaki komutu çalıştırmak için uygulamayı oluşturun. Bu komutu kendiniz çalıştırırsanız dosya yollarını ayarlamayı unutmayın.
./kit.exe `
--allow-root `
--enable omni.kit.converter.jt_core `
--exec `
--/app/fastShutdown=1 `
'"C:UsersjuslinAppDataLocalovdataKitJustine_Composer.1exts3omni.services.convert.cad-506.2.3+107.3.0.u353/omni/services/convert/cad/services/process/jt_main.py" --input-path "C:UsersjuslinDownloadsRelease2021.1Carterv2.0ASM.jt" --output-path "C:UsersjuslinDownloadsNovaCarter.usd" --config-path "C:UsersjuslinDownloadsjt_config.json"'`
--info
Dönüştürmenin Analizi
Dönüştürme tamamlandığında, yeni bir USD dosyası oluşturulmuş olur. Bu yeni dosya, bir Omniverse Kit uygulamasına yükleyerek açılabilir. Bu uygulamayı Kit Uygulama Şablon GitHub repo kullanarak inşa edebilir ve sonuçta oluşan sahne grafiğini orijinal JT montaj yapısı ile karşılaştırabilirsiniz. CAD modelinin temel özünün bozulmadan korunduğundan emin olun; artık yeni bir USD yerel görünüm ile görünmektedir.
Temiz Dönüşümle Neler Aktarıldı?
Tasarımın yapısı ve içeriği, en kritik bilgilerin korunmasını sağladı.
Hiyerarşinin Korunması
Bu örnekteki en önemli başarı, montajın ağaç yapısının korunmasıdır. Orijinal JT dosyasındaki iç içe hiyerarşi, USD sahnesinde mükemmel bir şekilde yansıtılmıştır. Üst düzey montaj primini, RMPLite2201 açarak, orijinal CAD verilerinde olduğu gibi alt montajlar ve parçaların listelendiğini görebilirsiniz. Bu durum, tasarım amacını ve bileşenlerin mantıksal grubunu korumak açısından kritik öneme sahiptir.
Prim Eşleştirmeleri
Giriş ve çıktılar arasında net ve öngörülebilir bir ilişki vardır. Orijinal JT modelindeki her bileşen örneği için, dönüştürücü sahnede karşılık gelen bir prim oluşturur. Bu birbiriyle eşleşme, verinin öngörülebilir ve senkronize hale gelmesini sağlar. Bu, materyalleri veya animasyonları uygulamak gibi sonraki işlemler için sağlam bir temel oluşturur.
Tanınabilir İsimlendirme
İsimler aynı olmasa da (daha sonra belirteceğimiz gibi), her primin ana adı tamamen orijinal CAD bileşen adından türetilmiştir. Bu, sahne grafiğinin hemen insan tarafından okunabilir olmasını ve kolayca gezinilmesini sağlar. Orijinal CAD modelindeki bileşen isimlerini görmek için Sahne sekmesi menüsüne gidip Görüntüleme İsimlerini Göster‘i etkinleştirin. Bu, yerel ve USD sürümlerini karşılaştırmayı kolaylaştırır.
Farklılıklar: Dönüştürme Parmak İzi
Bu örnekteki farklar, hatalardan çok, otomatik dönüştürme sürecinin bıraktığı “parmak izi” ile ilgilidir. Bu değişiklikler, USD’nin nasıl çalıştığına ve dönüştürücünün geçerli, yüksek performanslı bir sahne sağlamak için nasıl tasarlandığına dair verilerdir.
İsimlendirme Ön Ekleri ve Son Ekleri
Her prim ismi değişir:
tn_
ön eki: Tüm primlertn_
ile başlar. Bu, Omniverse’deki dönüştürücülerin hangi kısımlarının otomatik olarak oluşturulduğunu belirlemek için kolay bir kimlik oluşturma için yaygın bir uygulamadır.- Tanımlayıcı son ekler: Prim isimlerine eklenen rastgele karakter dizileri vardır (
tn_Bolt_A_Xform_01_2aef1d
gibi). Bu da omni.transcoding tarafından yazılan kodlanmış bir dizgidir. - Dizgeler: OpenUSD primlerinde ve diğer tanımlayıcılarda hâlâ izin verilmeyen birkaç tür dizgeler vardır. Daha fazla bilgi için bakınız: Geçersiz Tanımlayıcıların İki Yönlü Dönüşümü.
Sahne Grafi USD Instance’ları
Sahne grafi USD instance’ları, bu örnekteki en büyük ve faydalı değişikliktir. Orijinal JT dosyasında, cıvatalar ve sabitleyiciler gibi birçok tekrar eden parça bulunmaktadır. Dönüştürücü, her bir örneğin geometrisinin tam bir kopyasını oluşturmak yerine instance kullanmaktadır. Cıvata geometrisi için tek bir verimli mesh yaratılır ve ardından her biri kendi konum ve yönüne sahip hafif primler oluşturularak bu mesh’e işaret edilir.
Bu, file boyutunu ve bellek kullanımını önemli ölçüde azaltarak sahnenin gerçek zamanlı uygulamalarda çok daha performanslı hale gelmesini sağlar. Bu amaca yönelik yapılandırma teknikleri, tekrar eden parçaları verimli şekilde temsil ederek temiz bir USD sahnesi oluşturur.
Ham Veriden Üretim Varlığına: Optimizasyon, Malzemeler ve Yapılandırma
JT’den USD’ye yapılan ilk dönüşüm, yapısal olarak sağlam ancak ham bir varlık sunar. Geometri yoğun bir şekilde CAD’den gelir, malzemeler basit renklerden ibarettir ve tüm veri kümesi tek bir monolitik parçadır.
Peki bu veri, gerçek zamanlı oluşturma, simülasyon veya işbirlikçi iş akışları için nasıl hazırlanır? Veri, OpenUSD‘nin en güçlü özelliklerinden bazıları olan Yüklemeler ve Referanslar kullanılarak optimize edilmeli, zenginleştirilmeli ve yapılandırılmalıdır. Ayrıca, Omniverse özelliklerinden biri olan Sahne Optimizasyon Araçları da bu süreçte kullanılabilir.
Optimizasyon
CAD geometrisinin poligonel mesh’e dönüştürülmesi genellikle aşırı derecede yoğundur. Dönüştürülen model milyonlarca poligon içeriyordu, bu da gerçek zamanlı kullanım için çok ağır hale getiriyordu. Çözüm, omni.scene.optimizer uzantısını kullanarak geometri için optimize edilmiş versiyonlar oluşturmaktır; bu, Omniverse Kit’te çekirdek bir teknoloji olarak mevcuttur. Bu uzantı, ağır USD dosyasını programatik olarak işleyebilir ve hafif bir versiyonunu oluşturabilir.
Omniverse Kit uygulamasının içinde yerleşik bir betik editörü bulunmaktadır. Bu, aşağıdaki üç ana Sahne Optimizasyon Operasyonu üzerinde yapılandırma yapmayı sağlar:
Merge_params
: Aynı malzemeleri paylaşan tüm mesh’leri birleştirir. Bu, genellikle aynı malzemeye sahip birçok ayrı parçayı içeren CAD modelleri için önemli bir performans kazancıdır. Instance etme dışında, sahnenin prim sayısını azaltmanın başka bir yolu da budur.Hidden_mesh_params
: Görünümden tamamen gizli iç mesh’lerifindHiddenMeshes
kullanarak belirler ve kaldırır. Bu, CAD modelleri için mükemmel bir işlemdir çünkü genellikle asla görünmeyecek karmaşık iç bileşenler içerir ve yine de bellek ve işlem gücü tüketir.Decimation_params
: Mesh primleri için tessellation yoğunluğunu azaltır.max_mean_error
değeri 0.1 ayarlandığında, basitleştirilmiş üzerinde iki modelin yüzeyinin 0.1 birim (genellikle santimetre) kadar kayma göstermeyeceği garanti edilir.
import omni.usd
import omni.kit.commands
import omni.scene.optimizer.core
import time
import json
import carb
# USD context'i al
usd_context = omni.usd.get_context()
# Döngüde açık olan sahneyi al
stage = usd_context.get_stage()
if not stage:
carb.log_error("Açık bir sahne yok. Lütfen önce USD dosyanızı açın ve bu betiği tekrar çalıştırın.")
else:
optimizer_interface = None
try:
# Optimizasyon arayüzünü al
optimizer_interface = omni.scene.optimizer.core.acquire_interface()
# Çalıştırma bağlamını oluştur
execution_context = omni.scene.optimizer.core.ExecutionContext()
# Açık sahnenin benzersiz kimliğini al
stage_id = usd_context.get_stage_id()
execution_context.usdStageId = stage_id
# -----------------------------------------
# Parametreleri tanımla
merge_params = {
"merge_materials": True,
"merge_visuals_only": True
}
hidden_mesh_params = {
"operation": "findHiddenMeshes",
"paths": [],
"gridResolution": 100.0,
"action": 0, # Bu bayrak '0' iç mesh'in devre dışı bırakılmasını ayarlar
"useGpu": False
}
# Maksimum ortalama hata, yeni mesh yüzeyinin orijinalin üzerinde bu miktardan daha fazla kaymasına izin vermez
decimation_params = {
"decimation_filter_prim_type": "Mesh",
"max_mean_error": 0.1
}
carb.log_info("Bağlam hazır. İşlemleri yürütüyorum...")
# --- Aşama 1: Mesh'leri Birleştir ---
carb.log_info("Aşama 1: Mesh'leri Birleştiriliyor...")
result = optimizer_interface.execute_operation("merge", execution_context, json.dumps(merge_params))
if not result[0]:
carb.log_error(f"Birleştirme işlemi başarısız oldu: {result[1]}")
else:
carb.log_info(f"Birleştirme işlemi başarılı. Günlük: {result[1]}")
# --- Aşama 2: Gizli Mesh'leri Bul ---
carb.log_info("Aşama 2: Gizli Mesh'leri Bululuyor...")
result = optimizer_interface.execute_operation("findHiddenMeshes", execution_context, json.dumps(hidden_mesh_params))
if not result[0]:
print("Gizli mesh bulma işlemi başarısız: ", result[1])
else:
print("Gizli mesh bulma başarılı. Günlük: ", result[1])
# --- Aşama 3: Hata ile Mesh'leri Azalt ---
carb.log_info("Aşama 3: Mesh'leri azaltılıyor...")
result = optimizer_interface.execute_operation("decimateMeshes", execution_context, json.dumps(decimation_params))
if not result[0]:
carb.log_error(f"Mesh'leri azaltma işlemi başarısız oldu: {result[1]}")
else:
carb.log_info(f"Mesh'leri azaltma başarılı. Günlük: {result[1]}")
print("--- Betik bitirildi. ---")
Bu örnek için bu scripti çalıştırdıktan sonra, yedi birleştirilmiş mesh oluşturulabilir. Bu optimizasyon sürecinin ilk aşaması, aynı malzemeyi paylaşan yüzlerce ayrı mesh primini bir araya getirerek yedi yüksek verimli mesh içinde topladı. Bu, render işlemini işlemesi gereken nesne sayısını önemli ölçüde azaltarak sahnenin performansını arttırır.
[INFO] merge: 7 Merged Meshes oluşturuldu.
Optimizer daha sonra, görünümden tamamen gizli 17 iç mesh’i tespit edip devre dışı bırakmaları sağlayarak ek bellek ve işlem kaynakları serbest bırakır; bu durum modelin görsel görünümünde herhangi bir etkiye yol açmaz:
[INFO] findHiddenMeshes: 17 gizli mesh bulundu.
Azaltma işlemi de modelin geometrik karmaşıklığını %82 oranında azaltmaktadır (vertex sayısı açısından). Bu iyileştirmeler, varlıkların gerçek zamanlı uygulamalara uygun hale gelmesini sağlamaktadır.
[INFO] decimateMeshes:
VertexCount: 309164 -> 54374 (82.412567)
FaceCount: 253304 -> 106740 (57.860912)
Gerçekçilik İçin vMaterial Atama
İlk dönüşüm, JT dosyasından temel parça renklerini displayColor
özniteliklerine veya temel UsdPreviewSurface
malzemelerine eşleştirir. Ancak fotogerçekçi sonuçlar elde etmek için, fiziksel olarak tabanlı malzemelere geçmek gerekmektedir. Malzemeleri baştan oluşturmak yerine, NVIDIA vMaterial kütüphanesini kullanarak Kit Malzeme Tarayıcı içindeki yüksek kaliteli, fiziksel açıdan doğru PBR malzemelerini kullanabilirsiniz. Bu işlem, USD katmanlama yetenekleri kullanılarak yıkıcı olmayan bir şekilde yapılabilir ve Omniverse Kit SDK’sına entegre edilmiştir. Böylece sahneye malzemeleri sürükleyip bırakmak kolaylaşır.
Aşağıdaki script, Nova Carter’ın gövdesine Alüminyum Fırçalamayı uygular:
import omni.usd
from pxr import Sdf, Usd, UsdGeom, UsdShade
import carb
# Hedef prim için tam yol
TARGET_PRIM_PATH = "/tn__Release20211Carterv20ASM_WPDKOkCO/tn__BodyBoxASM1_lB8CzCl0/tn__BodyBoxEnclosure_qG8"
# Malzeme priminin tam yolu
MATERIAL_PRIM_PATH = "/tn__Release20211Carterv20ASM_WPDKOkCO/Looks/Aluminum_Brushed_Light_Brushing"
def apply_material_to_prim_and_children(target_path: str, material_path: str):
"""Bir prim bulur ve tüm geometri alt bileşenlerine malzeme uygular."""
stage = omni.usd.get_context().get_stage()
parent_prim = stage.GetPrimAtPath(target_path)
material_prim = stage.GetPrimAtPath(material_path)
material_to_bind = UsdShade.Material(material_prim)
# --- Döngü ile Bağlama ---
bound_count = 0
for prim in Usd.PrimRange(parent_prim):
if prim.IsA(UsdGeom.Mesh):
# Belirli malzeme nesnesini, genel prim yerine bağlayın.
UsdShade.MaterialBindingAPI.Apply(prim).Bind(material_to_bind)
carb.log_info(f"Başarıyla malzeme bağlandı: {prim.GetPath()}")
bound_count += 1
if bound_count > 0:
carb.log_info(f"--- İşlem Tamamlandı. {bound_count} geometri primine malzeme uygulandı. ---")
else:
carb.log_warning(f"--- Betik Tamamlandı, ancak '{target_path}' altında geometri (Gprim) bulunamadı. ---")
# --- Özelleştirilmiş işlevi yürütün ---
if __name__ == "__main__":
apply_material_to_prim_and_children(
target_path=TARGET_PRIM_PATH,
material_path=MATERIAL_PRIM_PATH
)
Performans ve İşbirliği İçin Yüklemeler ve Varlık Yapısı
Bir varlığın gerçekten üretim için hazır hale gelmesi, sahne yapılandırmasını performans ve işbirliği için optimize etmeye bağlıdır; bu, tam olarak USD bileşiminin mükemmel olduğu yer. Bileşimi kullanarak, tüm geometrik verileri barındıran bir katman ile varlık için bir arayüz sağlayan yeni, hafif bir katman halinde ölçeklenebilir bir çözüm uygulamak mümkündür.
Geometri Katmanı (NovaCarter.usd)
Bu döküme göre dönüştürülen ve optimize edilen dosya artık bir geometri katmanı olarak yeni bir rol üstlenir. Görevi yalnızca ağır görsel verileri – optimize edilmiş mesh’leri, karmaşık hiyerarşiyi ve kalite varyantlarını içermektir.
Varlık Arayüz Katmanı (nova.usd)
Bu örnek için yeni, aşırı hafif bir dosya oluşturulmuştur: nova.usd. Bu dosya, varlığın düzgün bir, yüksek seviyeli arayüzünü sağlar.
- Amaç: Bu dosyanın görevi, tüm robot varlığı için temiz bir üst düzey arayüz sağlamaktır. Ağırlıklı verileri (tam 3D model geometrisi ve dokuları) barındırmadığı için anında yüklenir.
- Yapı: Bu dosya içinde, ana bir prim tanımlanır (örneğin, /nova_carter). Bu prim, tüm robot için bir kanca işlevi görür. Ardından, bu prima bir Yükleme uygularız; bu, NovaCarter.usd dosyasına özel bir ip ucudur.
Arayüz katmanı artık hafif bir proxy olarak işlev görmektedir. Kullanıcılar, yükleme yapılmadan tüm robot varlığına referans verir ve /nova_carter’ı sahnede istediği gibi taşıyabilir. Ağırlıklı verilerin sahnede kullanılmasına ihtiyaç duyulmadığı sürece hafif kaldığı için bellek maliyetinden tasarruf edilir.
Ek bir avantaj ise, temel geometrinin silinmesi, malzeme atamalarının üzerine yazılması veya modelin varsayılan hiyerarşisinin değiştirilmesi gibi yıkıcı değişikliklerin, dönüştürülen Nova Carter verisine yanlışlıkla yapılmasını önleyebilir.
from pxr import Usd, Sdf
# 1. Ağırlıklı geometri katmanı için yol tanımlayın.
geometry_layer_path = './NovaCarter.usd'
# 2. Oluşturduğumuz yeni, ince arayüz katmanı için bir ad tanımlayın.
# Not: Bu dosya yollarını kullanırken ayarlamayı unutmayın
interface_layer_path = 'C:/Users/juslin/Downloads/nova.usd'
# Arayüz katmanı için yeni, boş bir USD sahnesi oluşturun
stage = Usd.Stage.CreateNew(interface_layer_path)
# Robot için "tutucu" işlevi görecek ana prim tanımlayın
robot_prim_path = '/nova_carter'
robot_prim = stage.DefinePrim(robot_prim_path)
# Prim üzerindeki 'payloads' API'sini alın
payloads_api = robot_prim.GetPayloads()
# Yükleme referanslarını ekleyin, bu geometri katmanına işaret eden ancak hemen yüklemeyen özel bir ip ucudur.
payloads_api.AddPayload(assetPath=geometry_layer_path)
print(f"Arayüz katmanı oluşturuldu ve yükleme '{geometry_layer_path}' olarak ayarlandı.")
# (İsteğe bağlı) Yükleme yapıldığında kullanılacak varsayılan varyantı ayarlayın.
variant_set = robot_prim.GetVariantSets().AddVariantSet('fidelity')
variant_set.SetVariantSelection('lightweight')
print("Varsayılan varyant 'hafif' olarak ayarlandı.")
# Yeni arayüz katmanını kaydedin. Çok küçük bir metin dosyası olacaktır.
stage.GetRootLayer().Save()
print(f"İnce varlık arayüz katmanı '{interface_layer_path}' başarıyla oluşturuldu.")
/nova_carter
OpenUSD Yüklemesi olarak yönetildiğinde verimlilik ve performans artarBuradaki temel avantaj, /nova_carter
’ın bir Yükleme olarak yönetilmesi; bu, ağır geometrisini, yalnızca sahne için gerektiğinde yüklenene kadar boşta tutar. Bu iki büyük avantaj sağlar: uygulama için hemen performans iyileştirmeleri ve daha verimli bir iş akışı. Dev ölçeklerde, örneğin bir fabrikanın dijital ikizini oluştururken, bu iş akışı gereklidir. Bireysel bileşenler veya bütün montaj hatları Yüklemeler olarak yönetilebilir; bu, hem yüksek performansı sağlar hem de ekiplerin eş zamanlı çalışmasına olanak tanır.
OpenUSD ile Başlayın
3D geliştirme kariyerinizde bir sonraki adıma geçin, yeni OpenUSD Geliştirme sertifikasına sahip olun. Kişisel olarak SIGGRAPH 2025’te USD sertifikası alın.
SIGGRAPH’ta, fiziksel yapay zekanın geleceğini keşfedin, NVIDIA Araştırma açılış konuşmasına katılın, OpenUSD Günü, uygulamalı laboratuvarlar ve geliştirici buluşmasına katılın.
Kendi uygulamalarınızı ve hizmetlerinizi hızlıca geliştirmek ve geliştirmek için geliştirici başlangıç kitleri ile başlayın.
Güncel kalmak için NVIDIA haberlerine abone olun ve NVIDIA Omniverse’i Discord ve YouTube üzerinden takip edin.
- Omniverse geliştirici sayfamızı ziyaret ederek başlamanız için tüm gerekli kaynaklara ulaşabilirsiniz.
- OpenUSD ile ilgili kaynakların bir koleksiyonuna erişin; yeni, kendi hızınıza göre ilerleyeceğiniz OpenUSD’i Öğrenin eğitim müfredatını inceleyin.
- Yaklaşan OpenUSD İnisiyatifleri canlı yayınlarını izleyin ve NVIDIA Geliştirici topluluğu ile bağlantı kurun.