自由制作の題材を決めよう. そして,いきなり完成品を目指すのではなく, まずは,試作・検討しよう. より素晴らしい作品を生み出すためには, 事前の周到な準備が重要だ.
3D-CGの場合,試作段階では全体的な構成だけ (主要なアイテムの大体の形状・配置・配色など) に集中するとよいだろう. また,後々の調整作業を効率よく進めて行けるようにするため, 試作段階から #declare を活用しておこう. 詳細な形状・配置・テクスチャ・フィニッシュの微調整については, 最終的な実作段階(仕上げ段階)で,時間と相談しながら進めて行こう.
作業手順:
なお,形状がまだ単純な段階から部品分けしておくのは, ただ面倒なだけに思えるかもしれない. しかし,最初に適切に部品化しておけば, 形状が複雑化してきたときに, 編集作業を格段に楽にできるようになる. つまり,部品化の有無によって, 作品の最終的な完成度には大きな差がつくことになってしまう. 「備えあれば憂いなし.」
作品の構想を報告せよ.
自由制作テーマ: 「ゆるキャラのいる風景」 (キャラクタおよび設定を自由な発想で創造せよ. オリジナルのキャラが理想だが,既存のキャラでも可. ただし,必ず「ゆるい」こと.)
注意: 作品の題材については必ず, 一般人が理解・評価できる内容とすること. (作品は,高専祭やオープンキャンパスなどで一般公開されるかもしれない. 見られても恥ずかしくないモノを作ろう.)
試作段階の進捗状況を報告せよ.
物体によっては,CSG で作成した形状のままでは, 表面が滑らか過ぎて不自然な感じがするかもしれない. 形状のノーマル(法線;表面の方向)にパターンを設定すれば, 物体の表面に微妙な凹凸感を与えることもできる. (ただし,実際に形状を変えているわけではなく, あくまでも,変わったように見せかけているだけ. 明確な凹凸形状を表現したい場合には, やはり,CSG で整形する必要がある.)
... // マグカップの定義 #declare Mug = ... // ガラスのマグカップ(凹凸なし) object { Mug material { M_Glass3 } translate ... } // ガラスのマグカップ(凹凸あり) object { Mug material { M_Glass3 } normal { bumps 0.2 scale 0.2 } // コブ追加(大きさ 0.2,間隔 0.2) translate ... } // 金属のマグカップ(凹凸なし) object { Mug texture { Silver1 } translate ... } // 金属のマグカップ(凹凸あり) object { Mug texture { Silver1 } normal { dents 1.0 scale 0.1 } // ヘコミ追加(大きさ 1.0,間隔 0.1) translate ... } ...
ノーマルの設定は,テクスチャやマテリアルと同じ感じで記述すればよいし, テクスチャやマテリアルと組み合わせることもできる. 詳しくは,マニュアルの 12.2 ノーマルを参照. なお,scale の拡大率として,ベクトル <x, y, z> を指定すれば, シワとかヒビのようなものも表現できるかもしれない.
曲面が滑らかにつながった形状の作り方を紹介しておく.
| ソースコード断片と説明 | レンダリング結果 |
|---|---|
// 卵形 // 半球の定義(+y方向の半球) #declare HemisphereY = difference { object { Sphere } object { Plane_XZ } } // 卵形の定義 #declare Egg = union { object { HemisphereY scale 1.5*y } // 上部(+y方向) object { HemisphereY scale -1*y } // 下部(-y方向) } // 卵形の配置 object { Egg pigment { color White } } |
![]() |
// 角丸の直方体 // Round_Box_Union(頂点1,頂点2,角の半径) // または,Round_Box_Merge(頂点1,頂点2,角の半径) // (不透明物体の場合,どちらでも同じ.) object { Round_Box_Union(<-1, -1, -1>, <1, 1, 1>, 0.0) pigment { color White } translate -3*x } // 半径 = 0 の場合,Cube と同じ object { Round_Box_Union(<-1, -1, -1>, <1, 1, 1>, 0.2) pigment { color White } translate 0*x } object { Round_Box_Union(<-1, -1, -1>, <1, 1, 1>, 0.4) pigment { color White } translate 3*x } // 角丸直方体は Cube と Disk_* と Sphere の組み合わせで自作もできる. |
![]() |
// 角丸の円柱 // Round_Cylinder_Union(底面中心点,上面中心点,角の半径) // または,Round_Cylinder_Merge(底面中心点,上面中心点,角の半径) // (不透明物体の場合,どちらでも同じ.) object { Round_Cylinder_Union(<0, -1, 0>, <0, 1, 0>, 1, 0.0) pigment { color White } translate -3*x } // 角の半径 = 0 の場合,Disk_Y と同じ object { Round_Cylinder_Union(<0, -1, 0>, <0, 1, 0>, 1, 0.2) pigment { color White } translate 0*x } object { Round_Cylinder_Union(<0, -1, 0>, <0, 1, 0>, 1, 0.4) pigment { color White } translate 3*x } // 角丸円柱は Disk_* と torus の組み合わせで自作もできる. |
![]() |
// 角丸の円錐 // Round_Cone_Union(底面中心点,底面半径,上面中心点,上面半径,角の半径) // または,Round_Cone_Merge(底面中心点,上面中心点,角の半径) // (不透明物体の場合,どちらでも同じ.) object { Round_Cone_Union(<0, -1, 0>, 1, <0, 0, 0>, 0.5, 0.0) pigment { color White } translate -3*x } object { Round_Cone_Union(<0, -1, 0>, 1, <0, 0, 0>, 0.5, 0.2) pigment { color White } translate 0*x } object { Round_Cone_Union(<0, -1, 0>, 1, <0, 0, 0>, 0.5, 0.4) pigment { color White } translate 3*x } // 角丸円錐は Cone_* と torus 等の組み合わせで自作もできる.かなり大変だけど... |
![]() |
これらの他,回転体,角柱,球スイープやブロブも便利かもしれない. 詳しくは, マニュアル を参照せよ.