Webgl 错误的体积边界框

Webgl 错误的体积边界框,webgl,xtk,Webgl,Xtk,我正在使用Xtk制作一个小部件来测量体积中的距离。场景中有四个对象:一个体积、两个球体和一个立方体。立方体放置在原点,球体沿X轴和Y轴平移30个单位,每个单位的方向相反,如下所示: 立方体和球体放置在正确的位置,但当体积包含在场景中、更改坐标系并平移原点时,会出现问题: resetBoundingBox()函数在render()之后调用,但没有任何区别。甚至我也尝试过先添加对象,然后将体积添加到渲染器,但没有结果 球体也可以拖动,并且此功能还受相应系统的更改影响,因为在球体开始移动的那一刻,

我正在使用Xtk制作一个小部件来测量体积中的距离。场景中有四个对象:一个体积、两个球体和一个立方体。立方体放置在原点,球体沿X轴和Y轴平移30个单位,每个单位的方向相反,如下所示:

立方体和球体放置在正确的位置,但当体积包含在场景中、更改坐标系并平移原点时,会出现问题:

resetBoundingBox()
函数在
render()
之后调用,但没有任何区别。甚至我也尝试过先添加对象,然后将体积添加到渲染器,但没有结果

球体也可以拖动,并且此功能还受相应系统的更改影响,因为在球体开始移动的那一刻,这将相对于鼠标位置进行转换


为什么要翻译原文?音量似乎通过将
resetBoundingBox()

置零来影响场景。您必须像这样在onShowtime回调中调用resetBoundingBox()

r.onShowtime = function() {

  r.resetBoundingBox();

}

r.add(volume);

这与场景居中有关。在新版本的XTK中,这应该是可选的。

我认为发生这种情况是因为您假设卷以(0,0,0)为中心,这是一个错误的假设

1-从体积边界框计算实际体积中心

var volume = new X.volume();
...
var center = [volume.bbox[0] + (volume.bbox[1]-volume.bbox[0])/2,
              volume.bbox[2] + (volume.bbox[3]-volume.bbox[2])/2,
              volume.bbox[4] + (volume.bbox[5]-volume.bbox[4])/2
              ]
...
2-将此中心作为平移应用于场景的对象


希望这有帮助

谢谢,它成功了!但现在,音量与翻译一起显示。事实上,我在github页面上用Xtk演示做了一些测试,这似乎取决于数据。在演示10中,我在原点创建了一个球体,它显示得很好(球体和体积都在原点居中),但在演示11中,球体显示在原点中,但体积现在正在转换(应用您的解决方案)。转换操作对体积没有任何影响。在减法中缺少2之间的除法。它是这样的:
var-center=[volume.bbox[0]+(volume.bbox[1]-volume.bbox[0])/2,volume.bbox[2]+(volume.bbox[3]-volume.bbox[2])/2,volume.bbox[4]+(volume.bbox[5]-volume.bbox[4])/2]
我不知道
X.volume
定义了这样的getter(bbox。它不会出现在API引用中。谢谢你提供的信息。谢谢你帮我纠正了错误