このページはez-HTML7.71で作成しました。

R.Buss氏 Ray Tracing プログラムを動かす

2022/8/31

これは、下の参考[1]の著者作成のソフトウェア「Ray Trace software package release 3.3」を、焦点を絞ってテストした結果報告である。
レイトレースは理論的に多岐にわたり難しい。しっかりとした基礎の上に レイトレースのプログラムをやりたいと思っている人の参考になれば幸いです。

実行例
uthaPhong uthaCookTorrance
Utah Teapot Phong Utah Teapot Cook_Torrance

bezier texture
BezierFlower Texture(BMP)

準備-プログラム本体

準備-変更点

動作環境

プログラムには"Visual C"プロジェクトファイルが添付されているが、 自分は"VC"を使ったことがないので、以下のような環境になった.

ビルド

  1. 以下のことは各自の責任でお願いします.
  2. RayTraceフォルダに差し替えファイルとcoldeblocksプロジェクトファイルを入れ、 codeblocksからプロジェクトファイルを開き"Build".
  3. プロジェクトファイルがやっていることは、使用フォルダ内の「すべて」のファイルをコンパイル・リンクし、 "-lglu32 -lopengl32 -lfreeglut"でopengl関係のライブラリをリンクさせることである.
  4. mingwでコンパイルするとエラーがでる.エラーの内容とそのファイル名、対処を下の表にした. ファイル名は変更しない.

    エラー ファイル・箇所 関数・変数
    余分なクラス修飾子 OpenglRender/GlutRenderer.h|89|
    Graphics/TextureMapBase.h|45|
    VrMath/LinearR4.h|207|
    InitLightsAndView( const...)
    ReflectDirToCubeMap( const ...)
    operator*= (const ...)
    処理
    関数の前のクラス修飾子を消去.

    エラー ファイル・箇所 関数・変数
    あいまいな変数? Graphics/CameraView.h|292| SetClippingDistances( double near...)
    処理
    エラーの原文は、"expected primary-expression before ';'"である.
    意味がいまいちだが、ここに使われている"near","far"が 予約語なのか?
    これらはlocal変数なのでnear->n,far->fに変更する.
    それと共に、この関数のクラス内宣言(103行)の引数に"near","far"が使われているが、
    これらを消去する.

    エラー ファイル・箇所 関数・変数
    呼ばれた関数が存在しない Graphics/RbgImage.h
    Graphics/RbgImage.cpp
    DrawToOpenglBuffe(..)
    処理
    RgbImage Version 4.0をダウンロード(zip)して上のファイルと置き換える.

  5. ウォーニングは無視する.

プログラムについての補足

他の作成プログラム

参考

  1. S.R.Buss 3-D Computer Graphics - A Matehematical Introduction with OpenGL
    Cambridge University Press 2003
  2. OpenSCAD https://openscad.org/
  3. BezierSurface https://openhome.cc/eGossip/OpenSCAD/BezierSurface.html
  4. The Utah Teapot http://www.holmes3d.net/graphics/teapot/