コンピュータグラフィックスS 第13回 第13回 演習(4):シェーディング、マッピング システム創成情報工学科 尾下 真樹

Slides:



Advertisements
Similar presentations
シミュレーション演習 G. 総合演習 ( Mathematica 演 習) システム創成情報工学科 テキスト作成: 藤尾 光彦 講義担当: 尾下 真樹.
Advertisements

オブジェクト指向言語・ オブジェクト指向言語演習 中間試験回答例. Jan. 12, 2005 情報処理技術基礎演習 II 2 オブジェクト指向言語 中間試験解説 1  (1) 円柱の体積(円柱の体積 = 底面の円の面積 x 高さ) を求めるプログラムを作成しなさい。ただし、出力結果は、入 力した底面の円の半径.
Ruth Onn, Alfred Bruckstein (Int J Comp Vision 1990)
8. テクスチャマッピング y t s x z 8.1. テクスチャマッピングの原理
初年次セミナー 第13回 2次元グラフィックス(1).
今回の内容 シェーディング マッピング 光の効果の表現 表面の素材の表現 オブジェクトの形状表現 光の効果の表現 表面の素材の表現
豊洲 304教室 15 JULY コンピュータグラフィックス 2008年度版.
情報処理演習 (9)グラフィックス システム科学領域 日浦 慎作.
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
今回の内容 前回の復習 演習環境 サンプルプログラムの解説 プログラミング演習 OpenGLとGLUTの概要 サンプルプログラムの概要
プログラミング演習3 李 亜民クラス 第2回 ラスタライズ.
コンピュータープログラミング(C言語)(3) 1.関数と分割コンパイル (復習) 2.キーボード入力
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
3DCGコンテンツの基礎 第5回授業:最終課題制作
今日の内容 前回の演習の復習 前回の復習 ポリゴンの描画方法(復習) 基本オブジェクトの描画 ポリゴンモデルの描画 演習課題.
今日の内容 前回の復習 前回の演習の復習 視点操作の実現方法(復習) 視点操作の拡張 変換行列によるアニメーション 演習課題.
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
地理情報システム論 第3回 コンピュータシステムおける データ表現(1)
画像処理 入力画像に対して何らかの変換処理を行う 明るさやコントラストの調整、ぼかし・鮮鋭化など レタッチ系の画像ツールでよく使われる機能.
プログラミング演習II 2004年10月19日(第1回) 理学部数学科・木村巌.
CADの概要2 電子制御設計製図Ⅰ 2009年4月14日 Ⅲ限目.
レンダリングにおいて写実性を高めるための処理である,シェーディングとテクスチャマッピングについて述べる.
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月10日、H.15(‘03)] 今日のメニュー 1 前回の課題の復習
プログラミングIII演習 第1回目.
高山建志 五十嵐健夫 テクスチャ合成の新たな応用と展開 k 情報処理 vol.53 No.6 June 2012 pp
第11回 オブジェクト(ベクトル,頂点,面)のクラス化とフラットシェーディング
コンピュータグラフィックスS 第6回 第6回 レンダリング・パイプライン システム創成情報工学科 尾下 真樹
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
CGと形状モデリング 授業資料 長井 超慧(東京大学)
【プログラミング応用】 必修2単位 通年 30週 授業形態:演習.
C 言語について 補足資料 資料および授業の情報は :
DirectX 勉強会 第4回.
行列による画像処理 デジタル表現論 担当者:劉 雪峰 2017年6月1日.
電界中の電子の運動 シミュレータ作成 精密工学科プログラミング基礎 資料.
ポリゴンメッシュ (1) - データ構造とレンダリングに必要な計算 -
OpenGLを使ったプログラム作成 澤見研究室
第9回 卒業研究1
点・線分・多角形を レンダリングする方法 東京大学 精密工学専攻 大竹豊.
OpenGLライブラリを用いた3次元フラクタルの描画
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
Computer Graphics 第10回 レンダリング(4) マッピング
DirectX勉強会 第2回.
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
情報処理Ⅱ 第2回:2003年10月14日(火).
プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
コンピュータグラフィックス 実習3: 光線追跡法
地理情報システム論(総)/ 国民経済計算論(商)
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
プログラミング入門2 第13回、14回 総合演習 情報工学科 篠埜 功.
免許法認定公開講座: コンピュータグラフィックス
ライティング メディアデザイン演習.
バネモデルの シミュレータ作成 精密工学科プログラミング基礎 資料.
精密工学科プログラミング基礎 第7回資料 (11/27実施)
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
点・線分・多角形を レンダリングする方法 東京大学 精密工学専攻 大竹豊.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
免許法認定公開講座: コンピュータグラフィックス
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
プログラミング演習I 2003年6月11日(第9回) 木村巌.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング入門2 第5回 配列 変数宣言、初期化について
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
Presentation transcript:

