错误的体积边界框

时间:2013-09-02 15:23:36

标签: webgl xtk

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

https://docs.google.com/file/d/0B2oRl7iWfVvTaXAyckNTOC04RlE/edit?usp=sharing

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

https://docs.google.com/file/d/0B2oRl7iWfVvTR3BJdk13Zm9BdTQ/edit?usp=sharing

resetBoundingBox()之后立即调用

render()函数,但它没有任何区别。即使我尝试先将对象添加到渲染器中,然后再添加卷,但没有结果。

球体也可以被拖动,并且这个特征也受到球茎系统变化的影响,因为在球体运动开始的那一刻,这被转换为鼠标位置。

为什么要翻译原点?通过使resetBoundingBox()无效,音量似乎会影响场景。

2 个答案:

答案 0 :(得分:0)

你必须在onShowtime回调中调用resetBoundingBox(),就像这个

一样
r.onShowtime = function() {

  r.resetBoundingBox();

}

r.add(volume);

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

答案 1 :(得分:0)

我认为这是因为你假设音量集中在(0,0,0),这是一个错误的假设。

1-从卷边界框计算REAL卷中心

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-将此中心应用为场景对象的翻译

希望这有帮助