私の問題:
2つの3Dポイントを取得して、それらを1つの軸にロックするにはどうすればよいですか?たとえば、両方のz軸が0になるようにします。
私がやろうとしていること:
シーンに3D座標のセットがあり、ピラミッドが付いたボックスを表しています。別の3D座標で表されるカメラもあります。シーン座標からカメラ座標を減算して正規化し、カメラを指すベクトルを返します。次に、カメラポイントの後ろにある平面と光線平面の交差を行います。
O + tD
ここで、O(原点)はカメラの位置、Dはシーンポイントからカメラへの方向、tは光線がカメラポイントから平面と交差するのにかかる時間です。
それが意味をなさない場合は、ここに大まかな図面があります:
私は広範囲にわたって検索しましたが、私が知る限り、これは「ピンホールカメラ」を使用して呼ばれています。
問題は私のカメラの回転ではありません、私はそれを排除しました。問題は、交点を重心(uv)座標に変換することです。
x軸の平行移動は次のようになります。
uaxis.x = -a_PlaneNormal.y;
uaxis.y = a_PlaneNormal.x;
uaxis.z = a_PlaneNormal.z;
point vaxis = uaxis.CopyCrossProduct(a_PlaneNormal);
point2d.x = intersection.DotProduct(uaxis);
point2d.y = intersection.DotProduct(vaxis);
return point2d;
z軸の平行移動は次のようになります。
uaxis.x = -a_PlaneNormal.z;
uaxis.y = a_PlaneNormal.y;
uaxis.z = a_PlaneNormal.x;
point vaxis = uaxis.CopyCrossProduct(a_PlaneNormal);
point2d.x = intersection.DotProduct(uaxis);
point2d.y = intersection.DotProduct(vaxis);
return point2d;
私の質問は、光線平面の交点をx軸とz軸の両方の重心座標に変えるにはどうすればよいですか?