[错误]: glTF 三角形条和扇形失去它们的原始对象来自的节点,导致无关节点合并

作者: kevin9327创建于 2026年9月10日更新于 2026年9月10日

import tempfile from pathlib import Path import numpy as np import pygltflib import genesis as gs from genesis.utils.gltf import parse_mesh_glb TRI_A = np.array([[0.0, 0.0, 0.0], [1.0, 0.0, 0.0], [0.0, 1.0, 0.0]], dtype=np.float32) TRI_B = np.array([[4.0, 0.0, 0.0], [5.0, 0.0, 0.0], [4.0, 1.0, 0.0]], dtype=np.float32) INDICES = np.array([0, 1, 2], dtype=np.uint32) TRIANGLES, TRIANGLE_STRIP, TRIANGLE_FAN = 4, 5, 6 def write_glb(path, modes): blob = b"" buffer_views = [] for data in (TRI_A.tobytes(), TRI_B.tobytes(), INDICES.tobytes()): blob += b"\x00" * ((4 - len(blob) % 4) % 4) buffer_views.append(pygltflib.BufferView(buffer=0, byteOffset=len(blob), byteLength=len(data))) blob += data gltf = pygltflib.GLTF2( scene=0, scenes=[pygltflib.Scene(nodes=[0, 1])], nodes=[pygltflib.Node(mesh=0), pygltflib.Node(mesh=1)], meshes=[ pygltflib.Mesh( name=f"mesh_{i}", primitives=[pygltflib.Primitive(attributes=pygltflib.Attributes(POSITION=i), indices=2, mode=mode)], ) for i, mode in enumerate(modes) ], accessors=[ pygltflib.Accessor( bufferView=i, componentType=pygltflib.FLOAT, count=3, type="VEC3", min=tri.min(axis=0).tolist(), …

内容来源: Genesis-Embodied-AI/genesis-world