2

対象の顔に相対的な光線衝突座標を見つけようとしています...

コード:

var fMouseX = (iX / oCanvas.width) * 2 - 1;
var fMouseY = -(iY / oCanvas.height) * 2 + 1;

//I Use OrthographicCamera
var vecOrigin = new THREE.Vector3( fMouseX, fMouseY, - 1 );
var vecTarget = new THREE.Vector3( fMouseX, fMouseY, 1 );
oProjector.unprojectVector( vecOrigin, this.__oCamera );
oProjector.unprojectVector( vecTarget, this.__oCamera );
vecTarget.subSelf( vecOrigin ).normalize();
var oRay = new THREE.Ray(vecOrigin, vecTarget);

intersects = oRay.intersectObjects([ oCylinderMesh ]);

intersects[ 0 ].point を使用すると、マウスの位置を「画面座標」で取得できますが、円柱座標で取得するにはどうすればよいですか? PS: メッシュは回転しませんが、カメラは位置を変更できます...

本当に素晴らしいフレームワーク ;)

4

1 に答える 1

0

これが私の解決策です。Cylinderの絶対座標(画面に対する位置)を取得してから、Cylinderの絶対座標をintersects [0] .pointサブに入れます。次のコードが役立つ場合があります。

var relativeTo = function(element, ancestor) {
    var offset = element.position.clone();

    if (element.parent == ancestor) {
        return offset;
    }

    return offset.addSelf(relativeTo(element.parent, ancestor));
}
于 2013-01-14T07:23:51.493 に答える