基本的に、XNA (C#/.NET) でレイとプレーンを使用して、モデル間の衝突を検出したいと考えています。しかし、それを行う前に、それらがどのように機能するかを必死に知る必要があります.
Ray/Plane の例をどこかに探しに行くと、チュートリアルを選択するしかありません - チュートリアルを選択するつもりはありません...
私がやろうとしているのは、平面を取り、それに 3 つの Vector3 を供給して、3D プリミティブ三角形を表し、それに Ray を発射することです。光線は、空間と方向の単なるポイントです。
私の問題は、Ray at the Plane を発射すると、理解できない結果が得られることです。例えば:
座標 {0,0,0}{1,0,0}{0,0,1} を持つプリミティブを表す Plane があるとします。
ここで、{0.5,1,0.5} (三角形の平面のほぼ中心より上) にレイを配置し、方向を指定します。{0,-1,0}
これにより、1 が得られます。これは、Plane が Ray の 1 単位下にあり、Ray が下を向いているためです。しかし、{2,0,0} にレイ ポイントを設定すると、{2,0,0} は三角形上にないポイントであるため、意味をなさない数値が得られます。
これは私が使用しているコードです。
Plane plane = new Plane(Vector3.Zero, Vector3.Right, Vector3.Backward);
Vector3 rayPos = new Vector3(0.5f, 1f, 0.5f);
Vector3 direction = new Vector3(1f, 0f, 1f) - rayPos;
direction.Normalize();
Ray ray = new Ray(rayPos, direction);
Console.WriteLine(ray.Intersects(plane));
私は何か本当に重要なことを忘れてしまったように感じています。どんな助けでも本当に感謝しています。