4

光線投影がどのように機能するかを理解したいです。ほとんどどこにいても、次のようなコードを取得します。

new THREE.Vector3(mouseX, mouseY, 0.5); 

z 位置の 0.5 について混乱しています。私の理解では、z=1 plane(ではないz=0.5 plane)に投影しています。では、代わりにこのように使用するべきではありませんか?

new THREE.Vector3(mouseX, mouseY, 1.0);
4

1 に答える 1

3

よく使われるパターンは次のようなものです。

var vector = new THREE.Vector3(
    ( event.clientX / window.innerWidth ) * 2 - 1,
    - ( event.clientY / window.innerHeight ) * 2 + 1,
    0.5,
);

これは、Normalized Device Coordinate (NDC) 空間内のポイントです。

関数

projector.unprojectVector( vector, camera );

は、NDC 空間からワールド空間へのマッピングです。

の値0.5vector.z、-1 から 1 の間の任意の値に設定できます。

なんで?これらのポイントはすべて NDC 空間の z 軸に平行な線上にあり、ワールド空間のカメラから発せられる同じ光線にすべてマッピングされるためです。

設定z = -1はニア プレーン上のポイントにマッピングされます。z = 1ファープレーン。

簡単に言えzば、-1 から 1 の間であれば、 の値が何であるかは問題ではありません。

于 2013-01-08T17:51:51.563 に答える