コンピュータグラフィックスS 第13回 第13回 演習(4):シェーディング、マッピング システム創成情報工学科 尾下 真樹 2015/7/14 コンピューターグラフィックスS 第13回 演習(4):シェーディング、マッピング システム創成情報工学科 尾下 真樹

今回の内容 前回・前々回の復習 OpenGL演習 シェーディング(光源情報の変更) マッピング

前回・前々回の復習

光のモデル 輝度の計算式 全ての光による影響を足し合わせることで、 物体上の点の輝度(RGBの値)が求まる 各I は光の明るさ(RGB) 各k は物体の反射特性(RGB) 環境光 拡散反射光 鏡面反射光 (局所照明) 鏡面反射光 (大域照明) 透過光 それぞれの光源からの光(局所照明) 大域照明

光のモデル 局所照明モデル 大域照明モデル 光源と一枚の面の関係のみを 考慮したモデル 周囲の物体の影響も考慮したモデル 環境光、拡散反射光、鏡面反射光 大域照明モデル 周囲の物体の影響も考慮したモデル 環境光、鏡面反射光、透過光 同じ種類の光でも考慮する範囲に応じて局所モデルと大域モデルがあるので注意

光のモデルのまとめ 光源 拡散・鏡面反射光 (光源から来る光) 鏡面反射光 (映り込み) 環境光 (周囲から来る光) 透過光 環境光 拡散反射光 鏡面反射光 (局所照明) 鏡面反射光 (大域照明) 透過光 それぞれの光源からの光(局所照明) 大域照明

光のモデルの計算 OpenGLによる光の効果の計算 設定された光源情報、及び、法線に従い、局所照明モデルのみを計算 環境光には、一定の明るさを指定可能 光源の種類や位置を指定可能(複数指定可能) 環境光 拡散反射光 鏡面反射光 (局所照明) 鏡面反射光 (大域照明) 透過光 それぞれの光源からの光(局所照明) 大域照明

光源の種類 平行光源 点光源 一定方向からの光源 計算量が最も少ない 太陽などの遠くにある光源の表現に適している 位置の決まった光源 ライトなどの表現に適している 光の方向は点光源と面の位置関係により決まる 光の減衰も考慮できる 無限遠に光源があると見なす

光源の種類と設定方法 平行光源 点光源 (x,y,z)の方向から平行に光 が来る 光源位置のw座標を0.0に設定 無限遠に光源があると見なせる

光源情報の設定の例 光源の位置や色の設定 以下の例では、環境光と、一つの点光源を設定 float light0_position[] = { 10.0, 10.0, 10.0, 1.0 }; float light0_diffuse[] = { 0.8, 0.8, 0.8, 1.0 }; float light0_specular[] = { 1.0, 1.0, 1.0, 1.0 }; float light0_ambient[] = { 0.1, 0.1, 0.1, 1.0 }; glLightfv( GL_LIGHT0, GL_POSITION, light0_position ); glLightfv( GL_LIGHT0, GL_DIFFUSE, light0_diffuse ); glLightfv( GL_LIGHT0, GL_SPECULAR, light0_specular ); glLightfv( GL_LIGHT0, GL_AMBIENT, light0_ambient ); glEnable( GL_LIGHT0 ); glEnalbe( GL_LIGHTING );

