3DCG を描くための方法の開発

１

5年B組

川口恭平

指導教諭

末谷健志

要約

私は、3DCG（三次元コンピュータグラフィックス）を計算、描画するためのアルゴリズム、およびプログラムの研究を行い、既存の他アプリケーション、ライブラリ（DirectX,OpenGL等）に依存せず 3DCG を描画することが出来るソフトの開発に成功した。
また、この成功により、3DCG 描画に関する基礎的な知識や技術を獲得でき、より高速、より高画質の 3DCG を描くための方法を考える足がかりを得ることが出来た。また、ヴァーチャルリアリティーの実現など、オリジナルの 3DCG 描画ソフトを応用したアプリケーションの開発が可能になった。
キーワード
3DCG、座標回転、透視図法、隠面処理、ワイヤーフレーム、レイトレーシング、Ｚバッファ

２

研究の背景

今日、パソコンの普及と高速化によって、3DCG を利用したコンテンツが増え、Shade など、市販のアプリケーションを使えば誰でも手軽に 3DCG を楽しむことが出来るようになった。
3DCG の描画は、今後さらに拡大する可能性をもった技術である。このような中、私は、より高速でより高画質な 3DCG を描くための方法を研究したいと考えた。
しかし、3DCG を描くための方法やその処理は、アプリケーションが自動で行うため、ユーザーにとってはブラックボックスになっている。かといって、3DCG 描画の方法を調査するだ
けで、実際にプログラムなどに生かすことができなければ、むなしい調べ学習に終わるだけである。
そこで私は、3DCG 描画の勉強もかねて、他アプリケーションやライブラリに頼らず 3DCGを描画することができるソフトを開発することを試みた。

３

目的

他アプリケーションやライブラリに頼らず 3DCG を描画することができるエンジンを開発する。搭載する描画手法は、次の３つとする。
① ワイヤーフレーム法（図 1.1）
② レイトレーシング法（図 1.2）
③ Ｚバッファ法（図 1.3）
また、開発した描画エンジンの応用も検討する。

４

研究内容においてその結果を表示する。

（１） 仮説研究Ⅳ

仮説Ⅰ
ワイヤーフレーム法で 3DCG を描画できる。

Z バッファ法

まず描画の対象となる図形をポリゴン（多角形）で分割し、図形をポリゴンの集合と仮説Ⅱ
レイトレーシング法で 3DCG を描画できる。

して考える。座標回転や透視図法処理にはポリゴンの頂点座標のみを考え、平面に投仮説Ⅲ
Z バッファ法で 3DCG を描画できる。

影後、多角形を塗りつぶす。塗りつぶす際に、Ｚバッファを用いて奥行きに関して比上記仮説を検証するソフトを開発する環較を行い、隠面処理をおこなう。また、研境は以下の通りである

究Ⅲにおいて実現した光の効果をＺバッフ

OS：Windows XP

ァ法においても実現し、画面上に表示する。

SP2

IDE: MicrosoftVisualBasic6.0
SP6 Enterprise Edition＜隠面処理とは＞
人が物体を見る際、奥にある物体は手前に（２） 研究方法ある物体によって隠される。このことは現研究Ⅰ

実ではあたりまえであるが 3DCG として計算

ワイヤーフレーム法与えられた頂点座標を平行移動、座標回する場合、奥にある物体の手前にある物体転、透視図法処理を行ったの後、各頂点をによって隠された面を描かないようにする線分で結び、画面上に表示する。

処理が必要である。この処理のことを隠面処理といい 3DCG 描画において重要な処理の研究Ⅱ

レイトレーシング法ひとつである。

ベクトル方程式により直線（式 1.1）や球（式 1.2）を定義し、それらから交点の位置＜Ｚバッファとは＞ベクトルまでの距離（相対）を導く式（式図形を平面に投影する際、その画像情報1.3）を得る。この式から、交点距離の比較のメモリとは別に用意する、奥行きに関すを画素ごとに行い、隠面処理を実現する。

る一時メモリのこと。

研究Ⅲ

