■ 2009年09月14日 [OpenGL][GLSL][ゼミ] 第11回 拡散反射光による陰影
固定機能ハードウェアとプログラム可能ハードウェア
固定機能ハードウェアは処理内容をハードウェアで実装しているので, 同じ処理内容 (かつ, 同程度のハードウェア量・クロック) なら, 一般的にプログラム可能ハードウェアよりも高速です. しかし, ハードウェアで実装すると「できること」が決まってしまうので, 多様な処理に対応するために, ある程度汎用的に作っておかなければなりません. そのため, 処理内容によっては不要な手順が含まれてしまうことがあります. その点でプログラム可能ハードウェアは, 目的を達成するのに最適な手順が選択できるため, 同じ目的に対して固定機能ハードウェアより高速な処理が行える可能性があります.
■ 2009年09月12日 [OpenGL][GLSL][ゼミ] 第10回 球を三角形で描く
■ 2009年09月10日 [OpenGL][GLSL][ゼミ] 第9回 球を線で描く
3D プログラミングは難しい
shi3z さんの日記「僕が3Dプログラマをやめた理由 または3Dプログラミングを学ぶべき6つの理由」に, うなずくところがたくさんありました. 本当に, 3D プログラミングは難しいんです. 意義のある成果を出そうとすると, とてつもなく難しいところに分け入らなければなりません. それで, いつもへこたれてしまいます. だから1年生向けの授業で, つい「3D CG ってこんなに難しいんだよ, だからいっぱい勉強しよう」みたいなことを言って, 嫌われてしまいます. でも, CG って面白いんです. 私が CG に出会った 30 年前も, 今も変わらず面白いです. みんな, 3D CG プログラミングやろうよ.
■ 2009年09月09日 [OpenGL][GLSL][ゼミ] 第8回 指標を用いた図形の描画
間に合わん
授業期間中だろうが夏休みだろうが, 延々と講義資料ばかり作っている気がします. それなのに, Web 上のものでも "find public_html -type f | wc -l" で 7240, "find public_html -type f -name '*.html' | wc -l" で 1993, "du -s -k public_html" で 635184 くらいしかありません (1万ファイル / 1GB は突破していると思ったんだけどな). これには, この blog や研究室のホームページなんかは含んでませんけど, 量の割に全然管理できてません. もう何がなんだかわかりません. 何をするにも時間がかかりすぎます.
■ 2009年09月07日 [OpenGL][GLSL][ゼミ] 第7回 カメラパラメータ
レンズの画角
スクリーン上の表示領域を指定して視野錐台を設定する方法は, 柔軟ですが, 直感的に理解しやすいとは言えません. そこで, カメラの投影方法にならって透視投影の変換行列を決める方法が用いられます. 現実のカメラではスクリーン (フィルムや撮像素子) の大きさが固定されてるので, スクリーンに投影される範囲は (near に相当する) レンズの焦点距離によって決まります. しかし, コンピュータでは決まった大きさのスクリーンを想定する必要がありませんから, スクリーンの大きさに依存しない方法としてレンズの画角 (field of view - fov ですが, ここでは fovy とします) を用います.
■ 2009年09月02日 [OpenGL][GLSL][ゼミ] 第6回 視点の移動
クリッピング空間の奥行き
OpenGL の解説には, しばしば「初期状態では, 視線は Z 軸の負の方向に向いている」と書かれています (私もそう書いてしまいます↓). xy 平面については確かにその通りなんですけど, z 方向についてこれを鵜呑みにすると, 混乱することがあります (私はしました).
■ 2009年08月29日 [OpenGL][GLSL][ゼミ] 第5回 座標変換
バージョンアップ
自宅の iMac の OS を Snow Leopard にしました.OS をバージョンアップをすると定常状態に落ち着くまでしばらくかかるんですけど, 今回は更新前と全然変わりなく安定して動いています. いやぁ起動も速いし Firefox もサクサク動くし, Canvas X も Rosetta で一応動きます (日本語の入力ができないけど). あと, このブログを動かしていたマシン (Celeron 1.4GHz, 箱は10年物!) も, 元 M 君マシン (Athlon XP 3200+) に置き換えました. だいぶ軽くなりました. こいつの OS も VineLinux の 5.0 に更新したいんですが, なかなか取りかかれません. tDiary も 2.2.2 に更新したいんですが, なんだかエラーが出るのでちょっとペンディングしています.
■ 2009年08月28日 [OpenGL][GLSL][ゼミ] 第4回 図形の描画
描画手順の変化
OpenGL では, 描画する基本図形 (primitive) の種類を指定した後, 図形を構成する頂点情報を送って図形を描画します. 従来は glBegin() で描画する基本図形を指定し, glEnd() までの間で glVertex*() や glNormal*(), glTexCoord*() などで頂点情報を送ることができました. OpenGL 3.0 以降において前方互換を指定すると, これらは使えなくなります.
■ 2009年08月27日 [OpenGL][GLSL][ゼミ] 第3回 シェーダプログラム
固定機能の廃止
レンダリングパイプラインにおいて固定機能ハードウェアで実装されていた機能が廃止された場合, それらをシェーダで実装しなければ図形を描くことができません. このため, OpenGL を使ってプログラムを書く際には, CG の基礎的な理論に関する知識が必須になりました. CG の授業をしていて, 内心で「でもこれはハードウェアに組み込まれてるんだよな」とか思ったりしてましたけど, 無駄ではなかったんだと胸をなでおろしていたりします.
■ 2009年08月26日 [OpenGL][GLSL][ゼミ] 第2回 準備
昼食
私が学生の時, ボスはほぼ毎日研究室のメンバーと昼食を食べに行っていました (昼になると「メシ行こかぁ〜」と声をかけてきた). でも, 私自身はそういうことを全然していません. 弁当を持参していることもありますが, 学生さんが怖いというか, 声をかけづらいということもあります. 学生さんに命令形でお願いすることも苦手です. 指導力がなくて申し訳ありません. でも, このままでは大事なことも伝わりませんね. それでも学生さんはマイペースながらそれなりにやってくれているようで, ありがたいことです.
● ryo [いつもサイトのほう参考にさせていただいております。 Windows版ですが、ファイル名の関係で直リンクが切れておりま..]
● とこ [ryo さま、ご連絡ありがとうございます。どうもファイルそのものを失っているようなのですが、今更 LZH でアーカイ..]
● 初心者M [かってに参考にさせていただいております。 windows版のファイルのリンク切れですが、リンク先は以下ではないでしょ..]