2016-11-21 88 views
1

我想了解COLLADA文件的結構。具體而言,我正在使用庫pycollada(https://github.com/pycollada/pycollada)。我有2個問題。的Collada(* .dae)文件的結構和Pycollada

問題1

有一個看看教程從頭開始創建(http://pycollada.github.io/creating.html)的文件,我不明白的是爲Collada對象的結構。特別地,具有一看下面的代碼行看來,網用於創建幾何形狀和幾何形狀包含在網:後

>>> triset = geom.createTriangleSet(indices, input_list, "materialref") 
>>> geom.primitives.append(triset) 
>>> mesh.geometries.append(geom) 

>>> mesh = Collada() 
>>> geom = geometry.Geometry(mesh, "geometry0", "mycube", [vert_src, normal_src]) 

和幾行有人有一個明確的Collada文件結構?可能是一個視覺表示,以瞭解什麼地方。

問題2

如果我想有2個不同的對象(這裏我指的COLLADA檔案內2個不同的3D對象,例如一個立方體,球體),我應該在哪裏添加第二個?是網格中的第二個幾何對象,還是幾何體中的第二個TriangleSet,或者是以不同的方式定義的?

回答

2

在COLLADA的<geometry>元素是描述幾何形狀的信息的容器。創建數字資產時可能會有3D對象的表示形式。而多邊形網格只是這些表示可能性中的一種。另一種可能性可能是例如<brep>

基於多邊形的幾何形狀的描述被包括作爲下<geometry><mesh>元素的子元素。這些元素是<lines>,<linestrips>,<polygons>,<polylists>, <triangles>,<trifans><tristrips>

所以結構是這樣的:我有一個<geometry> - >哪一種? - >即<mesh> - >包含哪個基於多邊形的幾何? - >即<triangles> 讓我告訴你在COLLADA的幾何體的內部結構:

Structure of triangle-based mesh geometry in COLLADA

您可以在以下<p>元素定義與<float_array>並在<source>元件3D空間中的點的位置的索引<triangles><p>元素不僅定義了頂點,而且定義了這個例子中的法線。

關於第二個問題,你可以將其定義爲幾何體庫中的第二<geometry>,或元素下的網格的一部分。但是,如果以後必須將它們分開使用,例如要創建多維數據集的兩個實例,一個是綠色另一個是藍色,另一個是球體的一個實例,則不應在同一個網格下進行。您應該將它們定義爲兩個分離的幾何對象。這取決於你的情況。