[2016]情報メディア専門ユニットI資料ページ

まえがき

本ページは2016年度情報メディア専門ユニットIのCGプログラミング演習向けの資料配布ページです。対象の学生は、演習開始時にファイルをローカルストレージにダウンロードしておいてください。貧弱なサーバなため、何度もアクセスすると大変なことになりかねません。

訂正・ヒント

資料一覧

第2回

GLFWを導入する
http://www.cho-design-lab.com/2015/04/21/intro_glfw/

Visual Studio + GLFW 簡単導入
http://qiita.com/cho_design_lab/items/a49338660b26525f3217

第3回

見本テクスチャデータ
texture_sample20160426(512 x 512)
参考コード
multiDrawing2.zip(04/27追加)
コメントをよく読んでください。
※演習問題はこのコードのように並べて表示しろという意味ではありません。挑戦していた学生がいたので例として示しています。
複数のテクスチャを利用するサンプルmultiTex.cpp.zip(5/8追加)

関連ページ

[GIMP] GIMPでRAWデータを作る

第4回

利用テクスチャデータ
alpha_tex.zip
資料中サンプルコード
ime2016_04_codes.zip
授業内プレゼンテーションファイル
ime2016_04.zip

第5回

資料中サンプルコード
ime2016_05code.zip

第6回

資料中サンプルコード(サンプル4,5のみ)
ime2016_06codes.zip

第8回

資料サンプルコード&スライド
ime2016_08code
ime2016_08.pptx
演習問題7の実行例
airplane
訂正

問題3

正六角柱・正六角筒どちらでもよい

第9回

資料中のサンプルコード修正版
ime2016_09code.zip

問2

円柱なので、ふたも忘れずに。
法線をちゃんと設定すると、以下の画像のようにクッキリと側面と蓋面の境界が視認できます。
cylinder_objbuff

問3・4

問3は球の法線を設定してください。なめらかな球が表示されるようになるはずです。
問4は頂点の座標を色として指定してください。
以下の図結果例です。右が問3、左が問4となっています。
sphere_objbuff

第10回

サンプル01

サンプル01コード
ステンシルのサンプル
stencil.zip

問5

コードとOBJファイル
obj_rev1

第13回目

最終課題の仕様を決定してもらいます。

  • タイトル
  • コンセプト(キャッチコピー)
  • 全体の説明(文章)
  • 状態遷移(図)(実行画面のイラストがあると良い)
  • 状態毎の説明(文章)
  • フローチャート(図)

解りやすく、伝わりやすい、簡潔な文章と図で作成する。
清書して、次回演習開始時にレポートとして提出

第15回

最終課題提出物

  • 作品(リリースビルドしたもの)
  • プロジェクト(バイナリは削除すること)
  • 作品解説レポート
  • 発表資料(五分程度)

M_PIが利用できない

Visual StudioでM_PIを利用する場合、cmathを取り込む前に、_USE_MATH_DEFINESを定義することで利用することができます。

#define _USE_MATH_DEFINES
#include <cmath>

とりあえず、プログラムの一行目にこれを定義しておけば本演習では問題になりません。
数値演算定数 https://msdn.microsoft.com/ja-jp/library/4hwaceh6.aspx

動かない!

コードを打ち込んで動かない!ことが多いです。シンタックスエラー(構文エラー)は文法のミスですが、プログラム(働き方)は人間が定義しているので、コンピュータはそれが間違っているのかは判断できません。その場合、アルゴリズムにミスがあるか、利用しているフレームワークやライブラリの使い方が間違っている場合があります。

先生やTAは可能な限りお手伝いをしますがデバッガーではありません。最低限として、どの段階で自らの想定と違うのかを報告してもらわねば、お手伝いすることができません。一年生のプログラミングの授業ならともかく、高度なプログラムを読み解くのは一目見てわかるようなものではありませんので、とにかくどの段階で想定と違う(値がおかしい、突然終了するなど)を報告してください。具体的に言うと、プログラムの何行目で動作がおかしいかを報告してください。先生やTAも結局はそのおかしい位置を探すことからはじめるのですから。

探し方ですが、超がつくほど原始的ですがprintfデバッグという非効率的ですが、環境をあまり選ばない手法があります。幸いながら、この演習ではこんな事をやらない(というか、やってはいけない)ですみます。みなさんが使っている統合開発環境(Visual Studio, XCode)にはデバッガというデバッグ専門のソフトウェアが搭載されています。この演習の本質ではないので、使い方はあまり説明しませんが、デバッガの中の機能に

  • ブレークポイント
  • ステップイン・ステップアウト・ステップオーバー
  • ウォッチ(監視)

という便利な機能があります。ブレークポイントは実行時にその行になったら、動作を一時停止にする機能です。ステップ機能は停止状態から停止位置をコントロールする機能、ウォッチは変数の中を覗いたりする機能です。これらを利用すれば、おかしな挙動をする位置を発見することができるはずです。使い方は検索すればいくらでもでてきます。デバッガの練習には一年生の頃のC言語のプログラムが適当だと思います。

OpenGLなどのライブラリは内部が隠蔽されているので、この点ではデバッガでは監視できません。その場合は遠慮せずに先生やTAに相談してください。