[英]Collada (*.dae) file structure and Pycollada
我试图了解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,还是以不同的方式定义的?
COLLADA中的<geometry>
元素是描述几何形状的信息的容器。 创建数字资产时,可能会有3D对象的表示形式。 多边形网格只是这些表示可能性之一。 另一种可能是例如<brep>
。
基于多边形的几何描述包含在<geometry>
下的<geometry>
<mesh>
元素的子元素中。 这些元素是<lines>
, <linestrips>
<polygons>
, <polylists>
<triangles>
, <trifans>
和<tristrips>
这样的结构看起来像:我有一个<geometry>
->哪种? ->即<mesh>
->包含哪些基于多边形的几何? ->即<triangles>
让我向您展示COLLADA中几何的内部结构:
您可以使用<float_array>
在<source>
元素中定义点在3D空间中的位置,并在<triangles>
下的<p>
元素下定义索引。 在此示例中, <p>
元素不仅定义了顶点,还定义了法线。
对于第二个问题,可以将其定义为几何库中的第二个<geometry>
或元素下面的部分网格。 但是,如果以后必须将它们彼此分开使用,例如,要创建2个立方体实例,一个是绿色的实例,另一个是蓝色的实例,以及1个球体实例,则不应在同一网格下进行操作。 您应该将它们定义为两个分离的几何对象。 这取决于您的情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.