Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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 PyAssimp忽略导出之前的所有修改_Python_Assimp - Fatal编程技术网

Python PyAssimp忽略导出之前的所有修改

Python PyAssimp忽略导出之前的所有修改,python,assimp,Python,Assimp,我用PyAssimp加载了一个3d文件,然后我更改了一些顶点的位置,当我导出它时,所有修改都被忽略了 这是我写的一个例子: >>> import pyassimp >>> scene = pyassimp.load('D:/test.3ds') >>> v = scene.meshes[2].vertices >>> v = [ [p[0], p[1], p[2]+200] for p in v ] >>>

我用PyAssimp加载了一个3d文件,然后我更改了一些顶点的位置,当我导出它时,所有修改都被忽略了 这是我写的一个例子:

>>> import pyassimp
>>> scene = pyassimp.load('D:/test.3ds')
>>> v = scene.meshes[2].vertices
>>> v = [ [p[0], p[1], p[2]+200] for p in v ]
>>> scene.meshes[2].vertices = v
>>> print scene.meshes[2].vertices
[[-13.360946655273438, -19.980607986450195, 200.0], [-13.360946655273438, 19.980606079101562, 200.0], ………
>>> pyassimp.export(scene,'D:/ExportedFile.gltf','gltf2')
但是当我加载文件时,没有任何更改


谢谢。

我也在寻找同样的东西,我认为@ArturSampaio的回应有效地回答了这个问题:
pyassimp
不是为修改数据而构建的,至少目前不是

我在这里发布了一个问题:

我将修补一些替代方案,如果出现问题,我将更新此选项:

  • -它使用Cython绑定
    libassimp
    ,因此NumPy casting可能引用原始数据。
    • 但是,看着它,似乎它也可能复制,也许:(
    • 更新:是的,很多属性都是
      只读的
      。不过可以理解
  • -不同的库,但似乎支持开箱即用的修改
更新:我为我的用例找到了一个替代工作流(用GLTF顶点+UV坐标替换OBJ网格,但保持其他东西的一致性),使用此hack与
obj2gltf


可能会回到这个原始版本(编辑网格),但可能不会很快完成。

您是否检查了文件是否确实被重新写入?尝试导出到不同的文件并比较两者(如果您在linux/mac上,您应该能够执行
diff-s fileA fileB
以查看文件是否相同)抱歉,我重新键入了开头的最后一行。您阅读此文件是为了验证您的更改是否已应用?D:/ExportedFile.gltfI读取文件“D:/test.3ds”,并将对象移到更高的位置(+200到z轴)然后我将其导出到“D:/Exportedfile.gltf”PyAssimp似乎保留了原始的ctypes数组。这些原始数组是它在导出时使用的数组。编辑场景时。网格[2]。顶点,您没有编辑导出时读取的scene.mmesh对象。