光源情報の設定の例 サンプルプログラムの例 光源位置のw座標が1.0なので、点光源となる サンプルプログラムの例 float light0_position[] = { 10.0, 10.0, 10.0, 1.0 }; float light0_diffuse[] = { 0.8, 0.8, 0.8, 1.0 }; float light0_specular[] = { 1.0, 1.0, 1.0, 1.0 }; float light0_ambient[] = { 0.1, 0.1, 0.1, 1.0 }; glLightfv( GL_LIGHT0, GL_POSITION, light0_position ); glLightfv( GL_LIGHT0, GL_DIFFUSE, light0_diffuse ); glLightfv( GL_LIGHT0, GL_SPECULAR, light0_specular ); glLightfv( GL_LIGHT0, GL_AMBIENT, light0_ambient ); glEnable( GL_LIGHT0 ); glEnalbe( GL_LIGHTING ); LIGHT0の ・光源の位置・種類 ・拡散反射成分の色 ・鏡面反射成分の色 を設定 LIGHT0の ・環境光成分の色 を設定

シェーディングの方法 フラットシェーディング スムーズシェーディング グローシェーディング フォンシェーディング フラットシェーディング

シェーディングの処理のまとめ フラットシェーディング グローシェーディング フォンシェーディング 面の法線から面の色を計算 頂点の法線から頂点の色を計算 頂点の色から、各点の色を決定 フォンシェーディング 頂点の法線から、面内の各点 (ピクセル)の法線を計算 各点の法線から、色を計算

頂点の法線 頂点の法線 計算方法 もともと頂点には法線という概念はない シェーディングを計算するために、頂点の法線を利用 頂点に隣接する全ての 面の法線を平均 面の面積に応じて加重 平均する方法もある 基礎と応用 図4.2

テクスチャマッピング マッピング 面を描画する時に、面の表面に画像を貼り付ける技術 複雑なモデリングをすることなく、細かい模様などを表現できる 基礎と応用 図5.2 基礎知識 図3-19

マッピングの方法 物体への画像の貼り付け方 uv座標系 マッピングの方向や繰り返し の方法 テクスチャ画像の座標は(u,v) で表せる モデルデータの各頂点(x,y,z)ごとに、対応するテクスチャ画像の(u,v)座標を与えておく 基礎と応用 図5.3

マッピングの例 人体モデルへのマッピングの例 u v 各頂点にテクスチャの(u,v)座標を設定

光源情報の変更

光源情報の変更 点光源の位置を変更 地面の描画を変更 点光源から平行光源へ変更

演習準備 以前作成した、四角すいの描画関数を使って、ひとつの四角すいを描画するように、描画処理を変更

