2004 年度 卒業研究 POV-Ray による 3D 画像のレンダリング - 澤見ゼミ

2004 年度
卒業研究
POV-Ray による 3D 画像のレンダリング
岡山理科大学 総合情報学部 情報科学科
澤見研究室
I01I080 田村英臣
目次
1 はじめに
2
2 CG
3
2.1 3DCG の概要
3
2.1.1 3DCG
3
2.1.2 2DCG と 3DCG の違い
3
2.1.3 3DCG の画像作成順序
3
2.2 3DCG 技術の歴史
5
3 POV-Ray
7
3.1 POV-Ray のはじまり
7
3.2 レイトレーシング法
8
3.3 POV-Ray の特徴
10
3.3.1 フリーソフトウェア
10
3.3.2 システムの汎用性
10
3.3.3 データの互換性
10
3.3.4 世界中での利用
10
3.4 高画質, 高性能
11
3.5 作業順序
12
4 レンダリング
13
4.1 作品例
13
4.2 掛時計
16
4.3 完成作品と実写の比較
17
5 考察
18
6 参考文献, 参考 website
19
1
1 はじめに
近年のコンピュータの発達に伴い, 様々なものがコンピュータを用いて表現されるよう
になった. 特に, アニメーションや映画に見られる再現は実に見事である.
本研究では, コンピュータを用いていかに実物または実写に近い形に表現できるかとい
うことを追求したい. よって, 身近にあるものを実際にレンダリングし, 最終的に完成した
ものを実物または実写と比較することでその可能性の評価を行う. これは CG における基
礎であるが最も難しいことの一つであると考える.
レンダリングには POV-Ray version3.6.1 を用いる.
2
2 CG
本章では, CG の技術や歴史などの概要について述べる.
2.1 3DCG の概要
2.1.1 3DCG
3DCG とは, コンピュータ内の仮想 3 次元空間に各種のオブジェクト(光源, 視点, オブジ
ェクト)を配置し, その視点から 3 次元仮想世界がどのように見えるかを 2 次元スクリーン
に映し出す技術である。
2.1.2 2DCG と 3DCG の違い
本研究を行うにあたってこの 2 つの違いを理解することは大変重要である.
コンピュータのディスプレイの表示画面は 2 次元であり, そこに表示されるものはすべ
て 2 次元画像である. つまり, 2DCG で遠近感のある画像を作ることは可能であるし, 逆に
3DCG で平面的な画像を作ることも可能である. 故に, ディスプレイに表示された 2 次元画
像を見ただけでは 2DCG か 3DCG かを判断することはできない.
2.1.3 3DCG の画像作成の順序
3DCG によって画像を作成するためには, (1) モデリング, (2) 視点・光源の設定, (3) レン
ダリング、(4) 3 次元座標変換, などの作業や処理がある.
(1) モデリング
3DCG におけるモデリングとは, 仮想 3 次元空間に配置する物体の形状を作り上げ,
その色や模様や材質間などを設定することであるため, 人の手による作業が中心とな
る. モデリングでは物体だけでなく, 背景や霧などの設定も行う. 作業を行う際はモデ
リングソフトを使用することが多いようだ.
3
(2) 視点・光源の設定
モデリングによって, コンピュータ内の仮想 3 次元空間に, 物体などのオブジェクト
が配置される. 次に, この仮想空間をどこから眺めるかを決めなければ, 2 次元画像は
決まらない. また, 光源を配置しなければ暗くて何も見えない. 視点と光源の位置や向
きは, ワールド座標系で指定されることが多い. これら二つの設定は, シーンの完成に
大きくかかわる重要な設定である.
この作業はレンダリングに含まれることもあるが, ここでは別々に説明した.
(3) レンダリング
(1), (2)で決められた条件を元に実際にシーンを作成する処理である. 視界外にある
物体や, 他の物体に隠れて見えない物体などを除去し, 陰影をつけ, 周囲の映り込みや
半透明物体の屈折などを考慮して行う. レンダリングの方法は様々な方法があるため,
用途に応じて手法を選ぶ必要がある.
(4) 3 次元座標変換
3 次元座標系は, 個々の物体の形状や位置, 視点や光源の位置や向きなどを定義する
ために不可欠である. 3 次元座標変換は, 拡大・縮小や回転, 平行移動などの幾何変換と,
3 次元の仮想世界を 2 次元平面に投影する投影変換に大別される. また, 3 次元座標変換
はモデリングおよびレンダリングの過程でも行われる重要な処理である.
モデリング
3 次元座標変
幾何変換
視点・光源の設定
投影変換
レンダリング
図 1:(3DCG における作業と処理)
4
2.2 3DCG 技術の歴史
CG の歴史はコンピュータの歴史でもあるが, 情報のグラフィック表示が本格的に行われ
るようになったのは 1960 年代に入ってからのようである. よって, それ以降の 3DCG 発展
の歴史を簡単にまとめてみた.
表 1:(3DCG 関連技術の歴史)
年号
トピックス
1952 プログラム内蔵式コンピュータ(J.von Neumann)
ベクトルスキャン型 CRT
1962 Sketchpad(I.E.Sutherland):2DCG の始まりで, 図形をコマンドで記述
1963 隠線消去(Robert)
1970 ラスタスキャン型 CRT, B-スプライン曲面(Riesenfeld), ベジエ曲線(Bezier)
1971 グローシェーディング(Gourand)
1974 クリッピング(Sutherland, Hodgman)
1975 フォンシェーディング(Phong), テクスチャマッピング(Catmull)
Z バッファ法(Catmull), NURBS(K.Vesprille)
1977 映画「スターウォーズ」(George Lucas):CG による特撮
1978 アンチエイリアシング(Crow, catmull), スキャンライン法(Blinn)
細分割曲面(Catmull, J.Clark)
1979 木星探査衛星ボイジャーの CG シミュレーション(NASA)
1980 レイトレーシング法(T.Whitted):直射光の反射・屈折
1982 フラクタルによる惑星の CG(Richard Voss)
ジオメトリエンジン(J.Clark):グラフィックス専用 LSI
1983 パーティクルシステムによる炎, 煙, 雲の CG(W.T.Reeves)
1984 ラジオシティ法(Greenberg):光の相互反射による間接光
1988 ボリュームレンダリング(R.A.Drebin):3D データの可視化
1989 WWW, HTTP, HTML の原型(Tim Berners-Lee)
1991 Mosaic(Marc Andreessen):最初の web ブラウザ
1992 OpenGL(Silicon Graphics, Inc.):グラフィック API
1993 映画「ジュラシックパーク」(Steven Spielberg):実写と CG の合成
1994 Labyrinth(Mark Pesce, Tony Parisi):最初の Web 用 3D ブラウザ
VRML1.0(第 2 回国際 WWW 会議):Web3D の原形
5
1995 DirectX(Microsoft):MS Windows 用グラフィック API
Java 言語(Sun Microsystems):ネットワーク向きオブジェクト指向言語
1996 プログレッシブメッシュ(H.Hoppe):プログレッシブ伝送と LOD への応用
1997 VRML97(VRML コンソーシアム):Web3D の ISO/IEC 国際標準
Java3D(Sum Microsystems):Java 用グラフィック API の最初の仕様
1999 映画「トイ・ストーリー2」(Disney Enterprises, Inc):すべて 3D キャラクター
2001 携帯電話用 3D ポリゴンエンジン(J-フォングループなど)
2002 X3D(Web3D コンソーシアム):MS Windows 用グラフィック API
DirectX9(Microsoft):MS Windows 用グラフィック API
3D 対応液晶ディスプレイ搭載携帯電話(3D メガネ不要)
2003 知的 3D バーチャルターミネーター搭載携帯電話:個人の趣味, 嗜好踏まえた
情報配信や会話を展開
6
3 POV-Ray
本章では, 研究に用いた POV-Ray について述べる. POV-Ray とは, レンダリングにレイ
トレーシング法を用いてシーンを作成する 3DCG ソフトウェアである.
3.1 POV-Ray のはじまり
コンピュータネットワークで繋がった世界中のボランティアプログラマによって開発さ
れたフリーレイトレーサーである. 現在も開発が進められ, その開発チームは POV-Ray
Team とよばれている.
POV-Ray は, David K.Buck が作成した DKBTrace というレイトレーサーを元に開発さ
れ, 別のレイトレーサーとして生まれ変わる際に POV-Ray(Persistence of Vision Ray
Tracer)という名前がつけられた.
7
3.2 レイトレーシング法
3DCG では, 画像をコンピュータの計算によって作成する. その計算方法には, Z バッフ
ァ法やスキャンライン法など様々あるが, レイトレーシング法はその中の 1 つである. 最も
高度で複雑な画像を作成する際に力を発揮する.
レイトレーシング法は, その名の通り光線(ray)を追跡(tracing)する方法で光線追跡法と
もよばれる. 光源から出た光を辿りながらそのつど反射光や屈折光などを計算し, これを
繰り返し実行しながら色や光の強さを決めて画像作成を行う.
図 2:(反射・屈折光の追跡過程)
8
この仕組みは, 実世界において目でものを見る仕組みと同じで, 光源と物と目の間のや
り取りを, コンピュータに計算によりシミュレーションしていると考えられる. そのため
に, 他の方法では不可能なリアルで高画質なもの作成することが可能である.
ただ, 光源から出た光の中で目まで到達するのはその中の 1 部であると予想される. 実際
には, 目に届いたものしか見えないため光源のほうから追跡を始めるとそのほとんどが意
味を持たなくなる. そのためにレイトレーシング法では図 3 のように目のほうから追跡を
行っている.
図 3: (レイトレーシング法による光線の追跡)
このように, レイトレーシング法は, 光が物に当たるたびに逐一計算しなければならな
い. そのために, 1 枚の画像を完成させるために膨大な時間と計算が必要になる. ただ, 計
算をするのはコンピュータが最も得意とする仕事の 1 つである.
9
3.3 POV-Ray の特徴
POV-Ray は, コンピュータネットワーク上で生まれ, 現在もネットワークで繋がった世
界中のボランティアプログラマによって開発が進められているため, 最新の GC 技術も追
加され続けている. また, 開発チームはそれらをまったくの無料で配布している. これらを
含めた特徴を説明する.
3.3.1 フリーソフトウェア
POV-Ray は, 誰もが自由に利用できるまったく無料のソフトウェアである.
世界中には様々なコンピュータがあり, POV-Ray もそれらに合わせた様々な種類のもの
が作られ公開されている. そのどれもがすべて無料で公開され, 有料のものはない. また,
常に完全なパッケージとして手に入れることが出来る.
3.3.2 システムの汎用性
POV-Ray は, 世界中のほとんどすべてのコンピュータシステムで利用できる. たとえば,
Windows3.1, Windows95(98), WindowsNT, Macintosh, MS-DOS, Linux, SunOS, Amiga
SGI などである. これ以外にも, 大抵のコンピュータシステムに対応した POV-Ray が存在
します.
その理由としてプログラムのソースコードが公開されていることや, 開発時から様々な
システムで動作させることを考慮していたことなどが上げられる.
3.3.3 データの互換性
POV-Ray で作られたシーンファイルはコンピュータシステムに依存しない. つまり互換
性が完璧であるということだ.
その理由の 1 つに, シーンファイルがテキストファイルであることが上げられる. よって,
エディタやワープロで修正することも可能であり, 電子メールで送信することも可能であ
る.
3.3.4 世界中での利用
POV-Ray の開発や利用には, 世界中の人々がかかわっている. そのために色を指定する
キーワード”color”(米英語)は”colour”(英英語)と書いてもエラーにならないという面白い特
性もある.
10
3.4 高画質, 高性能
POV-Ray は, 様々な場面での使用に十分耐えうる機能を提供する. たとえば, 最大 48bit
ものカラーを扱うことが可能である. これは色数にして 281 兆色にもなる. 一般に 24bit カ
ラーを True Color(約 1600 万色)といい, これが通常 CG 画像で扱うことのできる最大の色
数である. そう考えると, いかに高画質であるかが分かる.
その他, きめ細かな設定が可能なアンチエイリアシング機能, 利用目的に合わせて細か
く選べる画質設定機能, 異なるコンピュータ間で色を同じ状態に保つガンマ補正機能, プ
リミティブとよばれる基本立体などの様々な機能が準備されている. また, これらには適
切なデフォルト値も用意されている.
11
3.5 作業順序
シーンファイルの作成
レンダリングの条件指定
POV-Ray を
用いての作業
レンダリングの実行
画像ファイルの完成
図 4:(POV-Ray による作業の流れ)
(1) 作りたい作品の情報を書いたシーンファイルを作成する. これはテキストファイルで
ある. この中には, 作品に登場するあらゆる物体の位置や大きさや色などの情報を記述
する. 終わったら, “.pov”という拡張子を付けて保存する.
(2) シーンファイルが完成後, それをどのようにレンダリングするのかの条件を指定する.
レンダリングの条件というのは, 作られる画像の大きさや画質, 画像ファイルの種類な
どを指す. 指定には, ファイルに書いて一括指定する方法と, その場で直接指定する方
法とがある. 一括指定する場合は”.ini”という拡張子を付けて保存する.
(3) 用意したシーンファイルを, 指定の条件でレンダリングする. 実行すれば, 後は待つの
みである. 複雑な作品の場合は数時間かかることもある.
(4) ハードディスクに指定した形式の画像ファイルができる. 完成作品を確認して印刷な
どを行う.
12
4 レンダリング
本章では, 実際に POV-Ray を用いてレンダリングを行う. 前半に簡単な作品を作って特
に今回の研究で重要な機能を取り上げて紹介する. 後半では, モデルの掛時計のレンダリ
ングを行う.
4.1 作品例
図 5 は, POV-Ray の作業画面である. 今メッセージが出ている場所にシーンを記述してい
く. プログラミング言語は, シーン記述言語といわれるある対象を必要なときに呼び出す
言語を用いる.
図 5:(POV-Ray version3.6.1 の作業画面)
13
図 6 は, レンダリングの条件指定を行う作業画面である. 先でも述べたように, その場で
条件指定を行うときにこの作業画面が必要となる. この場面では, 画像の横幅を 200 ドット,
縦幅を 150 ドットのサイズ, BMP 形式で出力するように指定している.
図 6:(レンダリング条件指定画面)
14
これらを踏まえ, 4 つの作品を示す. レンダリング条件はすべて揃えている.
図 7:(赤ガラス)
図 8:(真鍮)
図 9:(石)
図 10:(木)
1 つ目に紹介する機能がテクスチャである. テクスチャとは, オブジェクトに質感を与え
るものである. 通常のグラフィックソフトでは, ピクチャマッピングとよばれる絵や画像
などをオブジェクトの表面に貼り付ける方法が用いられる. しかし, POV-Ray ではソリッ
ドテクスチャといわれる空間的な中身まで詰まったオブジェクトを生成する. そのため,
上図のくりぬかれた部分に不具合が生じることが無い.
2 つ目に, フィニッシュとよばれる光の設定である. 実世界には様々な光が存在し, 反射
屈折しあってオブジェクトを照らしている. POV-Ray では, これらの複雑な光跡を表現す
るための機能が備わっている. 上手では, レンダリング条件が同じでもあるにかかわらず,
ハイライトに違いが見られる. これは POV-Ray が自ら, テクスチャとの関係を計算に含ん
で判断しているからである.
これらの機能は, もちろんユーザーが指定することも可能である.
15
4.2 掛時計
今回は, ゼミ室の掛時計をモデルにレンダリングを行った.
はじめに, ローカル座標系にモデルを作
成する. 今回のモデル作成にはプリミティ
ブとよばれる基本立体を約 20 個組み合わ
せて作成した. この時点で, モデルの数学
的形状をとらえることが重要である. 数字
も表現したかったが, 特殊なフォントであ
ったため省略した. この時点では, 針の中
心を原点にしている. 光源は, モデルの手
前に白い点光源を 1 つ配置した.(図 11)
図 11:(モデルの作成)
次にモデルの配置を行う. ここからはグ
ローバル座標系を用いて作成を行う. まず,
台と壁を作成する. この 2 つは無限平面で
ある. また, 針をモデルの時刻に合わせる.
これは, モデル作成の時点で動かすことが
分かっていたので, 回転移動の数値を変え
るだけである. しかし, POV-Ray は左手座
標系であるため, 通常とは逆になることに
注意しなければならない. ここまでは, プ
ログラミングの技術さえあれば誰でも作成
図 12:(モデルの配置)
可能である.
最後に, 場面に合わせたレンダリングを行
う. 光源を, 蛍光灯を想定した面光源に代
え, 台の鏡面反射の設定, モデル表面の透
明なフィルタなどの様々な設定を行った.
この作業は, 光の性質を理解し, POV-Ray
の機能も使いこなせないとなかなかモデル
写真に近づけることが出来ないと感じた.
また, センスや根気も必要である.
図 13:(場面に合わせたレンダリング)
16
4.3 完成作品と実写の比較
それでは, 今回の完成作品と実写の比較を行う.
図 14:(完成作品)
図 15:(モデル写真)
まず形状的な面では, 短針と長針の形に違いが見られる. これだけ拡大すると大きな違
いである. また, 時計の円が若干小さいかもしれない. そして, 両端の金縁も若干太いよう
に感じる. 秒針と 5 分おきのマークは場所も良く表現できたように思う.
次に色彩面では, 両端の金縁が結構違っている. 時計の透明なカバーフィルタや背景の
カッターマットはかなり良く表現できているように思う.
最後に, 最も難しかった光跡面での評価を行う. まず, 空間の明るさは近いがモデルの明
るさに違いが見られる. また, 金縁の反射光がまったく異なる. 今回のレンダリングにおい
て一番の失敗のように思う. しかし, 台へのモデルの映り込みは成功である. ただ, モデル
写真には天井の蛍光灯と模様がうっすらうつっている. そして, モデルの中心を横切るよ
うに影ができてしまっている. ワールド座標系において y 軸が 0 の場所であるので恐らく台
の反射光が強く出てしまったようである.
以上のことにより, やはり実写を再現するのはかなり困難な作業であることを感じた.
ソフトを使いこなすだけではなく, 光の性質やモデルのおかれている環境を把握しないと,
忠実に再現することは困難である.
17
5 考察
本研究では, 身近にある簡単なものをモデルにして実際にレンダリングを行った. そし
て, この作品と実写を比較することによりその可能性の評価を行った. やはり, 実物通りに
表現することは大変難しく感じた. レンダリングの際に苦労したことは, 照明の設定であ
る. 特に自然光が入ってきた場合には再現することが不可能に近いように感じた. モデル
にした掛時計は数学的な形状であることもあり容易に表現できたように思う.
今回の研究では, POV-Ray という私にとって始めてのレイトレーサーを利用したが, こ
のソフトウェアを使えるようになるまでに時間を取り過ぎてしまったように感じる. ただ,
このソフトを使っているうちに様々な魅力を発見できた. 今後このソフトを利用する機会
があれば, 今回の作品より完成度の高いものを作れるだろう.
18
6 参考文献, 参考 website
参考文献
[1] 新編 画像解析 ハンドブック, 高木幹夫 下田陽夫, 東京大学出版会(2004)
[2] 明解 3 次元コンピュータグラフィックス, 荒屋真二, 共立出版(2003)
[3] POV-Ray ではじめるレイトレーシング, 小室日出樹, アスキー出版局(1999)
参考 website
[1] http://www.povray.org
[2] http://www.nikonet.or.jp/spring/sanae/cg/pov/pov.html
[3] http://www.asahi-net.or.jp/~va5n-okmt/pov/index.html
[4] http://kobe.cool.ne.jp/campanella/link.html
[5] http://nishimulabo.edhs.ynu.ac.jp/POV_3.5/index.html
[6] http://b.webring.com/hub?page=1&ring=povrayring&list
19