Collada(* .dae)文件结构和Pycollada

时间:2016-11-21 11:59:12

标签: python graphics rendering collada 3d-modelling

我试图了解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,或者以不同的方式定义?

1 个答案:

答案 0 :(得分:2)

COLLADA中的<geometry>元素是描述几何形状的信息的容器。在创建数字资产时,可能存在3D对象的表示。多边形网格只是这些表示可能性中的一种。另一种可能性是<brep>

基于多边形的几何描述作为<mesh><geometry>元素的子元素包含在内。这些元素包括<lines><linestrips><polygons><polylists><triangles><trifans><tristrips>

所以结构如下:我有<geometry> - &gt;哪种? - &GT;即<mesh> - &gt;包含哪些基于多边形的几何? - &GT;即<triangles> 让我向您展示COLLADA中几何体的内部结构:

Structure of triangle-based mesh geometry in COLLADA

您可以使用<source><float_array>元素中的三维空间中定义点的位置,并在<p>下的<triangles>元素下定义索引。 <p>元素不仅定义顶点,还定义此示例中的法线。

对于第二个问题,您可以将其定义为几何库中的第二个<geometry>,或元素下的网格的一部分。但是如果你以后必须将它们彼此分开使用,例如你想要创建2个立方体实例,一个是绿色,另一个是蓝色,1个球体实例,你不应该在同一个网格下进行。您应该将它们定义为两个独立的几何对象。这取决于你的情况。