3DCG を描くための方法の開発
6年A組

川口恭平

指導教諭 末谷健志

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

２．研究の背景することを試みた。

今日、パソコンの普及と高速化によって、3DCG を利用したコンテンツが増え、Shade３．目的など、市販のアプリケーションを使えば誰他アプリケーションやライブラリに頼らでも手軽に 3DCG を楽しむことが出来るようず 3DCG を描画することができるエンジンをになった。3DCG の描画は、今後さらに拡大開発する。搭載する描画手法は、次の３つする可能性をもった技術である。このようとする。

な中、私は、より高速でより高画質な 3DCG

① ワイヤーフレーム法（図 1.1）を描くための方法を研究したいと考えた。

② レイトレーシング法（図 1.2）

しかし、3DCG を描くための方法やその処理は、アプリケーションが自動で行うため、ユーザーにとってはブラックボックスにな③ Ｚバッファ法（図 1.3）
また、開発した描画エンジンの応用も検討する。っている。かといって、3DCG 描画の方法を調査するだけで、実際にプログラムなどに４．研究内容生かすことができなければ、むなしい調べ（１） 仮説学習に終わるだけである。

仮説Ⅰ

そこで私は、3DCG 描画の勉強もかねて、他アプリケーションやライブラリに頼らず3DCG を描画することができるソフトを開発

ワイヤーフレーム法で 3DCG を描画できる。
仮説Ⅱ
レイトレーシング法で 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）画像（図 4.1, 図 4.2）を得た。

ワイヤーフレーム法によって次の③ 局所鏡面反射（図 2.3）の３種類の物理モデルをもとに、視点にお研究Ⅱける光の見え方を計算し、3DCG として表現画像（図 5.1）を得た。

レイトレーシング法によって次のする。また、視点や光源の位置などから、陰影になる条件（図 3.1～3.4）を導き、3DCG研究Ⅲにおいてその結果を表示する。

像（①図 6.1、②図 6.2、③図 6.3、①+②+

反射光における結果として次の画③図 6.4）を得た。また、陰影処理の結果と研究Ⅳ Z バッファ法して次の画像を得た。（6.5）

まず描画の対象となる図形をポリゴン（多角形）で分割し、図形をポリゴンの集合と研究Ⅳして考える。座標回転や透視図法処理には（図 7.1）を得た。また、光の効果を考慮にＺバッファ法によって次の画像いれた結果として次の画像（図 7.2）を得た。

映り込みや、屈折現象などの高度な光の効果の表現が課題として考えられる。

以上の結果から、仮説Ⅰ,Ⅱ,Ⅲを実証することが出来た。

陰影処理の結果の画像からは、陰影処理によって物体に陰影がついたのが確認できる。現実の世界では影は境界がぼやけてい

５．考察

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

リアリスティックな利用には向いていない。

れる。

出来るだけ高速な処理を必要とするシミュレーションや設計などでの利用が考えられる。

―研究Ⅳ―
レイトレーシング法に比べると、処理そのものは複雑だが、画素毎ではなく図形毎―研究Ⅱ―に処理を行うので、比較的高速に処理が出結果の画像から、隠面処理が出来ている来た。画質については、結果の画像（図 6.2）のがわかる。すべての画素ごとに距離を計を見てもポリゴンに分割したことによる角算しているので、視点を近づけても得らればりはあるものの、あまり差は無いようにる画像は荒くならないが、計算量が多く、みえるが、視点を図形に近づけた場合、ポ描画に非常に時間がかかることが問題であリゴンの分割数が少ないと、角ばりが大きる。

く出てしまう。また、透視図法処理は頂点座標のみに行われるので、面については透―研究Ⅲ―

視図法処理による効果が考慮されず、ポリ反射光における結果の画像から、光の効ゴンの大きさが大きくなると、それが考慮果によって物体表面の色が変化しているのされないことによるゆがみが増大するので、がわかる。しかし利用した物理モデルは、必要に応じてポリゴンによる図形の分割数厳密な解ではなく、あくまで近似であるたを多くする必要があると考えられる。

め、多少の不自然さが画像にも見える。ま光の効果を考慮して描画した結果をみる

た、現実にある素材の見え方の再現をおこと、明らかに表面がゴツゴツしているのがなうための各設定値（拡散反射係数など）分かる。これは、描画高速化のため、図形を決定するのが難しい点などから、今回実を多角形で分割したためであると考えられ現できた光の反射光の効果はあくまで擬似る。また、陰（自身による光の遮りによっ的なものであるといえる。このことから、て生じる暗闇）の効果は出ているが、影（他より現実に近い光の反射光の表現、また、の物体による光の遮りによって生じる暗闇）の効果については反映されないことがの研究を行い、既存の他アプリケーション、わかる。以上のことから、レイトレーシンライブラリ（DirectX,OpenGL 等）に依存しグ法と比較したとき、隠面処理についてはない 3DCG 描画ソフトの開発に成功した。開あまり差は出ないが、その後の光の効果を発に成功し 3DCG 描画に関する基礎的な知識表現する処理について、大きく差が出るこや技術を獲得できたことにより、より高速、とが分かった。

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

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

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

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

リズムはどれも有名なものばかりで、無論通り、他のものに秀でている部分と劣って自分自身で開発したものではない。これかいる部分をもっている。たとえばレイトレらの課題としては、これらの 3DCG 描画アルーシングとＺバッファの性能を比べると、ゴリズムの改良や新たな 3DCG 描画アルゴリ

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

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

かっている。しかし、処理が複雑になるばかりか、その分処理が遅くなってしまい、

７．参考文献・サイト

画質だけならそれでもレイトレーシングがhttp://www.iamas.ac.jp/~tacwon/render.

圧倒的に勝っているので、Ｚバッファのメhtml#history

リットがなくなってしまう。このことから分かるとおり、それぞれの 3DCG 描画方法は向き不向きがあり、用途に応じて、適切な

８．謝辞
今回の研究に協力して下さった末谷先生、3DCG 描画方法を選ぶべきだということが分

河合先生、佐久間先生にこころよりお礼申かる。

し上げます。

６

まとめと今後の課題

今回の研究において３種類の 3DCG 描画するためのアルゴリズム、およびプログラム  
p = e t + E0

□図、式、表□式 1.1

   ( p − c) ⋅ ( p − c) = r 2
式 1.2t=
図 1.1
ただし− β ± β 2 − αγα α =| e | 2  
 β = e ⋅( E 0 − c )
 γ =| E − c | 2 0


式 1.3

図 1.2

図 2.1

図 1.3


p :視線上の点の位置ベクトル
e :視点からスクリーン上の一点までの方向ベクトルc :球の中心の位置ベクトル
E0 :視点の位置ベクトル

図 2.2

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

陰にならないパターン

図 3.3± cos θ ≥ 0± cos ϕ ≥ 0∴ cos θ cos ϕ ≥ 0   ⇔ ( N ⋅ I )( N ⋅ V ) ≥ 0

影にならないパターン

図 3.1
陰になるパターン
図 3.4

図 4.1

②局所拡散反射光

図 4.2

図 6.2③局所鏡面反射光

図 5.1
①周囲光

図 6.3
①②③統合

図 6.1

図 6.4

ワイヤー レイトレ Ｚバッフ
項目

フレーム ーシング

ァ

処理速度

◎×

○

面の表現

×

○

△

光の効果

×

○

△

陰影の効果

×

○

△○

△

○

モデリングのしやすさ
図 6.5

図 7.1

図 7.2

表1