使用thingiview.js、Three.js 和trackballControls,我建立了一个系统,我可以在其中上传一个STL 文件,然后在画布上渲染它。trackballControls 通过一些调整非常棒,但我遇到了一个问题:
我想放大鼠标光标的点而不是网格/平面的中心。
我已经完成了一个简单的 captureEvent 来获取鼠标的屏幕坐标并对其进行跟踪,但是我在确定在何处使用控制方案来执行此操作时遇到了问题。
我检查了 _zoomStart / _zoomEnd 的东西(这让我有点困惑,因为它离开了“y”,我认为它会是“z”)。但是当尝试添加 _zoomStart.x 时,它基本上会忽略它。
现在我可能不是大师,但我通常很舒服。
我还想确保当我平移时,缩放和旋转仍然基于对象的中心,而不是网格/平面的中心。
已经通过帖子和示例搜索了几天,但没有真正找到任何答案。
我确定我没有在正确的地方/朝着正确的方向寻找。在正确的方向上进行有用的轻推(或者更好的是快速踢)将真正受到赞赏。
编辑
this.zoomCamera = function () {
var factor = 1.0 + ( _zoomEnd.y - _zoomStart.y ) * _this.zoomSpeed;
if ( factor !== 1.0 && factor > 0.0 ) {
_eye.multiplyScalar( factor );
if ( _this.staticMoving ) {
_zoomStart.copy( _zoomEnd );
} else {
_zoomStart.y += ( _zoomEnd.y - _zoomStart.y ) * this.dynamicDampingFactor;
}
}
};
我假设以上是我要进行缩放更改的地方。我不明白的是它被设置为_zoomStart.y。但是照原样,我将如何实现x?
我的意思是,如果 _zoomStart 和 _zoomEnd 是 Vector2,那么它在上面的代码中哪里定义了 x?
困惑