Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “转换衣领”;“多边形”;结构改为“a”;“多段列表”;结构_Python_Collada - Fatal编程技术网

Python “转换衣领”;“多边形”;结构改为“a”;“多段列表”;结构

Python “转换衣领”;“多边形”;结构改为“a”;“多段列表”;结构,python,collada,Python,Collada,我正在尝试将COLLADA文件导入我的应用程序以显示三维模型。我使用PyCollada,因为它使解析文件变得非常简单,但不幸的是,它们不支持带孔的多边形。如果多边形(至少在从Google Sketchup导出时)内有另一个较小的多边形,则该多边形被视为有孔 我的程序不需要知道孔,它只需要知道每个多边形的边界顶点,然后处理孔本身。因此,我尝试将COLLADA“多边形”结构(用于带孔多边形的结构)转换为“多段列表”结构(无孔多边形) 下面是一个示例,显示了在我触摸文件之前文件的哪个部分是什么样子:

我正在尝试将COLLADA文件导入我的应用程序以显示三维模型。我使用PyCollada,因为它使解析文件变得非常简单,但不幸的是,它们不支持带孔的多边形。如果多边形(至少在从Google Sketchup导出时)内有另一个较小的多边形,则该多边形被视为有孔

我的程序不需要知道孔,它只需要知道每个多边形的边界顶点,然后处理孔本身。因此,我尝试将COLLADA“多边形”结构(用于带孔多边形的结构)转换为“多段列表”结构(无孔多边形)

下面是一个示例,显示了在我触摸文件之前文件的哪个部分是什么样子:

<polylist count="4" material="Material2">
        <input offset="0" semantic="VERTEX" source="#ID8" />
        <vcount>3 3 3 3</vcount>
        <p>16 17 18 22 23 24 28 29 30 34 35 36</p>
</polylist>
<polygons count="1" material="Material2">
        <input offset="0" semantic="VERTEX" source="#ID8" />
        <ph>
                <p>0 1 2 3</p>
                <h>4 5 6 7</h>
                <h>8 9 10 11</h>
        </ph>
</polygons>

3 3 3 3
16 17 18 22 23 24 28 29 30 34 35 36

01 2 3

4 5 6 7 8 9 10 11

这里我们有一个包含4个多边形的“多段线”和一个包含1个多边形的“多边形”,其中有2个子曲面或“孔”(由
标记表示)。如果说我们有
晚了一点,但是Assimp或Three.js loader都还没有处理漏洞。规范1.5对孔的描述也相当隐晦。甚至都不是一个处理它们的好例子。@vlzvl我相信我的更改最终都能正常工作。我已经有一段时间没有处理这个问题了,但是如果我没有记错的话,上面描述的方法是有效的,但是我的代码最初跳过了一些多段线。事后看来,使用COLLADA格式手动将孔转换为自己的曲面并不难。我只是需要一些时间来找出我自己代码中的错误。我曾经发现一个模型,它是
描述了一堵平墙,
描述了模型的实体部分(用
等进行解析)。解决方案是从平壁上减去这些实心部分,以填充孔洞,从而得到缺失的部分(说起来容易做起来难)。你的解决方案能处理这些问题吗?因为上面发布的片段只是粘贴了
,有效地覆盖了大量已经解析的原语。例如,检查这个。
<polylist count="5" material="Material2">
        <input offset="0" semantic="VERTEX" source="#ID8" />
        <vcount>3 3 3 3 4</vcount>
        <p>16 17 18 22 23 24 28 29 30 34 35 36 0 1 2 3</p>
</polylist>