ボリュームの使用(1)
www.aixsponza.comによるR20新機能解説動画(2/3)
基礎概念
ボリュームVolumeとは
もとのとの意味は「体積」。ある物体が3D空間でどれだけの場所を占めるかをあらわす度合い。3DCGでは、ボクセルの集合。
ボクセルVoxelとは
2Dデジタル画像の単位であるピクセルに対して、厚み情報を加えた3Dデジタル画像を構成する単位。ボリューム(volume)+ピクセル(pixel)からの造語。小さな体積の立方体。値を格納する(密度や温度など。あるいは表面からの距離など)。
ポリゴンとボリューム
ポリゴンモデリングが頂点(ポイント)とそれを結ぶ辺(エッジ)とそれらに囲まれた多角形(ポリゴン)を基準にしているのに対して、ボリュームモデリングはボクセルを基準とする。
- ポリゴン…多面体オブジェクトの形状を定義する頂点、辺、面の集合。表面の形状しかない。
- ボリューム…構造物の表面 (surface) と内容部 (volume) の両方を表現。ボクセルで構成される。
POINT
- R20ではOpenVDBベースのボリューム機能が搭載された。
- C4Dでがボリュームは直接レンダリングできない(ボリュームレンダリングが不可能)。レンダリングするためには、ボリュームをポリゴンに変換しなくてはならない(ボリュームメッシュ化)
ボリューム入門
- [ボリューム]メニューが新しく出来た。ここにボリューム関係のコマンドがある。
- これらのなかで一番重要である[ボリュームビルダー]を選択。ボリュームビルダーオブジェクトが作成される(メニューのジェネレータオブジェクトのアイコンからも作成可能)
ボリュームビルダーオブジェクトを作成しただけではビューポートでは何も起こらない。なぜなら、C4Dではボリュームは直接レンダリングすることは不可能で、ポリゴンに変換(ボリュームメッシュ化)しないとレンダリングされない。
- 立方体を作成し、ボリュームビルダーの子にする。
立方体の「符号付き距離フィールド」が表示される。
- 属性マネージャで、ボリュームビルダーの[オブジェクト]タブを見ると[ボリュームタイプ]が「符号付き距離フィールド Signed Distance Field(SDF)」となっている。
- [ボリュームタイプ]には、もうひとつ「フォグ Fog」がある。変更してみる。
各ボクセル毎にオブジェクトの密度Densityや温度Temperatureなどの値を格納して利用する。
- 今回は「符号付き距離フィールド」で進めていく。ボクセルは元のオブジェクトからの距離で定義される。中は空洞。
- [ボクセルサイズ]を「2cm」と小さい値にするとより正確な描画になる。
[オブジェクト]リスト
ボリュームビルダーの子オブジェクトを作成すると、オブジェクトは自動的にリストに追加される。
ボリュームビルダーの子でないオブジェクトをリストに追加
- 球体オブジェクトを新規作成(ボリュームビルダーの子にせず、独立した状態)し、オブジェクトリストにドラッグ&ドロップする。リストに追加された。
ビューポートを見ても変化が起きていない。これは球体が立方体の内部に隠れているから。
- 球体オブジェクトのサイズを大きくし移動させて見えるようにする。
- これで球体がボリュームとして作成されたが、いま球体オブジェクトも表示されている。これは、球体オブジェクトがボリュームビルダーの子でないため。そのため二重で球体が表示されていることになり、アーティファクトが発生している。
- そこで、球体オブジェクトは非表示に切り替える。
- 球体オブジェクトの[分割数]を「100」に変更(属性マネージャの[オブジェクト]タブ)
- これで、異なる2つのポリゴンオブジェクトから生成されたボリュームが出来た。
- ボリュームビルダーはその2つのオブジェクトを「合体」してボリュームを生成している。これは、オブジェクトリストの[モード]で定義されている。
- [モード]はすべてで3パターン。「合体Union」「型抜きSubtract」「交差Intersect」
ボリュームによるブーリアン演算であるが、この操作はポリゴンオブジェクトによるブーリアンよりエラーが少ない。
プロシージャルジェネレータなので、球体オブジェクトを移動させると交差演算もそれにともなって更新される。
ボリュームメッシュ化
ボリュームは直接レンダリングできない。レンダリングするためには、ボリュームを再びポリゴンに変換しなくてはならない。
- [ボリューム]メニューの[ボリュームメッシュ化 Volume Mesher]を選択。ボリュームメッシュ化オブジェクトが作成された。
- ボリュームビルダーをボリュームメッシュの子にする。ボリュームをポリゴン化したメッシュ(ポリゴンメッシュ)が作成される。
以前のC4Dのバージョンの「メタボール」と似たことが出来るが、メタボールより速く描画される。
[ボリュームメッシュ化]には[ボクセル範囲しきい値 Voxel Range Threshold]と[アダプティブ Adaptive]の2つのパラメータがある。
[ボクセル範囲しきい値]では、ボリュームのうちどの値までが表面を作成するのに利用されるかを定義する。ボリュームのどの値までを利用してポリゴン面を作成するかを定義する。しきい値を変化させるとボリュームを拡大したり、縮小したりすることになる。
いまは[ボクセル範囲しきい値]を「50%」のままにする。
メッシュの細かさ・粗さの定義
「ボリュームメッシュ化」の[オブジェクト]タブには、生成するポリゴンの細かさ(解像度)を定義するスライダーがない。これは、解像度がボリュームのほうに紐づけられているため。
- ボリュームビルダーの属性マネージャで、[オブジェクト]タブの[ボクセルサイズ]を「10cm」に変更する。粗いポリゴン表示になった。
- 「1cm」にすると非常に細かいポリゴン表示になる。
ボリュームビルダーでのフィルタ効果
「ボリュームメッシュ化」をOFFにする。
スムーズレイヤ
- [スムーズレイヤ]ボタンを押し、スムーズレイヤを作成。
- スムーズレイヤより下にあるすべてのオブジェクトに対してスムーズフィルタが働く。ボリュームに対して、3次元のブラー効果をかける。(以下の左図は立方体のみにスムーズレイヤが働いている状態。右図は球体と立方体に働いている状態)
スムーズレイヤを選択して状態で、設定を変更する。
- [強度]で0%に近いほど効果が薄まりシャープになる。
リシェイプレイヤ
- スムーズレイヤのチェックを外し、無効にする。
- リシェイプレイヤボタンを押して、リシェイプレイヤを作成し、オブジェクトリストの一番上に配置する。
- [フィルタタイプ]は[膨張Dilate/収縮Erode]のままで、[オフセット]を「10cm」と「-10cm」にしてみてフィルタ効果を確かめる。
- スムーズレイヤとリシェイプレイヤは組み合わせることが出来る。(以下の図の場合、立方体と球体にリシェイプ効果をかけたのち、全体に対してスムーズ効果を適用している)
(続く。その2へ)