1. 点光源の位置を変更 点光源の位置を変更してみる 描画関数の光源の位置を変更 点光源の効果が分かるように、地面に近づける 初期化関数で設定した値は、すぐに描画関数で更新されるので、初期化関数は無理に修正する必要はない 点光源の効果が分かるように、地面に近づける void display( void ) { ・・・・・・ // 光源位置を設定(変換行列の変更にあわせて再設定) float light0_position[] = { 5.0, 3.0, 5.0, 1.0 }; glLightfv( GL_LIGHT0, GL_POSITION, light0_position );

点光源の影響 点光源(10,10,10) 点光源(5,3,5) 各頂点における、光源ベクトルと法線の角度が小さい 光源が近いので、光源ベクトルと法線の角度が大きくなる

2. 地面の描画を変更 点光源の効果がより分かるように、地面を100枚の四角形に分けて描画してみる 各頂点ごとに光源計算が行われるため、より正確 細かい四角形の全頂点ごとに光源計算が行われる ・・・・ ・・・ (図では全法線は省略)

地面の描画 10×10の四角形を並べて描画 全体の幅を10とすると、各四角形の幅は1となるので、4点の座標が計算できる (i*1 - 5, 0, j*1 - 5) 1 (-5, 0, -5) i 1 j (i*1 – 5 +1, 0, j*1 – 5 +1)

// 地面を描画 int i, j; glBegin( GL_QUADS ); glNormal3f( 0.0, 1.0, 0.0 ); glColor3f( 0.5, 0.8, 0.5 ); for ( i=0; i<10; i++ ) { for ( j=0; j<10; j++ ) glVertex3f( i - 4.0, 0.0, j - 4.0 ); glVertex3f( i - 4.0, 0.0, j - 5.0 ); glVertex3f( i - 5.0, 0.0, j - 5.0 ); glVertex3f( i - 5.0, 0.0, j - 4.0 ); } glEnd(); ③ ② ④ ① ① ② ③ ④

4. 点光源から平行光源へ変更 平行光源に設定して、点光源との違いを確認してみる 平行光源では、全頂点の光源方向が同じになる

光源の種類の変更 平行光源に設定 光源位置の w座標を 0.0 に指定 void display( void ) { ・・・・・・ // 光源位置を設定(変換行列の変更にあわせて再設定) float light0_position[] = {5.0, 3.0, 5.0, 0.0 }; glLightfv( GL_LIGHT0, GL_POSITION, light0_position ); }

演習課題(1) 図のように、左下手前が照らされるように、光源位置の設定を修正してみよ

テクスチャマッピング

テクスチャマッピング 地面にテクスチャマッピングを適用して描画 各頂点に、テクスチャ座標(u,v)を指定 u (0.0, 0.0) (1.0, 0.0) (0.0, 0.0) (1.0, 0.0) (0.0, 1.0) (1.0, 1.0) v (0.0, 1.0) (1.0, 1.0)

プログラムの修正 プログラムの修正箇所 コンパイル方法の変更 テクスチャ画像を格納する変数を追加 テクスチャ画像の読み込み処理、テクスチャマッピングの設定処理、を追加 画像の読み込みには bitmap.cpp の関数を使用 地面にテクスチャマッピングを行う処理を追加 テクスチャマッピングの有効化 各頂点にテクスチャ座標を設定 コンパイル方法の変更 bitmap.c を一緒にコンパイル

画像の読み込み関数の利用(1) テクスチャマッピングを行うためには、通常、画像をファイルから読み込む必要がある C言語の標準ライブラリには、画像を読み込む機能は無いので、自分で作成する必要がある サンプルプログラムとして、画像の読み込み関数を含むファイル(bitmap.h, bitmap.c)を用意しているので、これらを利用する

C言語のコンパイル・リンクの仕組み c.lib bitmap.h ヘッダファイル sample.c bitmap.c ソースファイル ヘッダファイルには、関数の定義のみを記述 sample.c bitmap.c 他のソースの関数を使用する場合はヘッダファイルをインクルード ソースファイル コンパイル 外部ライブラリ sample.obj bitmap.obj c.lib オブジェクトファイル(中間形式) + リンク sample.exe 実行可能なファイルを作成

Javaのコンパイルと実行の仕組み(参考) a.java b.java コンパイル時に他のクラスを使用する場合は自動的に情報を取得 ソースファイル コンパイル 外部ライブラリ a.class b.class クラスファイル(中間形式) c.class インタプリタ上で実行 実行コード

画像の読み込み関数の利用(1) ヘッダファイルのインクルードの追加 コンパイル方法の変更 bitmap.h は、画像読み込み関数の定義が記述 bitmap.c を入力に加える(他は同じ) bitmap.c は、画像読み込み関数の処理が記述 // Bitmap読み込み関数のためのヘッダファイルのインクルード #include "bitmap.h" gcc opengl_sample.c bitmap.c -L/usr/X11R6/lib -lglut -lGLU -lGL –lXmu -lm -o opengl_sample

テクスチャマッピングの手順 テクスチャ画像の読み込み テクスチャ画像を登録 テクスチャマッピングのパラメタを設定 テクスチャ画像の適用方法を設定 テクスチャマッピングを用いてポリゴンを描画 テクスチャマッピングを有効に設定 各頂点ごとにテクスチャ座標(u,v)を指定

1. テクスチャ画像の読み込み 画像をファイルから配列に読み込む OpenGLやC言語は、標準では、画像の読み込みはサポートしていないので、別のライブラリや、自作関数を使用する必要がある 今回の演習では、サンプルプログラムとして用意された、24ビットBMP画像を配列に読み込む関数を利用する 配列データ 各1バイト(8ビット) R G B ・・・・・ ピクセル1 ピクセル2 ピクセル3 ピクセル4

テクスチャ画像読のみ込み テクスチャ画像を格納する変数を追加 初期化処理に、画像を読み込む処理を追加 // テクスチャ画像データ int tex_width; int tex_height; unsigned char * tex_image = NULL; void initEnvironment( void ) { ・・・・・・ // テクスチャ画像の読み込み loadBitmap( "kyushu.bmp", &tex_image, &tex_width, &tex_height ); if ( tex_image == NULL ) return; 画像のファイル名を指定(入力) 読み込んだ画像データの領域のアドレス(出力) 読み込んだ画像データのサイズ(出力)

2. テクスチャ画像の登録 テクスチャマッピングを行うために、配列に格納された画像データを登録する glTextureImage2D()関数 画像データの形式、サイズなどを指定 GL_RGB・・・RGB 形式 GL_RGBA・・・RGB+不透明度(A) 形式 GL_UNSIGNED_BYTE・・・各色ごとに1バイト 画像データを設定

3. テクスチャマッピングのパラメタ設定 glTexParameter()関数 GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_FILTER テクスチャの拡大縮小方法の設定 GL_NEAREST・・・一番近くのピクセルのみ使用 GL_LINEAR・・・近くのピクセルの色を補間して使用 GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T テクスチャの繰り返しを行うかどうかの設定 GL_REPEATE or GL_CLAMP

テクスチャ画像の登録と設定 void initEnvironment( void ) { ・・・・・・ // テクスチャ画像の読み込み loadBitmap( "kyushu.bmp", &tex_image, &tex_width, &tex_height ); if ( tex_image == NULL ) return; // テクスチャオブジェクトの設定 glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex_width, tex_height, 0, GL_RGB, GL_UNSIGNED_BYTE, tex_image ); // テクスチャマッピングの方法を設定 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); }

4. テクスチャマッピングの適用方法 テクスチャをどのように適用するかを設定 glTexEnv()関数 glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, 適用方法 ); 適用方法には、以下のいずれかを指定 GL_REPLACE GL_DECAL GL_MODULATE GL_BLEND

テクスチャマッピングの適用方法(1) テクスチャマッピングの適用方法(1) GL_REPLACE GL_DECAL 単純にテクスチャ画像を貼り付ける 光源処理は行われないので、常に色は一定 GL_DECAL テクスチャ画像のアルファ値に応じて、ポリゴンと テクスチャの色を混合 ポリゴンの一部にだけ、テクスチャ画像を貼り付けることができる テクスチャ画像にアルファ値が設定されていなければ GL_REPLACE と同じになる

テクスチャマッピングの適用方法(2) テクスチャマッピングの適用方法(2) GL_MODULATE GL_BLEND ポリゴンの色にテクスチャ画像の値をかける 光源による明るさの変化を適用できる (この場合、通常、ポリゴンの色は、白で描画する) GL_BLEND 別に設定した固定色とポリゴンの色を、テクスチャ画像のアルファ値に応じて混合 テクスチャ画像には、画像データの代わりに、混合比の情報を格納しておく

5. テクスチャマッピング 地面にテクスチャマッピングを適用して描画 各頂点に、テクスチャ座標(u,v)を指定 u (0.0, 0.0) (1.0, 0.0) (0.0, 1.0) (1.0, 1.0) v

テクスチャマッピングを使った描画 // 地面を描画(テクスチャマッピング) glEnable( GL_TEXTURE_2D ); glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL ); int i, j; glBegin( GL_QUADS ); glNormal3f( 0.0, 1.0, 0.0 ); glColor3f( 1.0, 1.0, 1.0 ); for ( i=0; i<10; i++ ) { for ( j=0; j<10; j++ ) glTexCoord2f( (i+1) * 0.1, (j+1) * 0.1 ); glVertex3f( i - 4.0, 0.0, j - 4.0 ); glTexCoord2f( (i+1) * 0.1, j * 0.1 ); glVertex3f( i - 4.0, 0.0, j - 5.0 ); glTexCoord2f( i * 0.1, j * 0.1 ); glVertex3f( i - 5.0, 0.0, j - 5.0 ); glTexCoord2f( i * 0.1, (j+1) * 0.1 ); glVertex3f( i - 5.0, 0.0, j - 4.0 ); } glEnd(); glDisable( GL_TEXTURE_2D ); テクスチャマッピングを使った描画

テクスチャ座標の計算 このプログラムでは、10×10の四角形を並べて地面を描画 各四角形を描画するときに、4つの頂点のテクスチャ座標が適切な値になるよう、i, j にもとづいて計算 例えば、i=0, j=0 のときには、4頂点のテクスチャ座標は(0.1, 0.1)(0.1, 0.0)(0.0, 0.0)(0.0, 0.1) i=9, j=9 のときには、4頂点のテクスチャ座標は(1.0, 1.0)(1.0, 0.9)(0.9, 0.9)(0.9, 1.0)

// 地面を描画 int i, j; glBegin( GL_QUADS ); glNormal3f( 0.0, 1.0, 0.0 ); glColor3f( 0.5, 0.8, 0.5 ); for ( i=0; i<10; i++ ) { for ( j=0; j<10; j++ ) glTexCoord2f( (i+1) * 0.1, (j+1) * 0.1 ); glVertex3f( i - 4.0, 0.0, j - 4.0 ); glTexCoord2f( (i+1) * 0.1, j * 0.1 ); glVertex3f( i - 4.0, 0.0, j - 5.0 ); glTexCoord2f( i * 0.1, j * 0.1 ); glVertex3f( i - 5.0, 0.0, j - 5.0 ); glTexCoord2f( i * 0.1, (j+1) * 0.1 ); glVertex3f( i - 5.0, 0.0, j - 4.0 ); } glEnd(); ③ ② ④ ① ① ② ③ ④

複数テクスチャの使用 複数テクスチャを使用する場合は、テクスチャごとに、テクスチャを切り替える 毎回、glTextureImage2D()を行うと時間がかかる glTextureBind()関数で、登録したテクスチャ情報を記録しておき、切り替えられる テクスチャの切り替えはなるべく少ない方が効率的 同じテクスチャ画像を使用するポリゴンはまとめて描画する 本演習では、複数テクスチャの使用は扱わない

テクスチャマッピングの演習 以上の処理を記述して、テクスチャマッピングを試してみる テクスチャマッピングの適用方法を変更してみる テクスチャ座標を変更してみる

適用方法の変更 適用方法を変更してみる GL_DECALから、 GL_MODULATEに変更 光源処理の影響を受ける

テクスチャ座標の変更 各頂点の u,v 座標を2倍にしてみる GL_TEXTURE_WRAP を、 GL_REPEATE に設定しているので、0.0~1.0の座標を指定すると繰り返えし貼られる u (0.0, 0.0) (2.0, 0.0) (0.0, 2.0) (2.0, 2.0) v

演習課題(2) テクスチャの一部のみが貼り付けられるよう、地面の描画を修正せよ 各頂点の(u,v)座標を適切に修正 u (0.25, 0.0) (0.75, 0.0) (0.25, 0.5) (0.75, 0.5) v

演習課題の提出 光源位置の設定の変更 テクスチャマッピング 上記の両方の課題を実現した、ひとつの プログラムを、Moodleから提出 ファイル名は、学生番号.c とする 必ず、両方とも完成したプログラムを提出すること(部分点はなし) 締め切り 7月21日(火) 18:00 (厳守)

まとめ OpenGL演習(4) これまでの OpenGL演習で習得した内容をもとに、レポート課題を完成させること シェーディング(光源情報の設定) マッピング これまでの OpenGL演習で習得した内容をもとに、レポート課題を完成させること

今後の日程 試験期間中の前半の週に、授業(第14回)を実施 試験期間中の後半の週に、期末試験 レポート課題締切 詳細は、試験時間割を確認すること レポート課題締切

コンピュータグラフィックスS 第13回 2015/7/14 次回予告 アニメーション 本講義のまとめ

次回予告 アニメーション 動きのデータを扱う技術 オブジェクトの形状表現 光の効果の表現 表面の素材の表現 動きのデータの生成 コンピュータグラフィックスS 第13回 2015/7/14 次回予告 アニメーション 動きのデータを扱う技術 オブジェクトの形状表現 光の効果の表現 表面の素材の表現 動きのデータの生成 オブジェクトの作成方法 画像処理 カメラから見える画像を計算 オブジェクト 生成画像 光源 カメラ

演習問題 プログラム演習を始める前に、Moodleの 演習問題に回答すること 本講義時間中しか回答できない 回答は、講義終了後に表示される コンピュータグラフィックスS 第13回 2015/7/14 演習問題 プログラム演習を始める前に、Moodleの 演習問題に回答すること 本講義時間中しか回答できない 回答は、講義終了後に表示される