2017-11-13 8 views
0

私は2つの3DポイントAとBを持っています。これらのポイントはクワッドメッシュによって形成された表面上にあります.AとBはメッシュの頂点と形成されたライン間に明らかに表面上に正確に横たわることが保証されていません。クワッドメッシュへの3Dライン投影

イメージをAからBに移動したいと思ったら、ラインをサーフェスに投影することができると想像すれば、AからBまでのウォーキングを完了すると、投影が交差する面のリストを復元したいと思います。常にメッシュの内側または外側にあることが保証されているわけではなく、実際には内側から外側へ、またはその逆に切り替えることができます。

あなたはB.

Iドンへの道をたどって、あなたが訪問する直面しているものを「空」で、この行以下のメッシュの表面に沿って散歩をしていたかのようにあなたはそれを考えることができ

測地線の距離を回復する必要があり、私は線A-> Bを事前に知っているので、それはそのような運動を見つける経路ではない。

これを効率的に行う方法を教えてください。

+0

メッシュ(たとえばOctree)の空間階層構造を計算し、あなたが言及したA、B、および "スカイライン"を通る平面と交差する面を照会することができると思います。パスの行の正しいシーケンスを生成するには、ハーフエッジメッシュ構造か、または顔の隣接関係を照会することができるその他のものが必要な場合があります – meowgoesthedog

答えて

0

ヒント:

投影は本当に限り、あなたは投影方向を持っていないとして定義されていません。多分あなたは表面にできるだけ直交する投影をしたいのですか?たぶん一定の方向性がありますか? (後者の場合は、サーフェスとサーフェスを交差させるだけです)。

この線に近いファセットを見つける必要があります。セグメントの方向を見ると、フェースは線分として表示され、投影された線の近くにセグメントを見つける必要があります(単一点と見なされます)。

境界面の階層にファセットを配置すると、任意の方向を見て候補セグメント(面)を効率的に見つけることができます。球体を使用すると、境界線を越えて3次元で(有界の)線と交差しない線分を拒否することもできます。

次に、端点に近い面を使用して面の方向を選択し、面と平面の個々の交差を取得し、3Dポリラインを再構築することができます。

関連する問題