我该如何绘制刻度计?

时间:2014-11-03 17:24:36

标签: three.js

我想在(在渲染器上)绘制一条固定的垂直线(或条形图),它提供有关尺寸/距离或缩放系数的信息,例如Google地图中的信息(请参阅image)(假设使用)轨道控制或轨迹球控制)。可能吗?

1 个答案:

答案 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还有minDistancemaxDistance属性,用于控制相机离目标点的近距离和距离。因此,要在minDistancemaxDistance之间获取相机的相对位置,我们可以使用以下代码:

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。