2015-05-28 146 views
1

从我在规范中读取的每个场景元素表单XML3D都有与之相关的边界框。 我想问一下包围盒的大小是如何计算的? 特别是对于<group><xml3d>元素 - 是否考虑到儿童边框的尺寸? 我假设<mesh>的边界框尺寸是从网格顶点位置计算出来的。XML3D边界框

我需要这些知识来调整相机的翻译速度。

+0

好的我已经检查过,似乎xml3d包围盒只是设置为整个空间。哪一个没有意义的imho。 – Pietrko

回答

1

正如你猜对<mesh>元素,它是从顶点位置计算出来的。对于<group>元素它的基本计算公式如下:

var bbox = new XML3DBox(); 
for (var child in children) { 
    bbox.extend(child.getWorldBoundingBox()); 
} 

所以递归直到它击中<mesh>元素,并将所得边框每个组的层次结构是包围所有的子元素的包围盒体积最小,无论他们是<groups>还是<meshes>。 A <group>(其子树中的任何地方都没有可呈现对象(<mesh><model>))将返回一个空框。

<xml3d>元素上,它将返回一个包含整个场景的框。

要记住的一件事是标记为不可见(带有visible =“false”属性)的对象将不会包含在边界框计算中。