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

2024-10-16 22:32:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我想了解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])

后面几行

^{pr2}$

有人有一个清晰的Collada文件结构?可能是一种视觉表现来理解什么是在哪里。在

问题2

如果我想要两个不同的对象(这里我指的是Collada文件中的两个不同的3D对象,例如立方体和球体),我应该在哪里添加第二个对象?是网格内部的第二个几何体对象,还是几何体内部的第二个三角形集,或者是以不同的方式定义的?在


Tags: 文件对象httpsiosrcgithubcomhttp
1条回答
网友
1楼 · 发布于 2024-10-16 22:32:36

COLLADA中的<geometry>元素是描述几何图形的信息的容器。创建数字资源时,可能存在三维对象的表示形式。而多边形网格只是这些表示方法中的一种。另一种可能是<brep>。在

基于多边形的几何描述作为<mesh>元素的子元素包含在<geometry>下。这些元素是<lines><linestrips><polygons><polylists><triangles><trifans>和{}。在

所以结构看起来像:我有一个<geometry>->;哪种?->;即<mesh>->;包含哪些基于多边形的几何图形?->;即<triangles> 让我向您展示COLLADA中几何体的内部结构:

Structure of triangle-based mesh geometry in COLLADA

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

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

相关问题 更多 >