座標系をZアップからYアップに変更する


8

Blenderの座標系は、ZがYではなく上向きであるという点で、私が慣れ親しんでいるものとは異なります。上向き?

明確化:

オブジェクトの位置は行列として定義されるため、行列内の平行移動/回転/スケール情報を切り替えるだけでは簡単な作業ではありません。(少なくともそれは私にとって簡単な仕事のようには見えません)


何か不足していますか、それともZ座標とY座標を切り替えるだけですか?
共産主義者のダック

質問に説明を追加しました。
Jari Komppa、2011年

オブジェクトの位置行列は1x4列の行列ではありませんか?では、要素を切り替えるのは簡単ではないでしょうか?マトリックスについては説明しましたが、gamedev固有の用語については説明していません。:p
共産主義者のダック

これらは、平行移動、回転、スケールが適用されたフラットな4x4マトリックスです。
Jari Komppa、2011年

1
独自のpythonスクリプトを作成している場合は、bpy_extras.io_utils.axis_conversionを使用できます(blender_org / documentation / blender_python_api_2_66a_release / …を参照)。Afaik、ブレンダーでの「非Zアップ」座標系のサポートが計画されていますが、現時点(2.66a)ではまだ実装されていません。
Exilyth 2013年

回答:


2

回転行列を作成して、ワールド行列の最初の部分を正しく方向付けできないのはなぜですか?

ロード時に修正する場合は、回転行列を作成して、正しい方向に向けます(X軸を中心に90度)。これをすべての頂点に適用し、既存のすべての行列を(回転*既存)に変更します。


これはうまくいくかもしれません-エクスポート時にすべてに90 '回転行列を適用します。
Jari Komppa、2011

まあ、私はを求め、最も簡単な方法は...
ヤリKomppaに

7

私が間違っている場合は反対票を投じますが、人々がyとzの入れ替えを推奨している理由がわかりません。それはあなたの座標系を右利きから左利きにすることになります。これを自分で試して、yとzを入れ替え、x軸が右を向き、y軸が上を向くように軸の方向を変更します。zが元の方向とは反対の方向を指していることがわかります(画面から離れる)。適切な方法は、y軸とz軸を入れ替えたx軸を中心に回転し、最後のz軸の符号を反転させることです。

より簡単な解決策は、y値を上げてモデルを構築することです。


1
さて、その行列を修正する方法「最終のzの符号が」..反転していること
ヤリKomppa

1
あなたは、あなたがモデルデータを読み込む際に変換を適用することである、あなたはあなたのデータを修正したい、あなたの行列を修正する必要はありません。
5ound

1
ただし、アニメーションデータは行列として格納されるため、間違った方向に移動します。したがって、オブジェクトは正しい方向を指しますが、アニメーションはそうではありません。
Jari Komppa、2011

5

Comrade Duckが示唆しているように、YとZを入れ替えることができます。これを行うために行列が必要な場合は、次の行列を使用します。

| 1 0 0 |
| 0 0 1 |
| 0 1 0 |

または同次座標で

| 1 0 0 0 |
| 0 0 1 0 |
| 0 1 0 0 |
| 0 0 0 1 |

1

あなたのマトリックスが:

x
y
z
w

それならなぜですか:

temp = y
y = z
z = temp

または、必要なスワップ方法。


0

使用しているメッシュローダーコードを使用してメッシュを読み込むときは、Z値とY値を切り替えるだけです。その後、メッシュが適切な座標空間でゲームに読み込まれ、好きなことを実行できます(回転、移動などを適用します)。3DS Maxで私が経験したのと同じような状況です。


1
私がコメントしたように、アニメーションはめちゃくちゃになります。
Jari Komppa、2011年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.