光の効果について① 環境光（図 2.1）
② 局所拡散反射（図 2.2）
③ 局所鏡面反射（図 2.3）の３種類の物理モデルをもとに、視点における光の見え方を計算し、3DCG として表現する。また、視点や光源の位置などから、陰影になる条件（図 3.1～3.4）を導き、3DCG

（３） 研究の結果る。
―研究Ⅲ―

研究Ⅰ

ワイヤーフレーム法によって次の画像（図 4.1, 図 4.2）を得た。

反射光における結果の画像から、光の効
果によって物体表面の色が変化しているのがわかる。しかし利用した物理モデルは、研究Ⅱレイトレーシング法によって次の画像（図 5.1）を得た。

厳密な解ではなく、あくまで近似であるため、多少の不自然さが画像にも見える。また、現実にある素材の見え方の再現をおこ研究Ⅲ

反射光における結果として次の画なうための各設定値（拡散反射係数など）

像（①図 6.1、②図 6.2、③図 6.3、①+②+を決定するのが難しい点などから、今回実③図 6.4）を得た。また、陰影処理の結果と現できた光の反射光の効果はあくまで擬似して次の画像を得た（6.5）

的なものであるといえる。このことから、より現実に近い光の反射光の表現、また、研究ⅣＺバッファ法によって次の画像（図 7.1）を得た。また、光の効果を考慮にいれた結果として次の画像（図 7.2）を得た。

映り込みや、屈折現象などの高度な光の効果の表現が課題として考えられる。
陰影処理の結果の画像からは、陰影処理によって物体に陰影がついたのが確認でき以上の結果から、仮説Ⅰ,Ⅱ,Ⅲを実証するる。現実の世界では影は境界がぼやけていことが出来た。

るが、それは光源が有限の大きさを持っているからであり、光源を点光源として計算５考察したので今回の画像は影の境界がシャープ―研究Ⅰ―になったと考えられる。このことから、次実現がたやすく、処理が単純なので高速の研究では有限の大きさを持った光源につで、簡易的な 3DCG として様々なものに応用いての影の出来方について研究が考えられできそうである。しかし表現力に乏しく、る。

位置や形状の正確な把握が難しく、フォト―研究Ⅳ―リアリスティックな利用には向いていない。

レイトレーシング法に比べると、処理そ出来るだけ高速な処理を必要とするシミュのものは複雑だが、画素毎ではなく図形毎レーションや設計などでの利用が考えられに処理を行うので、比較的高速に処理が出る。

来た。画質については、結果の画像（図 6.2）

―研究Ⅱ―

を見てもポリゴンに分割したことによる角結果の画像から、隠面処理が出来ているばりはあるものの、あまり差は無いようにのがわかる。すべての画素ごとに距離を計みえるが、視点を図形に近づけた場合、ポ算しているので、視点を近づけても得られリゴンの分割数が少ないと、角ばりが大きる画像は荒くならないが、計算量が多く、く出てしまう。また、透視図法処理は頂点描画に非常に時間がかかることが問題であ座標のみに行われるので、面については透視図法処理による効果が考慮されず、ポリになるばかりか、その分処理が遅くなってゴンの大きさが大きくなると、それが考慮しまい、画質だけならそれでもレイトレーされないことによるゆがみが増大するので、シングが圧倒的に勝っているので、Ｚバッ必要に応じてポリゴンによる図形の分割数ファのメリットがなくなってしまう。このを多くする必要があると考えられる。

ことから分かるとおり、それぞれの 3DCG 描

光の効果を考慮して描画した結果をみる

画方法は向き不向きがあり、用途に応じて、と、明らかに表面がゴツゴツしているのが適切な 3DCG 描画方法を選ぶべきだというこ分かる。これは、描画高速化のため、図形とが分かる。

を多角形で分割したためであると考えられる。また、陰（自身による光の遮りによっ６

