2017-01-19 8 views
1

私はディビジョンを持つプレーンメッシュを持っており、コーナーのそれぞれを配置する座標を指定する必要があります。メッシュの頂点の移動と更新は、プレーンに内部セグメントがない限り、私がしようとしていることを達成します。内部セグメントを追加すると、手動で配置できるよりも多くの頂点があるため、これらは自動的に外側のエッジの変形に合わせる必要があります。コーナー座標に基づいてプレーンジオメトリを変換および変換する

ここで最初に考えたのは、頂点が4つしかないジオメトリを作成し、位置を変えてから飛行機のセグメント数を増やすことでした。明らかに、Three.jsがサポートするものではないので、回避策を探しています。

どのような考えにも感謝します。

答えて

2

私は、この種の変換が、あなたのプレーンメッシュに適用できる単なるマトリックスとして表現できるとは思いません。分割された平面の各頂点の座標を手動で計算する必要があると思います。

この計算を行う方法はいくつかあります。 Bilinear interpolationこの場合は仕事をするようです。あなたのやり方は次のとおりです。 A、B、C、Dの4つの点を持つ場合、それぞれの内部点について、その位置は、(AとBの加重平均とCとDの加重平均の)として求めることができます。平均の重みは、内側の平均については一方向(例えば、X)で、外側の平均については他の方向(例えば、Y)での細分頂点のインデックスから来る。あなたのインデックスは、0からその方向(それを含む)の細分数まで実行されます。したがって、重みは0〜1である必要がありますので、weight = index/number of subdivisionsです。

Example courtesy of @prisoner849

+0

ステファン、洞察力ありがとう。私はこれを解決策として実装することに手を入れ、私がどのように運賃を得るのかを教えてくれるでしょう。 –

+0

私はあなたがあなたの提案で絶対に正しいと思います。私はこの種の複雑な翻訳を行う必要がなくなった別の解決法を見つけることになりました。しかし、提案していただきありがとうございます。 –

+1

興味深い質問と回答。両方をアップアップ(歓声!)。私のアプローチはここにあります:[jsfiddle](https://jsfiddle.net/prisoner849/311z5ceo/) – prisoner849

関連する問題