View Categories

Geometri Vekilleri ve Örnekleyici

3 dakika okuma

giriiş #


Bu bölümde V-Ray Proxy Geometrisi ve Instancer işlevselliğinden bahsedeceğiz. Parçacıklar konusunu daha sonraki bir bölümde ele alacağız.

V-Ray Proxy, geometriyi yalnızca render zamanında harici bir ağdan içe aktarır. Geometri, ana uygulama sahnesinde mevcut değildir ve herhangi bir kaynak tüketmez. Bu, ana uygulamanın kendisinin işleyebileceğinden daha fazla, milyonlarca üçgen içeren sahnelerin render edilmesine olanak tanır. Bu teknoloji, bitki örtüsü ve yeşilliklerin render edilmesi için olanaklar sunar, ancak bununla sınırlı değildir; birden fazla benzer nesnenin render edilmesi gereken her durum, örnekleme için iyi bir kullanım örneğidir. Muhtemelen farklı malzemelerle birden fazla düğüm için aynı geometriye referans vererek RAM kullanımını korur.

GeomMeshFile::file özelliği ilgimizi çekecek   . Bu özellik, geometriyi bir dosyadan, yani geometri proxy’sinden yükler. Geometri yalnızca bir ışın ona çarptığında talep üzerine yüklenir; bu nedenle, dağıtılmış kova oluşturma gibi bazı durumlarda gereksiz hesaplamaları ve bellek kullanımını önleyebilir. Şu anda desteklenen formatlar V-Ray’in .vrmesh ve Alembic .abc formatlarıdır.

.vrmesh Dosya Biçimi #


Mesh’ler özel bir .vrmesh dosya formatına dışa aktarılır. Bu dosya formatı, köşe noktaları ve yüz topolojisi, doku kanalları, yüz malzeme kimlikleri, yumuşatma grupları ve normaller dahil olmak üzere bir mesh’e ait tüm geometrik bilgileri içerir. Kısacası, mesh’i işlemek için gereken her şeye sahiptir. Ek olarak, mesh daha kolay erişim için ön işleme tabi tutulur ve parçalara ayrılır. Dosya ayrıca, görünüm pencerelerinde önizleme amacıyla kullanılan mesh’in basitleştirilmiş bir sürümünü de içerir. Ayrıca, dosyaya nokta bulutu verisi ekleme seçeneği de vardır; bu, farklı detay seviyelerine sahip 3B diskler şeklinde mesh’in basitleştirilmiş bir geometrik gösterimidir. Her seviye, eşit yarıçap uzunluklarına sahip disklerden oluşur; daha düşük detay seviyeleri için yarıçap daha büyük, daha detaylı seviyeler için ise daha küçüktür. Nesne işlendiğinde, nesne ile kamera arasındaki mesafeye bağlı olarak bir nokta bulutu geometri seviyesi seçilir; uzak nesneler için daha düşük çözünürlüklü nokta bulutları kullanılır. Böylece orijinal mesh, mesafenin izin verdiği uygun detay seviyesine sahip daha basit nokta bulutu geometrisiyle değiştirilir.

Mesh’in “işlemeye hazır” formatta olduğunu anlamak önemlidir. Mesh üzerinde başka bir değişiklik yapılması beklenmemektedir. Mesh’e değiştirici uygulayamaz veya proxy nesnesinin konumunu/yönünü canlandırmak dışında herhangi bir şekilde animasyon uygulayamazsınız. Mesh’te değişiklik yapmanız gerekiyorsa, değişiklikleri 3ds Max’te yapabilir, mesh’i Düzenlenebilir Mesh olarak geri içe aktarabilir (aşağıdaki İçe Aktarma bölümüne bakın) ve tekrar .vrmesh dosyasına dışa aktarabilirsiniz.

Damıtıcı Desteği #


V-Ray Proxy, Alembic dosyalarını (.abc) yükleyebilir ve işleyebilir. Desteklenen geometri türleri, çokgen ağlar (alt bölme yüzeyleri olmadan), spline eğrileri ve parçacıklardır.

