Unityお勉強メモ 「fbxファイルの座標系」 ※断片的な情報から予想してるだけだから間違ってるかもだよ。 ■前提知識■ メタセコ:右手Y-Up Blender:右手Z-Up Unity:左手Y-Up fbxは頂点の座標だけでなく、各メッシュの回転(Lcl Rotation)も保持できる。 ■疑問■ fbxの座標系はググっても出てこない。 そもそも「様々な座標系に対応するフォーマット」と巷で言われている。 ほんとに? 実際のところは、『Unityと同じ左手のY-Up』じゃないの? ■根拠■ メタセコからのfbxをエクスポートすると: Lcl Rotationはオールゼロ(0,0,0)になる。 その代わりメッシュの頂点のXが反転される。 これはちょうど、右手Y-Up(メタセコ)から左手Y-Upへの変換に相当する。 【変換のイメージ】 dstVertex.X = -srcVertex.X Blenderでfbxをインポートすると: 頂点のXが符号反転される上に、オブジェクトにX90,Z180の回転が設定される。 これはちょうど、左手Y-Upから右手Z-Up(Blender)への変換に相当する。 【イメージ】 dstVertex.X = -dstVertex.X dstObjRot = srcObjRot.RotateZ(180).RotateX(90) Blenderからfbxをエクスポートすると: 前方と上がどの座標軸かを選ぶことができる。この設定によってエクスポートの動作が変わる。 頂点のXが反転されたり、Lcl Rotationに回転が設定されたりする。 Unityでfbxをインポートすると: 頂点の座標がそのまま取り込まれる。 Lcl RotationがオブジェクトのTransformのデフォルト値となる。 メタセコとBlenderはfbxを入出力する際に何らかの変換を行うが、 Unityはfbxの座標やプロパティをそのまま取り込んでいる。