FBXファイル内に保持できる要素
初心者がFBXの構造を学習するにあたり、FBXのシーンに設定できる要素を調べましたので、メモとして残します。
初心者でも理解しやいような表現を心がけているため、用語の説明が正確でないかもしれません。間違いに気づいたらご指摘をお願いします。
本記事の対象者
プログラミングはできるけど、CGの用語は疎いみたいな人が対象です。
FBX
FBXは、CG界隈で広く普及しているファイルフォーマットです。
3D空間内での物体の形状、模様、動き等を定義できます。
FBX SDK
プログラミング言語でFBXを読み込んだり書き込んだりできるツールです。
C++版とPython版の2種類があります。
シーン
FBXファイルの中身はHTMLのように階層構造になっています。
最上位層が シーン です。HTMLでいう <html>
タグに相当する部分です。
この配下に エレメント がぶら下がります。
引用:Autodesk FBX 2017 / FBX Scenes
エレメントには以下の種類があります。
エレメント | FBX SDKでのクラス名 |
---|---|
メッシュ | FbxMesh |
LODグループ | FbxLodGroup |
カメラ | FbxCamera |
ライト | FbxLight |
ゴボ | FbxGobo |
ナーブス | FbxNurbs |
テクスチャ | FbxTexture |
マテリアル | FbxSurfaceMaterial |
コンストレイント | FbxConstraint |
デフォーマー | FbxDeformer |
グローバル設定 | FbxGlobalSettings |
アクシスシステム | FbxAxisSystem |
ノード | FbxNode |
マーカー | FbxMarker |
ライン | FbxLine |
スケルトン | FbxSkeleton |
アニメーションカーブ | FbxAnimCurve |
ポーズ | FbxPose |
メッシュ
メッシュとはポリゴン(多角形)が集まったものです。物体の形状を、曲面ではなく多角形(≒平らな面)の集合体で表現します。
LODグループ
LODは Level of Detail
の略で、日本語では 詳細レベル
と言ったりします。
カメラから遠い物体は荒いメッシュにして、カメラに近い物体は細かなメッシュで表示したい!
という時にLODを設定します。
Unityの記事ですが、LODの概念はこちらの記事がわかりやすかったです!
引用: 【Unity】LODで負荷を軽減させて60FPSを死守する
カメラ
我々が暮らす現実の物理世界ではカメラを使って動画を撮影し、その動画をスマホ等の長方形ディスプレイで視聴します。
それと同じ様に、3DCG空間内を撮影するためのカメラという要素がFBXにはあります。
Unityでゲームを作ったりするときは、Unity側のMain Cameraを使うので、FBX内のカメラは使わないかもしれません。ただ、BlenderやMaya等で3Dアニメーションを作る際には、カメラの動きをFBX内に保存したりします。
ライト
ライトとは照明のことです。これがないと空間が真っ暗になってしまいます。
太陽光やスポットライト等、いくつか種類があります。
引用:Unity / FBX Exporter / Working with Prefabs
ゴボ
ゴボとは、スポットライトに取り付ける画像のことです。影絵のようなことができます。
引用: MOTIONBUILDER / ゴボをスポット ライトにアタッチする
ナーブス
ナーブス(NURBS)は曲面の一種です。物体の形状を曲面で表現します。
曲面なので、メッシュ(ポリゴン)よりも滑らかな形状を表現できますが、計算量が多いので、ゲーム等のリアルタイム描画に使うのは難しいです。
また、ポリゴンは三角形・四角形等を組み合わせて、自由な形状を表現できますが、NURBSは制御点が格子状(碁盤の目のように)に整列している必要があるため、表現できる形状に大きな制約があります。
そのため、人間・動物・植物のような生物をNURBSで表現することは難しく、映像作品で使われることもあまりないです。
ただ、NURBSは曲率(曲面の曲がり具合)を正確にコントロールしやすいという特徴があるので、自動車や船の形状を厳密に定義したいとき等によく使われます。
テクスチャ
テクスチャはメッシュに貼り付ける画像です。物体の模様を表現します。
地球儀で例えるなら、球体がメッシュで、世界地図がテクスチャです。
テクスチャをメッシュへどのように貼り付けるのか?というデータもあり、 UVマップ と呼びます。
引用:SECOND LIFE MARKETPLACE / Maruti Textures # Texture - Full Perm
マテリアル
マテリアルは物体の質感のことです。物体に色や、光の反射具合、透明度等を設定できます。
引用:MAYA arnoldで金属やプラスチックのマテリアル調整する時の方法
コンストレイント
コンストレイントとは、物体を拘束して、動きを制限することです。
たとえば、ボールを手に拘束すれば、手の動きに合わせてボールも動きます。
拘束(コンストレイント)を解除すれば、ボールは手から落ちます。
デフォーマー
デフォーマーとは制御点を利用して頂点群(メッシュ)を動かすことです。(Photoshopのワープとかのイメージに近いです。)
骨の動きに合わせてメッシュが変形するスケルトンアニメーション(スキニング)もデフォーマーの一種みたいです。
グローバル設定
グローバル設定とは、シーン全体に関わる設定のことです。メタデータとかヘッダー等と呼ぶ人もいます。
アクシスシステム
アクシスシステムとは、座標軸の方向の決め方のことです。 右手系 と 左手系 の2種類あります。
- 右手系:x軸が東方向、z軸が北方向、y軸が天空方向
- 左手系:x軸が東方向、z軸が南方向、y軸が天空方向
右手とか左手というのは、x軸を親指、y軸を人差し指、z軸を中指で表す時に、どちらの手を使うか?ということです。
引用:stack overflow / OpenCV triangulatePoints handedness
ノード
FBXにおけるノードとは、物体の位置・回転・大きさをひとまとめにしたものです。Unityでいう Transform
に相当します。
すべてのノードは親子関係を持ちます。たとえば、右肩→右肘→右手首という感じです。
ノードの位置・回転・大きさは親の影響をうけます。たとえば、右肩が1m前に進めば、右手首も1m前に進みます。
引用:Autodesk FBX 2017 / FBX Nodes
マーカー
マーカーとは、モーションキャプチャーの目印のことで、皮膚の上に貼ったりします。
マーカーの位置を元に、関節の位置を計算したりします。
引用:Recommended marker set for full body capture
ライン
ラインは直線のことです。直線に沿って、物体を動かすときとかに使います。
スケルトン
スケルトンは人間の骨格のことです。ボーン(骨)とジョイント(関節)の集合体です。
骨格とはいっても、生物的な意味よりは、機械的な意味合いが強いです。たとえば、前髪を揺らしたければ、前髪ボーンを設定します。
人間の動きのことを スケルトンアニメーション と呼んだりします。
引用:STYLY MAGAZINE / Autodesk Maya〜スケルトン編〜
アニメーションカーブ
アニメーションカーブとは、物体の動きを定義したデータです。
スケルトンアニメーションの場合は、ジョイントの回転方向の時間変化(タイムライン)を設定します。
引用:Unity Documentation / アニメーションカーブの使用
ポーズ
ポーズとは姿勢のことです。時間変化しないアニメーションととらえることもできるかもしれません。
引用:DIGITAL FRONTIER / MotionBuilderの為のキャラクターセットアップ
さいごに
以下を参考にさせていただきました。