2014-11-03 69 views
1

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

+0

请访问http:/ /stackoverflow.com/questions/13350875/three-js-width-of-view/13351534?s=8|2.0266#13351534 – WestLangley 2014-11-03 23:43:57

回答

0

为什么,好,先生!

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属性,其控制如何密切和有多远相机可以从目标移动:你可以很容易,如果你有THREE.OrbitControls对象和THREE.Camera找出距离点。因此,要获得minDistancemaxDistance我们可以使用下面的代码之间我们的相机的相对位置:

var normalizedDistance = (distance- controls.minDistnace)/(controls.maxDistance - controls.minDistance); 

现在我们的新​​变量将在0和1之间的存储值相对于我们离目标有多远,如果我们在minDistance - 我们不能接近,并且normalizedDistance === 0,如果我们在maxDistance,并且不能进一步,出normalizedDistance === 1

此外,设置为无穷大要小心,在默认情况下THREE.OrbitControls.maxDistance,所以要得到一个有意义的​​你就必须设置maxDistance一些合理的非无限的价值,好比说100或1000