Cでレイトレーシング 第2回
by ULproject for C (Windows)
レイトレーシングの仕組みや
式の意味、導出などは
N88-BASICでかんたんにレイトレーシング第1回~第8回
N88-BASICでかんたんにレイトレーシング第1~8回
続編BASICでレイトレーシング第1回~第7回
16回分の記事で紹介しています
N88-BASICでかんたんにレイトレーシング第9回
のN88-BASIC用と
N88-BASICで3DCGの行列(matrix) 第1回~
のN88-BASIC用を組み合わせてCで書きました
球0は減衰しない点光源(陰対応のRGB版)
反射と透過の追跡
大文字のみはベクトル、小文字のみはスカラー
ついでに以下の操作できるキーを追加しました
0 1 2 3 4、で動かす球の選択
9、で光源を水色の球内へ
@ : ; ] p [、で球を上下左右後前に動かす(+shiftで移動大)
q w e、で点の大きさ1 2 4
(点が大きいほうが荒いので速い)
↑ ↓ ← → / \、で視点を上下左右後前に動かす(+shiftで移動大)
スペースで後ろを向く
a、でラジコン方式、sで視点移動方式
enter、でリセット
Windows用のプログラムは長くなりますので
GlutとOpenGLを使用してWindowと描画関係を
簡素にしています
ただし、CONSOLEアプリとWIN32アプリの
両方でコンパイルできるようにしてあります
その他、詳しくは
Cでレイトレーシング 第1回
を見て下さい
ray302.c、mat302.h、mat302.c
のコンパイルには
Glut.h , Glut32.lib
が必要で
実行には
Glut32.dll
が必要です
GLUT(OpenGL Utility Toolkit)はサポートが終了
していて入手困難な場合は
GLUT互換のfreeglutが存在するらしいですので
こちらを試して見て下さい
どちらも、入手不可で、コンパイルなしで
実行する場合は
ray302.exe
を、実行して下さい
こちらは、GLUTを使用せずにコンパイル
しているため、
Glut32.dll
は必要ありません
(OpenGLを使用するためのdllは
Windowsに標準搭載だったはずなので
そのまま動くはずです)
続編BASICでかんたんにレイトレーシング第7回
のVL-BASIC拡張命令のレイトレーシング
(VL-BASIC付属サンプルのb/g6.bas)
より工夫していない分、動作速度は遅いですが
了承願います
ray302.c, mat302.h, mat302.c, ray302.exeを含む
cl30201.zipは
以下のリンクからダウンロードできます
Readme.txtを読んで遊んで見て下さい