プロジェクトスケール
Cinema4Dの起動時のスケールの単位はcm。
Cinema4Dにはプロジェクトスケールと言う概念があり、作るもののサイズに合わせて単位を変更すると作業がしやすいようになっている。
例えば家電製品であればプロジェクトスケールをcm、建物ならばm、街であればkmと言うような感じに。
プロジェクトスケールを変更して変化が分かりやすい箇所として、作業平面のグリッド間隔がある。
グリッド間隔は表示の状態で変化するが、初期の状態ではcmは50cm、mでは5000cm、kmだと5000000cmまで広がる。
このグリッドを参考に、作っている物のスケール感を読み取ることが出来るようになっている。
もう一つ、Cinema4Dには表示上の単位と言うものがある。
オブジェクトのサイズの末尾に付く単位の事で、これを作るもののに合わせて変更する事で作業しやすいようになっている。
例えば、上記の様にプロジェクトスケールがkmの時に表示上の単位がcmだと、桁数が異常に多い数字になってしまうので、mやkmに変更する事で、見やすく作業がしやすいようになっている。
キューブの大きさ
プロジェクトスケールがcmの時にプリミティブのキューブを配置すると200cm 、つまり2mのキューブが生成される。
では、プロジェクトスケールがmの時に同じくキューブを配置すると同じく2mのキューブが生成されるかと言うと、実は違う。
表示上はプロジェクトスケールがcmの時と同じキューブが生成される。
サイズを見てみると、一辺が20000cmとなっている。
そして表示上の単位をmにすると200mとなる。
つまり、Cinema4Dではプロジェクトスケールの単位や、表示上の単位とは関係なく「200」と言うサイズのキューブが固定で生成されるという事になる。
他ソフトとの連携
Cinema4Dからエクスポートしたキューブを他の3DCGソフトでインポートした際のスケールの変化を検証してみる。
各ソフトに受け渡しするファイル形式は単位を内包できるFBX。
前提として、各ソフトのスケール単位
- Blender : 1単位 / 1m
- Unity : 1単位 / 1m
- UE : 1単位 / 1cm
プロジェクトスケール:cm / 200cmのキューブ(デフォルト)
- Blender : スケールが1/100された上で2mのキューブとして表示。見た目は等倍
- Unity : 等倍
- UE : 等倍
プロジェクトスケール:m / 20000cmのキューブ(プロジェクトスケールのみ変更)
- Blender : 100倍
- Unity : 100倍
- UE : 等倍
プロジェクトスケール : m / 200cm(2m)のキューブ(キューブを縮小)
- Blender : 等倍
- Unity : 等倍
- UE : 1/100
1単位/1mのBlenderとUnityでは、プロジェクトスケールがデフォルトのcmのままでも等倍で表示された。
プロジェクトスケールをm、つまりスケールを100倍にするとキューブも100倍に、スケールを100倍にしつつキューブを1/100にすると等倍で表示される。
UEはCinema4Dと同じく1単位/1cmなのでプロジェクトスケールがcmでは等倍に表示されるが、プロジェクトスケールをm(100倍)にしても等倍で表示される。
プロジェクトスケールをmにしつつキューブを1/100に縮小すると、UEでも1/100で表示された。
Cinema4Dを介したデータのやり取り
次に、RealityCaptureで生成したフォトグラメトリモデルのFBXをCinema4Dで編集し、ゲームエンジン等で使用する場合を検証。
前提としてRealityCaptrueのスケール単位は以下の通り
- RealityCapture: 1単位 / 1m
RealityCaptureデフォルトの設定でFBXをエクスポートし、Cinema4Dで読み込むとプロジェクトスケールはmに設定されて開かれる。
これをC4D上でプロジェクトスケールを変更するなど比較条件を付けてエクスポートし別のソフトでインポートを行うと以下の通りになる。
プロジェクトスケール:m (デフォルト)
- Blender : 等倍
- Unity : 等倍
- UE : 1/100
プロジェクトスケール:cm (プロジェクトスケールのみ変更)
- Blender : 1/100
- Unity : 1/100
- UE : 1/100
プロジェクトスケール:cm (新規プロジェクトにコピペ)
- Blender : 等倍
- Unity : 等倍
- UE : 等倍
まとめ
Cinema4DからエクスポートしたFBXを各ソフトでどのように読み取っているのかと言うと、
- Blender : プロジェクトスケールによってインポート時のスケールが変化するがサイズは一定。(mの時はスケール1。cmの時はスケール0.01)
- Unity : プロジェクトスケールの単位に関わらずサイズだけを見ている。
- UE : プロジェクトスケールと共通の単位の数字だけを見ている。
Blenderはオブジェクトのサイズのみ適用される。
UnityはデフォルトでConvert Unitsにチェックが入っているため、Cinema4Dのプロジェクトスケールの単位に関わらずUnityの単位に自動で変換される。
C4Dのプロジェクトスケールも反映されているので、Convert Unitsのチェックを外してApplyを押すと元のスケールが反映される。
UEはCinema4Dと同じくスケールがcmなのでCinema4Dの値がそのまま反映されるが、インポート時の設定で「Convert Scene Unit」をTrueにすると、BlenderやUnityと同じくプロジェクトスケールが無視されサイズのみが適用される。
2023/01/03まとめの内容を修正