我想在(在渲染器上)绘制一条固定的垂直线(或条形图),它提供有关尺寸/距离或缩放系数的信息,例如Google地图中的信息(请参阅image)(假设使用)轨道控制或轨迹球控制)。可能吗?
答案 0 :(得分:0)
为什么是的,先生,好!如果你有THREE.OrbitControls
个对象和THREE.Camera
:
var controls = new THREE.OrbitControls(...);
var camera = ....;
//get distance from camera to 'target' of OrbitControls
var distance = camera.position.distanceTo(controls.target);
幸运的是,THREE.OrbitControls
还有minDistance
和maxDistance
属性,用于控制相机离目标点的近距离和距离。因此,要在minDistance
和maxDistance
之间获取相机的相对位置,我们可以使用以下代码:
var normalizedDistance = (distance- controls.minDistnace) / (controls.maxDistance - controls.minDistance);
现在我们新的normalizedDistance
变量将存储一个介于0和1之间的值,相对于我们离目标的距离,如果我们位于minDistance
- 我们无法靠近normalizedDistance === 0
{1}},如果我们在maxDistance
并且无法继续,normalizedDistance === 1
。
另外,请注意,默认情况下THREE.OrbitControls.maxDistance
设置为无穷大,因此要获得有意义的normalizedDistance
,您必须将maxDistance
设置为某个合理的非无限值,例如说100或1000。