从我在规范中读到的每个场景元素形式XML3D都有与之关联的边界框。
我想问一下边界框的大小是如何计算的?
特别是<group>
和<xml3d>
元素 - 它是否考虑到儿童边界框的大小?
我假设<mesh>
的边界框大小是根据网格顶点位置计算的。
我需要这些知识来调整相机的翻译速度。
答案 0 :(得分:1)
正如您猜测的<mesh>
元素,它是根据顶点位置计算的。对于<group>
元素,它基本上计算如下:
var bbox = new XML3DBox();
for (var child in children) {
bbox.extend(child.getWorldBoundingBox());
}
因此它会在它到达<mesh>
元素之前进行递归,并且层次结构中每个组的结果边界框是包含所有子元素的边界框的最小体积,无论它们是<groups>
还是<meshes>
。在其子树中的任何位置都没有可渲染对象(<group>
或<mesh>
)的<model>
将返回一个空框。
在<xml3d>
元素上,它将返回一个包围整个场景的框。
要记住的一件事是标记为不可见的对象(带有visible =“false”属性)将不会包含在边界框计算中。