1

我正在使用 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()

4

2 回答 2

0

你必须像这样在 onShowtime 回调中调用 resetBoundingBox()

r.onShowtime = function() {

  r.resetBoundingBox();

}

r.add(volume);

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

于 2013-09-02T16:50:50.780 回答
0

我认为发生这种情况是因为您假设音量以 (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-将此中心用作场景对象的平移

希望这可以帮助

于 2013-09-03T15:36:30.173 回答