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 を定義するのでしょうか?
困惑した