POV-Rayについて
こんにちは。NBU2年のさせつです。今年を振り返って、ゼミの課題で頑張っていたPOV-Rayについて紹介したいと思います。この記事はNBUゆるゆるかれんだー Advent Calendar 2020の12月2日の記事です。
https://adventar.org/calendars/5539
POV-Rayとは
ポブレイと読みます。簡単に言えば、3DCG画像を描画するフリーソフトウェアです。しかしC言語風のコードを書くことによって、もともと定義されている、様々な形状や色、テクスチャを呼びだして描くという、デザイン系よりはプログラミングしたい人向けのものになります。公式サイトはこちら(英語です)
どんな感じか,実際の教科書の内容
私は、「はじめての3DCGプログラミング」(著者:山住富也、出版社 : 近代科学社Digital)という本で勉強していました。この本は全部で12章あって、その項目ごとに例題と問題が載っています。例題にはサンプルコードが載っていて、それを丸写しで書いてなんとなく理解した後、その項目のテーマの問題を解く形式になっています。
こんな感じで画像と「中心に立方体を描画し、45度回転してから、各方向へ平行移動しましょう」といった問題文が載っています。解答はありませんが例題のサンプルコードをヒントにして考えます。この問題だったら回転と平行移動がテーマになっていて、中心に黄色い箱を書いた後、回転と平行移動させて作ります。
C言語風なコードを使えて楽できる
個人的に楽できるC言語風コードは大きく3つあり、①while②if③マクロです。
①whileを使って「繰り返し」や「多重ループ」が使えます。
②ifを使って、もしyの位置が3の倍数だったら色を変えるみたいな「条件分岐」ができます。
③マクロといって大まかな処理をはじめに決めておいて数値だけ変えて使いまわしできるものがあります。
下の画像は右のほうだけ、y軸が等間隔で上または下に下がるようにwhile文を書いてループさせています。チャックのつもりですが言われないと分からない。。。(泣)
実験、光の3原色ー!!(感動**)
(画像元:https://iro-color.com/episode/three-primary-colors.html)
照明を習ったときにこんなコードを書いてみました
//- -------light------------
light_source{ <-5,10,-5>, color rgb<0.5,0.5,0.5>}
light_source{<3,10,0> color Green //緑
spotlight //スポットライト
point_at<0,0,0> //どの点を照らすか
radius 10 //強調範囲
falloff 45 //照らす範囲
}
light_source{<3,10,0> color Blue //青
spotlight //スポットライト
point_at<0,0,0> //どの点を照らすか
radius 10 //強調範囲
falloff 45 //照らす範囲
rotate<0,60,0>
}
light_source{<3,10,0> color Red //赤
spotlight //スポットライト
point_at<0,0,0> //どの点を照らすか
radius 10 //強調範囲
falloff 45 //照らす範囲
rotate<0,120,0>
}
簡単に言うと、光の3原色の赤、青、緑のスポットライトを同じ点に向かって当ててみました。すると下の写真のように、3色が交わる真ん中の部分が白くなるということが再現されました。
作品紹介
実はこの本には「円錐台、円柱、直方体、球を使って自由に描画してみましょう」というような自由作品を作る問題があります。私の場合、この問題を解くのがゼミの必修課題になっていて、毎週、アイデアが尽きるほど、考えて作ってを繰り返しました。というわけで少しだけ紹介したいと思います。
テディベアとショートケーキ
観覧車
アイス
金魚
らせん階段
最後にチェスを作ってみました(他のよりはだいぶ時間かかった)
一応、時系列で上から並んでます。超初心者の作品すぎるかもです。
長くなってしまってごめんなさい。以上、POV-Rayの紹介でした。
最後まで読んでくださり、ありがとうございます。
この記事が気に入ったらサポートをしてみませんか?