Kod Örneği

# Create a new GeomMeshFile plugin instance. It loads geometry from a file (a so-called geometry proxy).
# The geometry is only loaded on-demand as a ray hits it so in some cases
# such as distributed bucket rendering it may prevent unnecessary calculations and memory usage.
# The currently supported formats are V-Ray's .vrmesh and Alembic .abc.
# Other formats could be converted to .vrmesh using the ply2vrmesh tool.
geometry = renderer.classes.GeomMeshFile()
geometry.file = os.path.join(SCENE_PATH, 'assets', 'Tree.vrmesh')
 
# Create a new Node plugin instance referring to the material and proxy geometry.
node = renderer.classes.Node()
node.material = material
node.geometry = geometry
// Create a new GeomMeshFile plugin instance. It loads geometry from a file (a so-called geometry proxy).
// The geometry is only loaded on-demand as a ray hits it so in some cases
// such as distributed bucket rendering it may prevent unnecessary calculations and memory usage.
// The currently supported formats are V-Ray's .vrmesh and Alembic .abc.
// Other formats could be converted to .vrmesh using the ply2vrmesh tool.
GeomMeshFile geometry = renderer.newPlugin<GeomMeshFile>();
geometry.set_file("assets" PATH_DELIMITER "Tree.vrmesh");
 
// Create a new Node plugin instance referring to the material and proxy geometry.
Node node = renderer.newPlugin<Node>();
node.set_material(material);
node.set_geometry(geometry);
// Create a new GeomMeshFile plugin instance. It loads geometry from a file (a so-called geometry proxy).
// The geometry is only loaded on-demand as a ray hits it so in some cases
// such as distributed bucket rendering it may prevent unnecessary calculations and memory usage.
// The currently supported formats are V-Ray's .vrmesh and Alembic .abc.
// Other formats could be converted to .vrmesh using the ply2vrmesh tool.
GeomMeshFile geometry = renderer.NewPlugin<GeomMeshFile>();
geometry.File = Path.Combine("assets", "Tree.vrmesh");
 
// Create a new Node plugin instance referring to the material and proxy geometry.
Node node = renderer.NewPlugin<Node>();
node.Material = material;
node.Geometry = geometry;
// Create a new GeomMeshFile plugin instance. It loads geometry from a file (a so-called geometry proxy).
// The geometry is only loaded on-demand as a ray hits it so in some cases
// such as distributed bucket rendering it may prevent unnecessary calculations and memory usage.
// The currently supported formats are V-Ray's .vrmesh and Alembic .abc.
// Other formats could be converted to .vrmesh using the ply2vrmesh tool.
var geometry = renderer.classes.GeomMeshFile();
geometry.file = path.join(SCENE_PATH, 'assets', 'Tree.vrmesh');
 
// Create a new Node plugin instance referring to the material and proxy geometry.
var node = renderer.classes.Node();
node.material = material;
node.geometry = geometry;

Örnekleyici #


