Я пытаюсь отобразить несколько полей (с разными размерами и позициями) через gltf.
Я использую https://github.com/KhronosGroup/glTF-Sample-Models/blob/master/2.0/Box/glTF/Box.gltf в качестве шаблона и просто замените узлы новыми узлами.
Когда я создаю свои узлы как
gltf["scenes"][0]["nodes"]=[]
gltf["nodes"]=[]
nodeId=0
for x, y, z, w, h, d in boxes:
gltf["nodes"]+=[{ "mesh": 0, "translation": [x, y, z], "scale":[w, h, d]}]
gltf["scenes"][0]["nodes"]+=[nodeId]
nodeId+=1
коробки (которые находятся рядом) сталкиваются (не только по краям). Значит, 3d не так.
Когда я создаю свои ящики без масштабирования (из множества маленьких ящиков), это работает:
gltf["scenes"][0]["nodes"]=[]
gltf["nodes"]=[]
nodeId=0
for x, y, z, w, h, d in boxes:
for x1 in range(x, w+w):
for y1 in range(y, y+w):
for z1 in range(z, z+d):
gltf["nodes"]+=[{"mesh": 0, "translation": [x1, y1, z1]}]
gltf["scences"][0]["nodes"]+=[nodeId]
nodeId+=1
Но это, конечно, гораздо более крупный и сложный файл gltf.
Координаты в прямоугольниках - это нижний левый передний угол (минимум значений x, y и z).