まとめと今後の課題て生じる暗闇）の効果は出ているが、影（他今回の研究において 3 種類の 3DCG 描画すの物体による光の遮りによって生じる暗るためのアルゴリズム、およびプログラム闇）の効果については反映されないことがの研究を行い、既存の他アプリケーション、わかる。以上のことから、レイトレーシンライブラリ（DirectX,OpenGL 等）に依存しグ法と比較したとき、隠面処理についてはない 3DCG 描画ソフトの開発に成功した。開あまり差は出ないが、その後の光の効果を発に成功し 3DCG 描画に関する基礎的な知識表現する処理について、大きく差が出るこや技術を獲得できたことにより、より高速、とが分かった。

より高画質の 3DCG を描くための方法を考える足がかりを得ることが出来た。またオリ―全体を通して―今回実現できた 3DCG 描画方法の特徴を次

ジナルの 3DCG 描画ソフトを応用したアプリケーションの開発が可能になった。の表（表 1）のようにまとめることが出来る。

今回実現できた 3 種類の 3DCG 描画アルゴ

これらの 3DCG 描画方法は表から読み取れる

リズムはどれも有名なものばかりで、無論通り、他のものに秀でている部分と劣って自分自身で開発したものではない。これかいる部分をもっている。たとえばレイトレ

らの課題としては、これらの 3DCG 描画アルーシングとＺバッファの性能を比べると、ゴリズムの改良や新たな 3DCG 描画アルゴリ

レイトレーシングは光の効果の再現や画質ズムの開発をしていくことが挙げられる。

でＺバッファに勝るが、描画に非常に時間具体的な例としてはＺバッファとレイトレがかかるという欠点があり、Ｚバッファはーシングを組み合わせ、双方の利点を得ら高速に描画できるが、画質があまりよくなれるような新たな 3DCG 描画アルゴリズムをいという欠点がある。もちろんＺバッファ現在開発中である。また、今回実現できたも画質を高めることができ、Ｚバッファでソフトの応用として、モーションキャプチは曲面をポリゴンで分割するため、描画しャーと組み合わせることによるヴァーチャた画像の曲面もカクカクしているが、分割ルリアリティーや、多次元シミュレーショせずなめらかな曲線が描画可能なことが確ンの結果表示などを模索している。

かめて分かっている。しかし、処理が複雑７

参考文献・サイト

http://www.iamas.ac.jp/~tacwon/render.
html#history

８

謝辞

今回の研究に協力してくださった末谷先生や河合先生、佐久間先生にこころよりお礼申し上げます。
図 1.3□図、式、表□rp :視線上の点の位置ベクトル
re :視点からスクリーン上の一点までの方向ベクトル

rc :球の中心の位置ベクトルr
E0 :視点の位置ベクトルr r r
p = e t + E0
式 1.1
図 1.1r r r r( p − c)⋅ ( p − c) = r2
式 1.2t=

図 1.2

ただし− β ± β 2 − αγαr α =| e | 2r rr  β = e ⋅r( E 0 − c )  γ =| E − cr | 2 0
式 1.3

図 2.1± cos θ ≥ 0± cos ϕ ≥ 0∴ cos θ cos ϕ ≥ 0r r r r⇔ ( N ⋅ I )( N ⋅ V ) ≥ 0
図 3.2
陰になるパターンになるパターン

図 2.2

図 2.3± cos θ ≥ 0m cos ϕ ≥ 0∴ cos θ cos ϕ ≤ 0r r r r⇔ ( N ⋅ I )( N ⋅ V ) ≤ 0
図 3.2
影になるパターンになるパターン

陰にならないパターンにならないパターン図 3.3
影にならないパターンにならないパターン

図 5.1
①周囲光

図 3.4

図 6.1②局所拡散反射光

図 4.1

図 4.2

図 6.2

③局所鏡面反射光

図 7.1
図 6.3
①②③統合
①②③統合

図 7.2

ワイヤーフ レイトレー Ｚバッ
図 6.4

項目

レーム

シング

ファ

処理速度

◎×

○

面の表現

×

○

△

光の効果

×

○

△

陰影の効果

×

○

△

モデリングのしやすさ

○

△

○

表1

図 6.5