レイトレーシングの学習・実装

情報技術科 No.13 小林侑翔

①研究の背景

普段無意識の内に様々な場所で目にするCGだが、どのような技術を用い、どのように作られているのか興味を持ったから。

②仮説とねらい

CGに利用されるレイトレーシングについて研究することで、身近な情報技術について知れ、関心が広がると思った。

レイトレーシングで描画された画像例

③研究内容

レイトレーシングについて基本的な仕組みをまとめる。

レイトレーシングを実装する。

④技術的知識

知識面ではほぼゼロからのスタートなので、学習するところから始める。

レイトレーシングとはレイをとばすことで、当たったところの色を取り、レンダリングすること。

レイトレーシングの仕組み

実装にはc++、出力にはppmフォーマットを用いる。

⑤取り組んだ内容

いくつかのクラスをつくり、機能を実装した。

代表的なもの

  • レイ
    • P(t)=A+tb
    • Pは直線状の点
    • Aは原点
    • bは方向
    • t(ここでは正でPの前方のみを表す)
  • カメラ
    • Lookat方式(ビュー変換)でカメラ位置、対象位置、カメラの傾きからカメラの位置と向きを表すベクトルを計算
  • 材質など
    • ライト(物体に発光色を返す関数を追加)
    • 拡散反射(乱反射)
    • 鏡面反射(金属の場合の反射)
    • アンチエイリアシング(ピクセルにたくさんのレイをとばし、色をたくさん取得して、平均を求めることで画像がなめらかに)

⑥結果

機能のうちの一つのアンチエイリアシングを実装することで画像の品質を変化させることができた。

1ピクセル当たり100
1ピクセル当たり5000

最終的には上のような画像が生成できた。

光源の位置を変えることで影の位置も変化している

⑦感想・考察

CGについて学ぶには数学などたくさんの知識が必要であること、近年のCG技術はとても高度なものだということが分かり、その凄さを感じた。

実際活動するにあたっては画像を生成する際にとても時間がかかり、確認が大変だった。

レイトレーシング以外のCG技術も調べたことにより、CGについて少なからず理解を深めることができた。

コメントを残す

メールアドレスが公開されることはありません。