自由制作の題材を決めよう. そして,いきなり完成品を目指すのではなく, まずは,試作・検討しよう.
スケジュール:
試作段階では全体的な構成だけ (主要なキャラクタやアイテムの大体の形状・配置・配色など) に集中するとよいだろう. また,後々の調整作業を効率よく進めて行けるようにするため, 試作段階から #declare を活用しておこう.
うまく行きそうにないと思ったら,すぐに作り直そう. 早目の決断が重要.
シーンファイルの編集中には,PC の不調に備えて, こまめに「保存」しておこう.
詳細な形状・配置・テクスチャ・フィニッシュの微調整については, 最終的な実作段階(仕上げ段階)で,時間と相談しながら進めて行こう.
なお,形状がまだ単純な段階から部品分けしておくのは, ただ面倒なだけに思えるかもしれない. しかし,最初に適切に部品化しておけば, 形状が複雑化してきたときに, 編集作業を格段に楽にできるようになる. つまり,部品化の有無によって, 作品の最終的な完成度には大きな差がつくことになってしまう.
シーンファイルの編集時には適度に改行し, 各行のインデント(字下げ,段落)を整えよう:
#declare MyObject = merge {
object { Sphere
translate <...>
...
}
object { ...
...
...
}
...
}
インデントのルール:
このように記述しておけば, merge とか object とか texture とかの 括弧「{ ... }」の左右の対応を確認しやすく, エラーを見つけやすくなるし, そもそも,エラーを増やさずに済む.
もちろん,一行に収まるような短い object については, 括弧内を複数行に分ける必要はない:
object { MyObject translate <...> ... }
作品の構想を報告せよ.
自由制作テーマ:
未来的な移動手段 に関連した風景を自由な発想で創造せよ. 既存のアイディアの例: 小型立ち乗りEV, 悪路移動用馬形ロボット, 空飛ぶクルマ, ウイングスーツ, 宇宙エレベータ, etc.
オリパラ不採用や架空の種目でも OK. コロナ禍でも奇跡的に開催された東京と北京でのオリンピック・パラリンピック... そして一昨年 2024 夏はパリ, 今年 2026 冬はミラノ・コルティナで通常開催. スポーツ競技に関連した風景を自由な発想で創造せよ. オリパラ不採用や架空の種目でも OK.
上記の2つのジャンル(抽象的テーマ)から1つを選択し, さらに,自分自身の具体的テーマを考案しよう.
人間の CG 化は難しいので... ピクトグラム男(棒人間) を利用して OK.
注意: 作品の題材については必ず, 一般人が理解・評価できる内容とすること. (作品は,高専祭やオープンキャンパスなどで一般公開されるかもしれない. 見られても恥ずかしくないモノを作ろう.)
構想がまとまり次第,試作を開始しよう. シーンファイルについては,前回の sample.pov 等を元にして, ファイル名を変更すればよいだろう.
なお,完成作品に対する教員による評価では, merge,union だけでなく difference,intersection が適切に利用されていると 高得点となる.
(次回提示予定)
曲面が滑らかにつながった形状の作り方を紹介しておく.
| ソースコード断片と説明 | レンダリング結果 |
|---|---|
// 卵形(半球の組み合わせで自作)
// 半球の定義(+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,角の半径)
// (不透明物体の場合,UnionとMergeは,どちらでも同じ.
// 少しだけ短い記法として,Round_Box(..., 0)
// または,Round_Box(..., 1) でもOK.)
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 の組み合わせで自作もできる.
// (前回のテーブルの天板 Top を参照.)
|
![]() |
// 角丸の円柱(定義済みオブジェクト)
// Round_Cylinder_Union(底面中心点,上面中心点,角の半径)
// または,Round_Cylinder_Merge(底面中心点,上面中心点,角の半径)
// (その他,Round_Boxと同様.)
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(底面中心点,上面中心点,角の半径)
// (その他,Round_Boxと同様.)
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 等の組み合わせで自作もできる.
// かなり大変だけど...
|
![]() |
これらの他,回転体,角柱,球スイープやブロブも便利かもしれない. 詳しくは, 利用参考マニュアル や Geometric Shapes を参照せよ.
物体によっては,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>)を指定すれば, シワとかヒビのようなものも表現できるかもしれない.