繁体   English   中英

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

[英]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中几何的内部结构:

COLLADA中基于三角形的网格几何结构

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM