2016-09-19 3 views
0

私は、静的な頂点リストを取得しようとしています。行列を使用して、下の図に示すように円で曲げようとしています。私は基本的なジオメトリを使って新しい頂点を見つけることができますが、行列でそれをどのように実装するのか、それが可能なのかどうかはわかりません。私は、円の中心を 'C'と呼び、頂点からC 'd'までの距離をx = Cx + d * cos(θ)、y '= Cy + d * sin(θ)と呼んでいると考えています。 (CxおよびCyはCの成分である)。しかし、私は、それ自体が行列に変換できるとは思わない。コンテキストの場合この変換はマトリックスを使用して可能ですか?

The Transformation

、私は3Dスネークゲームを作ってるんです。 Snakeはセグメントで構成され、各セグメントは次のセグメントに接続する必要があります。私はセグメント間の各接続の方向と位置を持っているので、図のように各パーツを接続してセグメントを構築できると考えました。しかし、各フレームの各セグメントの頂点を計算することは非効率的である。静的にリストされた頂点をモデルワールドマトリックスで変換することができれば、それはもっと速くなり、私が現在使っているメソッドに収まるでしょう。私は以下のスネーク(頭を無視する)の簡単な図を含めました。

The Snake

それが不可能な場合は、同様の結果を与えながら行列を使用して行うことができる任意の選択肢がありますか。

+0

シフトと回転を表す行列が必要なようです。これは行列を使って完全に実行できます:https://en.wikipedia.org/wiki/Rotation_matrix –

答えて

0

はい、可能です。

スケルトンアニメーション: あなたは実際にオブジェクトに骨のシリーズを追加し、完璧な曲線を取得することも同様に骨に回転を適用することができます。これを達成する最も簡単な方法です。ただし、必ずしも最速の方法ではありません。

ただ、マトリックス&ウェイト: 曲げはこの割合で常にある場合は、各頂点に重み情報を追加して、変換/回転/スケールの組み合わせで行列を乗算しなければなりません。これにより、すべての頂点が1つの行列のみを使用して乗算され、階層がないため、スケルトンアニメーションと比較してパフォーマンスが向上します。

関連する問題