我试图了解collada文件的结构。具体来说,我正在使用库pycollada(https://github.com/pycollada/pycollada)。我有两个问题。
问题1 :
看一下从头开始创建文件的教程(http://pycollada.github.io/creating.html),我不理解的是Collada对象的结构。特别是,查看以下代码行似乎是网格用于创建几何体,几何体包含在网格中:
>>> mesh = Collada()
>>> geom = geometry.Geometry(mesh, "geometry0", "mycube", [vert_src, normal_src])
以后几行
>>> triset = geom.createTriangleSet(indices, input_list, "materialref")
>>> geom.primitives.append(triset)
>>> mesh.geometries.append(geom)
有人有一个清晰的Collada文件结构吗?可能是一个可视化的表示,以了解在哪里。
问题2 :
如果我想拥有2个不同的对象(这里我指的是Collada文件中的2个不同的3D对象,例如立方体和球体)我应该在哪里添加第二个?是网格内部的第二个几何对象,还是在几何体内部的第二个TriangleSet,或者以不同的方式定义?
答案 0 :(得分:2)
COLLADA中的<geometry>
元素是描述几何形状的信息的容器。在创建数字资产时,可能存在3D对象的表示。多边形网格只是这些表示可能性中的一种。另一种可能性是<brep>
。
基于多边形的几何描述作为<mesh>
下<geometry>
元素的子元素包含在内。这些元素包括<lines>
,<linestrips>
,<polygons>
,<polylists>
,<triangles>
,<trifans>
和<tristrips>
。
所以结构如下:我有<geometry>
- &gt;哪种? - &GT;即<mesh>
- &gt;包含哪些基于多边形的几何? - &GT;即<triangles>
让我向您展示COLLADA中几何体的内部结构:
您可以使用<source>
在<float_array>
元素中的三维空间中定义点的位置,并在<p>
下的<triangles>
元素下定义索引。 <p>
元素不仅定义顶点,还定义此示例中的法线。
对于第二个问题,您可以将其定义为几何库中的第二个<geometry>
,或元素下的网格的一部分。但是如果你以后必须将它们彼此分开使用,例如你想要创建2个立方体实例,一个是绿色,另一个是蓝色,1个球体实例,你不应该在同一个网格下进行。您应该将它们定义为两个独立的几何对象。这取决于你的情况。