2015/7/7 コンピュータグラフィックスS レポート 課 題 九 州 工 業 大 学 情 報 工 学 部 システム 創 成 情 報 工 学 科 講 義 担 当 : 尾 下 真 樹 レポートの 提 出 方 法 レポートの 締 め 切 りは 8 月 上 旬 ( 期 末 試 験 終 了 後 )を 予 定 ( 詳 細 は 後 日 連 絡 ) 直 前 になって 慌 てなくても 良 いように 課 題 には 十 分 早 く 取 りかかること レポートは Moodle の 本 講 義 のコースから 提 出 すること 電 子 メイルや 紙 での 提 出 は 一 切 認 めない 課 題 を 実 現 するプログラムを 作 成 し プログラムとレポートの 両 方 のファイルを 提 出 すること レポートのファイル 形 式 は MS Word または PDF とすること レポートのファイル 名 は 学 生 番 号 にすること 例 えば 学 生 番 号 13236001 であれば 13236001.docx, 13236001.doc, 13236001.pdf などのファイル 名 で 提 出 する レポートには 自 分 の 作 成 したプログラムのソースファイルを 添 付 して 提 出 すること 全 ての 課 題 を 作 成 した 1 つのプログラムのソースファイルを 提 出 する ( 課 題 ごとに 別 々のファイルを 提 出 する 必 要 はない ) こちらも ファイル 名 は 学 生 番 号 にすること ( 学 生 番 号 が 13233001 であれば 13233001.c, 13233001. cpp, などのファイル 名 で 提 出 ) ソースファイルの(コメントの 日 本 語 の) 文 字 コードは ユニコード シフト JIS EUC いずれでも 構 わない 上 記 の 提 出 方 法 を 守 れなかった 場 合 レポートが 評 価 されなかったり(0 点 ) 減 点 の 対 象 となったりす ることがあるので 注 意 すること その 他 変 更 点 や 補 足 事 項 があれば Moodle の 本 講 義 のコースで 連 絡 をするので 適 宜 確 認 すること レポートの 作 成 方 法 レポートの 先 頭 ページには 科 目 名 提 出 日 学 生 番 号 氏 名 を 書 くこと レポートの 本 文 は 2 ページ 目 から 始 めて 課 題 ごとに 章 立 てし 指 示 された 内 容 を 説 明 すること 長 々と 文 章 を 書 く 必 要 はないので 指 示 された 内 容 を 適 切 に 示 すこと プログラムは 授 業 の 演 習 で 作 成 したプログラムをもとに 作 成 して 構 わないが ソースファイルを 見 や すくするため 授 業 の 演 習 で 作 成 した 内 容 のうち 今 回 のレポートに 関 係 のない 不 要 な 変 数 や 処 理 はソー スファイルから 削 除 すること 不 要 な 変 数 処 理 が 残 っているプログラムは 減 点 の 対 象 とする レポートの 評 価 方 法 本 課 題 の 成 績 は 提 出 されたレポート 及 び プログラムにより 評 価 する レポートについては 指 示 された 内 容 ( 図 データ 数 式 説 明 )が 適 切 に 示 されているかどうかを 評 価 する 仮 にプログラムが 正 しく 動 いていても プログラムの 内 容 が 正 しくレポートで 示 されていなけ れば かなり 低 い 評 価 となるので 注 意 すること また レポートの 書 き 方 ( 図 数 式 説 明 がきちん と 見 やすく 示 されているか)も 評 価 の 対 象 とする プログラムについては 単 に 正 しく 動 くかどうかだけでなく プログラムの 中 身 ( 見 やすく 書 かれてい るか 適 切 なコメントが 書 かれているか 余 計 な 処 理 が 入 いっていないか インデントは 適 当 か など) も 評 価 の 対 象 とする 正 しく 動 いていても プログラムが 見 にくければ 減 点 となるので 注 意 すること カンニングは 厳 重 な 処 罰 や 減 点 の 対 象 となるので 絶 対 に 行 わないこと 例 え 一 部 分 であっても 他 人 のレポートや 資 料 を 丸 写 ししたプログラムやレポートは カンニングと 判 断 される どうしても 分 から ないところを 他 人 に 相 談 することは 構 わないが プログラムやレポートは 全 て 自 力 で 作 成 すること ( 授 業 で 資 料 として 配 布 したプログラムについては 必 要 箇 所 をコピーして 利 用 するのは 構 わない ) 1
サンプルプログラム Moode に 各 自 がレポートでどのようなプログラムを 作 成 するべきかを 示 す サンプルプログラム (opengl_report2015)を 用 意 している サンプルプログラムを 起 動 すると ログイン ID にもとづいて 自 動 的 に 学 生 番 号 が 取 得 され 学 生 番 号 に 応 じ た 課 題 となる 目 標 プログラムが 示 される 必 ず 自 分 のログイン ID を 使 ってログインして サンプルプロ グラムの 内 容 を 確 認 すること なお 本 授 業 の 履 修 登 録 を 行 っていない 場 合 は エラーメッセージが 表 示 さ れ 学 生 番 号 や 課 題 内 容 は 表 示 されない 目 標 プログラムと 同 じモデル 描 画 ( 課 題 1) 視 点 操 作 ( 課 題 2) アニメーション( 課 題 3) テクスチャマ ッピング( 課 題 4)を 実 現 するプログラムを 作 成 すること ただし これら 以 外 の 指 定 されていない 点 につ いては サンプルプログラムと 全 く 同 じにする 必 要 はない 例 えば オブジェクトの 影 の 描 画 は 不 要 である サンプルプログラムの 操 作 方 法 は 以 下 の 通 り A キーを 押 すと アニメーションを 再 生 する 代 わりに 途 中 のいつくかの 位 置 向 きを 同 時 に 描 画 する アニメーションの 軌 道 を 詳 しく 確 認 したいときなどに 参 考 にすると 良 い スペースキーでアニメーションの 一 時 停 止 と 再 開 N キーでコマ 送 り(アニメーションを 一 時 停 止 した 状 態 で) R キーでアニメーションをリセット( 開 始 時 の 位 置 向 きに 戻 る) マウスのボタンをドラッグすることで 視 点 操 作 ( 課 題 2の 説 明 の 通 り) 課 題 1. ポリゴンモデルの 描 画 サンプルプログラムで 示 されたものと 同 様 のモデルを 表 示 するようなプログラムを 作 成 せよ モデルの 形 状 は できる 限 りサンプルプログラムで 示 された 形 状 に 近 くなるようにすること ( 大 幅 に 異 なる 形 状 や 勝 手 に 簡 略 化 された 形 状 を 表 示 するようなプログラムは 減 点 の 対 象 とする) モデルの 形 状 データは 必 ずプログラム 内 に 配 列 として 持 つようにすること 講 義 で 最 初 に 説 明 した 方 法 (glvertex3f() の 中 に 直 接 頂 点 座 標 を 記 述 する 方 法 )は 実 用 的 なやり 方 ではないため 認 めない モデルの 法 線 は 必 ず 形 状 に 合 った 正 しい 法 線 を 用 いること どのような 頂 点 座 標 ポリゴンデータを 使 用 したか( 使 用 したデータの 頂 点 面 法 線 の 数 やそれぞれの 値 ) を 示 すこと 配 列 データの 数 値 だけではなく 使 用 したデータがどのようにモデルの 形 状 を 構 成 するのかが 分 かるように 必 ず 三 面 図 や 透 視 図 などの 図 を 示 すこと また 各 面 の 法 線 ベクトルの 数 値 も 示 すこと 課 題 2. 視 点 操 作 インターフェースの 追 加 サンプルプログラムと 同 様 の 視 点 操 作 を 実 現 するよう 下 記 のようなユーザインターフェースを 追 加 せよ マウスの 右 ボタンを 押 しながら マウスを 前 後 にドラッグすると ワールド 座 標 系 の 原 点 ( 注 視 点 )を 中 心 にカメラが 上 下 に 回 転 ( 原 点 から 見 たカメラの 仰 角 が 変 化 ) ( 演 習 で 作 成 したものと 同 じ) マウスの 左 ボタンを 押 しながら マウスを 前 後 にドラッグすると カメラと 原 点 ( 注 視 点 )の 間 の 距 離 が 変 化 する ( 演 習 で 作 成 したものと 同 じ) マウスの 右 ボタンを 押 しながら マウスを 左 右 にドラッグすると ワールド 座 標 系 の 原 点 ( 注 視 点 )を 中 心 にカメラが 左 右 に 回 転 ( 原 点 から 見 たカメラの 方 位 角 が 変 化 ) ( 演 習 では 作 成 していないので 新 た に 追 加 ) 2
マウスの 左 ボタンを 押 しながら マウスを 左 右 にドラッグすると ワールド 座 標 系 の X 軸 に 沿 って カ メラの 注 視 点 が 移 動 (ワールド 座 標 系 の X 軸 方 向 にカメラが 移 動 ) ( 演 習 では 作 成 していないので 新 た に 追 加 ) 上 記 の 文 章 での 説 明 でよく 分 らなければ サンプルプログラムの 動 作 を 十 分 に 確 認 して 同 様 の 視 点 操 作 を 実 現 すること ワールド 座 標 系 からカメラ 座 標 系 への 変 換 行 列 を 平 行 移 動 行 列 回 転 行 列 の 積 の 形 で 記 述 せよ 行 列 中 で 使 用 されている 変 数 の 定 義 を 示 すこと それぞれが どのような 操 作 を 実 現 するための 変 数 であり どのようなマウス 操 作 によって 変 化 するのかを 説 明 すること なお プログラムで 使 用 している 変 数 との 対 応 がきちんと 示 されていれば 説 明 の 中 の 変 換 行 列 で 使 用 する 変 数 として プログラムで 使 用 している 変 数 名 を 無 理 に 使 う 必 要 はない ( 例 えば プログラムで 使 用 してい る camara_pitch という 変 数 をθとおいて 説 明 の 中 の 変 換 行 列 はθを 使 って 記 述 しても 構 わない ただし プログラム 中 の 変 数 と 説 明 で 使 う 変 数 の 対 応 関 係 を きちんと 示 すこと ) 課 題 3. アニメーションの 追 加 サンプルプログラムと 同 様 のアニメーションを 実 現 する 処 理 を 追 加 する サンプルプログラムの 通 りに 4 つのオブジェクトを 動 かし アニメーションを 表 示 すること また オブジェクトの 色 も サンプルプログラムと 同 様 の 色 にすること 課 題 2 と 同 様 に 4 つのオブジェクトのそれぞれについて どのような 変 換 行 列 を 使 用 して 描 画 すれば 良 い か 変 換 行 列 を 平 行 移 動 行 列 回 転 行 列 の 積 の 形 で 記 述 せよ ただし 課 題 2 で 作 成 したワールド 座 標 系 からカメラ 座 標 系 への 変 換 行 列 は 行 列 A などと 置 いて 省 略 して 構 わない モデル 座 標 系 からワールド 座 標 系 への 変 換 行 列 がきちんと 分 るように 示 すこと 課 題 4. テクスチャマッピング サンプルプログラムと 同 様 のテクスチャマッピングを 行 い 地 面 を 描 画 する 処 理 を 追 加 する Moodle にアップロードされている 画 像 ファイル kyutech.bmp を 読 み 込 み 適 切 なテクスチャ 座 標 を 設 定 し て 地 面 の 描 画 を 行 う 処 理 を 追 加 すること ( 画 像 ファイルは 提 出 時 に 添 付 する 必 要 はない ) 地 面 は 授 業 中 の 演 習 で 作 成 したプログラムと 同 様 ワールド 座 標 系 の 原 点 を 中 心 として X 軸 方 向 Z 軸 方 向 にそれぞれ 幅 10 の 大 きさの 四 角 形 として 描 画 すること シェーディングによる 影 響 がきちんと 生 じるよう に 1 枚 の 四 角 形 として 描 画 するのではなく 授 業 中 の 演 習 で 作 成 したように 10 10 の 小 さな 四 角 形 の 集 まりとして 描 画 をすること また 光 源 は (5, 3, 5)の 位 置 にある 点 光 源 とすること 点 光 源 環 境 光 源 の 色 等 の 設 定 は 授 業 中 の 演 習 で 作 成 したプログラムと 同 様 にすること レポートには テクスチャ 画 像 のどの 範 囲 を 地 面 にマッピングするのか テクスチャ 座 標 (u,v)を 示 した 上 で i 行 j 列 目 の 四 角 形 を 描 画 する 際 の 4 点 の 頂 点 座 標 (x,y,z) テクスチャ 座 標 (u,v)の 計 算 式 を 示 すこと (それぞれを i, j の 関 数 の 形 で 示 す ) 3
付 録 1. Linux-Windows 間 でのファイルのコピー 方 法 情 報 科 学 センタの Linux 端 末 以 外 でプログラムを 作 成 したい 者 は 下 記 の 情 報 を 参 考 にすること ただし 情 報 科 学 センタ 以 外 の 環 境 については 一 切 サポートはしないので やりたい 者 は 自 力 でやること また 提 出 されたプログラムは 情 報 科 学 センタの Linux 端 末 の 環 境 で 評 価 されるため 別 の 環 境 で 正 しく 動 いたとしても 情 報 科 学 センタの 環 境 で 正 しく 動 作 しなければ 大 幅 な 減 点 となるので 注 意 すること 情 報 科 学 センタの Linux 端 末 から Windows マシンにファイルを 移 す 方 法 情 報 科 学 センタのオンラインガイドのページ(http://edu.iizuka.isc.kyutech.ac.jp/Guide/)に USB メモリ の 使 用 方 法 の 説 明 が 書 かれているので やり 方 が 分 からない 人 は 参 考 にすること この 方 法 を 使 えば USB メモリを 使 って 他 のマシンにファイルを 移 すことができる USB メモリを 持 っていない 人 は 電 子 メイルにファイルを 添 付 して 送 り 別 のマシンでメイルを 受 信 するな どの 方 法 で ファイルを 移 すこともできる 電 子 メイルへのファイルの 添 付 方 法 は 1 年 生 のリテラシーの 講 義 で 習 った 通 り プログラムの 文 字 コードを 変 換 する 方 法 Linux と Windows では テキストファイルの 2 バイト 文 字 コードや 改 行 コードが 異 なるため 普 通 にファ イルをコピーしても コンパイルすることができない 日 本 語 の 文 字 コードとして Windows ではシフト JIS やユニコード Linux では EUC やユニコードが 使 用 されている また 改 行 コードとして Windows では CR+LF Linux では LF が 使 用 されている 授 業 で 用 いたサンプルプログラムはユニコードが 使 われているため ユニコードが 利 用 可 能 な 環 境 で 使 用 す る 場 合 は 文 字 コードの 変 換 は 必 要 ない ユニコードが 使 えない 環 境 やソフトウェアを 使 って 演 習 を 行 いたい 場 合 は 下 記 のように Linux にインス トールされている nkf コマンドなどを 使 うことで 文 字 コードや 改 行 コードを 変 換 できる Windows にも 文 字 コード 変 換 のためのフリーソフトなどが 多 くあるが 標 準 では 付 属 していないため 自 分 でインストールする 必 要 がある 演 習 環 境 (Linux) 用 の 文 字 コードから Windows 用 の 文 字 コード(S-JIS CR+LF)へ 変 換 する 方 法 $ nkf -s -Lw opengl_euc.c > opengl_sjis.c Windows 用 の 文 字 コードから 演 習 環 境 (Linux) 用 の 文 字 コード(ユニコード LF)へ 変 換 する 方 法 $ nkf -w -Lu opengl_sjis.c > opengl_euc.c 4
付 録 2. よくある 間 違 い 基 本 的 には 以 上 の 説 明 に 従 ってレポートを 作 成 すれば 問 題 ないが 以 下 に 過 去 のレポートでよくある 間 違 いを 挙 げておくので 特 にこのような 間 違 いをしないように 十 分 注 意 すること (ここで 挙 げられている 以 外 の 間 違 いにも 注 意 すること ) ポリゴンモデルの 間 違 い 最 も 多 い 間 違 いとして 法 線 ベクトルの 向 きが 正 しくないものや 法 線 ベクトルが 正 規 化 されていない などがある 法 線 ベクトルは 面 に 対 して 垂 直 で かつ 長 さが 1となる 必 要 がある 頂 点 や 面 の 情 報 と 比 べて 法 線 ベクトルの 間 違 いにはやや 気 がつきにくいが 法 線 ベクトルが 間 違 ってい ると 実 行 結 果 を 見 たときに 光 による 照 らされ 方 が 明 らかにおかしくなることが 多 いので プログラムを 見 直 すだけではなく 実 行 結 果 も 見 て 確 認 すると 良 い 視 点 操 作 が 正 しく 実 現 されてない 特 に 左 ボタンを 左 右 にドラッグしたときの 注 視 点 の 移 動 を 間 違 った 座 標 系 で 行 っていると 指 定 された プログラムと 異 なる 結 果 になってしまうので 十 分 に 確 認 をすること 指 定 されたアニメーションが 作 成 されていない それぞれの 物 体 の 動 きの 軌 道 を 指 定 された 通 りにするのはもちろん 物 体 同 士 の 運 動 周 期 も 指 定 された 通 りになるよう 注 意 して 作 成 すること 例 えば 赤 い 物 体 が 1 回 転 する 間 に 青 い 物 体 が 何 回 転 するかな ど 指 定 されたプログラムでの 物 体 同 士 の 運 動 周 期 やタイミングも 再 現 するようにする プログラムが 見 にくい プログラムの 動 作 は 正 しくても かなりプログラムが 読 にくい 人 がいるので 注 意 すること プログラム が 非 常 に 読 みにくい 場 合 減 点 の 対 象 となる 一 般 に プログラムが 見 にくいと バグを 見 つけるときなどに 苦 労 するので 見 やすいプログラムを 書 く よう 心 がけることが 必 要 である 具 体 的 には インデントをきちんと 揃 える 適 切 なコメントや 関 数 名 変 数 名 をつける 無 駄 な 空 行 は 省 く などの 工 夫 が 必 要 提 出 されたプログラムにエラーがある コンパイルできない ( 論 外 ) まれに コンパイルすらできないプログラムを 提 出 する 人 がいるので 十 分 注 意 すること プログラム 中 に 全 角 スペースが 混 じっている コメントが 適 切 にコメントアウトされていない 存 在 しな いファイルをインクルードしている など 提 出 直 前 になってプログラムを 読 みやすくしようとして 修 正 し 結 果 的 に 修 正 を 間 違 えてコンパイルで きないプログラムを 提 出 してしまう 人 がいるので プログラムを 修 正 した 場 合 は 必 ずコンパイルができ て 正 しく 動 作 することを 確 認 した 上 で 提 出 すること また たまたまコンパイルは 通 る 場 合 でも C 言 語 のルールに 従 っていなかったり コンパイル 時 に 警 告 が 発 生 したりするような 間 違 ったプログラムも 減 点 の 対 象 となる レポートの 課 題 1 で ポリゴンモデルを 構 成 する 頂 点 や 面 の 情 報 が 図 から 分 からない 課 題 の 説 明 で 指 示 されている 通 り どのようなデータを 使 用 してポリゴンモデルを 実 現 したのかを 説 明 す るためには ポリゴンモデルの 形 状 や 頂 点 座 標 各 ポリゴンを 構 成 する 頂 点 番 号 などが 分 かるような 図 を 使 って 説 明 することが 必 要 である レポートに 図 が 全 くない 場 合 や 不 十 分 な 図 しかない 場 合 は どのようなデータを 使 用 したのかが 分 から ず 減 点 の 対 象 となるので 注 意 すること 特 に 頂 点 座 標 の 情 報 だけでなく 物 体 をどのようなポリゴン( 面 )に 分 割 して 描 画 したかや 各 ポリゴ ンが 何 番 目 のデータに 対 応 するのか といった ポリゴンの 情 報 もきちんと 分 かるようにすることが 必 要 である また 頂 点 の 座 標 値 が 分 かるように 座 標 軸 目 盛 を 示 すなどの 工 夫 も 必 要 である 基 本 的 に 定 義 した 全 てのデータ( 頂 点 座 標 法 線 ポリゴンなど)について 定 義 したデータ( 配 列 ) が 正 しいかどうかがきちんと 検 証 できるような 図 や 説 明 が 求 められる レポートの 課 題 2~3 で 変 換 行 列 が 正 しく 示 されていない あるいは プログラムで 用 いられている 変 換 行 列 とレポートで 示 されている 変 換 行 列 が 食 い 違 っている 5