OrbitControls:更新“助手”的位置和世界/视图比例

时间:2014-01-15 23:18:25

标签: javascript 3d three.js

我正在尝试管理可视化控件目标的3D对象,以便让旋转和缩放更加直观易懂......

带有AxisHelper的

I've made a sample here,它应该指示目标并保持相同的大小。在OrbitControls.js中,我添加的每一行都有注释。

正如您所看到的那样,如果平移和缩放(右键单击并滚动)它也会管理游标,但“帮助器”有两个问题:

  • 帮助器的位置和比例在渲染后设置,这就是为什么它看起来有点弹性......如果我将位置/比例更新放到scope.update()函数中,那就是相同的的事情。

  • 下面的函数将辅助对象缩放到一个恒定大小,它从单位向量计算定义点(控件的目标)的世界/视图比例。但似乎这不是一个好的解决方案,因为当你滚动到最大缩放时,助手正在增长。

    var point = new THREE.Vector3( 1, 0, 0 );
    point = point.applyMatrix4( scope.object.matrixWorld );
    var scale = point.distanceTo( scope.target );
    helper.scale.set(scale, scale, scale);
    

所以如果你有想法实现这一点,欢迎你...

1 个答案:

答案 0 :(得分:0)

我目前正在开发类似于threejs的东西,我认为:

  1. 我看不到演示,我的代理不允许。
  2. 我认为这是正确的...如果对象助手是一个网格或一个精灵添加到场景中,当轨道控件变焦时,相机变得更接近场景中的对象,对象尺寸保持不变。