我正在使用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()
无效,音量似乎会影响场景。
答案 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-将此中心应用为场景对象的翻译
希望这有帮助