Örnekleme işlemi, Instancer eklentisi tarafından kontrol edilebilir   . Bu eklenti, örneklenmiş geometrilerin parçacıklar tarafından dönüştürülmesine olanak tanır. Aşağıdaki parametrelere sahiptir:

  • Örnekler  – N+1 elemanlı bir liste; burada N örnek sayısıdır; ilk eleman bir zaman değeridir, geri kalanlar ise şu elemanlara sahip listelerdir: parçacık kimliği, dönüşüm, hız dönüşümü, örnekzamanı var mı, örnekzamanı, ek_parametre_bayrakları, ek_parametre_1, …, ek_parametre_N, görünürlük, düğüm, düğüm, düğüm, …

  • nsamples  – Dönüştürülmüş örnek sayısı

  • visible  – Yanlışsa, hiçbir geometri oluşturulmayacak ve işlenmeyecektir.

  • shading_needs_ids  – Örneklenmiş geometriye gönderilen parçacık gölgelendirme verilerinin parçacık kimliğini içermesi gerekiyorsa true olarak ayarlayın.

  • use_additional_params  – Bu ‘true’ olarak ayarlanırsa, ‘instances’ parametresindeki listeler, ‘time instancing’ parametrelerinden sonra ek parametrelere sahip olur; bu parametreler, hangi parametrelerin takip ettiğini ve ardından gelen parametreleri gösteren bayraklar içeren bir tamsayıdır. Türleri, tamsayıdaki bayraklara bağlıdır ve kesin olarak tanımlanmış bir sıradadır. Yeni bayraklar eklenebilir ve zincirin sonuna bunlar için ek parametreler eklenebilir. Bayraklar, HierarchicalParameterizedNodeParameters’da bir enum içinde tanımlanır.

  • use_visibility  – Parçacık görünürlüğünü kullan. ‘true’ olarak ayarlanırsa, ‘instances’ parametresindeki listelerde ‘additional parameters’ parametresinden sonra parçacık görünürlüğü parametresi bulunur.

  • use_time_instancing  – Bu ayar ‘true’ olarak belirlenirse, ‘instances’ parametresi hasInstanceTime (bool) ve instanceTime (double) öğelerini içerecektir. Aksi takdirde, bunlar mevcut olmamalıdır.

  • user_color_pp_1/2/3/4/5  – Maya’nın userVector1/2/3/4/5PP’sine karşılık gelir.

  • user_float_pp_1/2/3/4/5  – Maya’nın userScalar1/2/3/4/5PP’sine karşılık gelir.

  • acceleration_pp  – Parçacık başına ivme.

  • Renkler  – Parçacık başına yayılan renk.

  • emission_pp  – Parçacık başına emisyon rengi.

  • age_pp  – Parçacık başına yaş.

  • lifespan_pp  – Parçacık başına ömür süresi.

  • opacity_pp  – Parçacık başına opaklık.

Örnekler #


Aşağıdaki görüntü bu sahne kullanılarak oluşturulmuştur  .

Aşağıdaki görüntü bu sahne kullanılarak oluşturulmuştur  

Sahne açıklamalarında, vekilin nasıl dahil edildiğine dair yorumlara bakın.

Notlar #


  • App SDK, .vrmesh dosyalarını okuma ve yazma yöntemleri sağlar; App SDK kurulum paketinde examples/{language}/geometry klasöründe çeşitli örnekler mevcuttur .

  • Proxy nesnesi tarafından oluşturulan geometri değiştirilemez. V-Ray Proxy düğümüne uygulanan tüm değiştiriciler göz ardı edilecektir.

  • Dosyadaki geometri okunabilir ve örneğin GeomStaticMesh’e uygulanabilir – examples/{language}/geometry/04-file-to-static-mesh

  • Aynı .vrmesh dosyasına bağlı birden fazla proxy oluşturmanız gerekiyorsa, bunları örnek olarak oluşturmak daha iyidir. Bu, .vrmesh dosyası yalnızca bir kez yükleneceği için bellekten tasarruf etmenizi sağlayacaktır.

  • Malzemeler .vrmesh dosyasına kaydedilmez. Bunun yerine, geometri VRayProxy düğümüne uygulanan malzeme ile birlikte işlenir. Bunun nedeni, üçüncü taraf malzemelerin ve prosedürel dokuların genel bir şekilde tanımlanmasının zor olmasıdır. Ayrıca, malzemeyi ağdan bağımsız olarak düzenlemek isteyebilirsiniz.

  • Oluşturulan .vrmesh dosyaları, V-Ray’in bağımsız sürümü, V-Ray for Maya veya V-Ray for 3ds Max ile işlenebilir.

  • Standart gölge haritaları, vekil nesneler hakkında bilgi içermez. Vekil nesnelerin gölge oluşturmasını istiyorsanız, Işın İzlemeli Gölgeler veya Gölge Haritaları gölge türlerini kullanmalısınız.

  • .ply2vrmesh dönüştürme aracı yardımıyla .ply ve .obj dosyalarını .vrmesh dosyalarına dönüştürebilirsiniz.

Tarafından desteklenmektedir BetterDocs

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir