根据我在规范中阅读的内容,XML3D 形式的每个场景元素都有与之关联的边界框。我想问一下bounding box的大小是怎么计算的?特别是对于<group>
and<xml3d>
元素 - 它是否考虑到儿童边界框的大小?我假设边界框大小<mesh>
是根据网格顶点位置计算的。
我需要这些知识来调整相机的翻译速度。
根据我在规范中阅读的内容,XML3D 形式的每个场景元素都有与之关联的边界框。我想问一下bounding box的大小是怎么计算的?特别是对于<group>
and<xml3d>
元素 - 它是否考虑到儿童边界框的大小?我假设边界框大小<mesh>
是根据网格顶点位置计算的。
我需要这些知识来调整相机的翻译速度。
<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" 属性)不会包含在边界框计算中。