プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作

Slides:



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

Absolute Orientation. Absolute Orientation の問題 二つの座標系の間における剛体 (rigid body) 変換を復元す る問題である。 例えば: 2 台のステレオカメラから得られた3次元情報の間の関 係を推定する問題。 2 台のステレオカメラから得られた3次元情報の間の関.
ファーストイヤー・セミナーⅡ 第13回 2次元グラフィックス(1). 2次元グラフィックス Ultra-C では、これまで利用してきた「標準入出力」 以外に「グラフィックス画面」があり、図形などを 表示できる C 言語のグラフィックスには細かな規定がなく、こ れから学ぶ内容が他の環境、システムでは利用でき.
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
プロジェクト演習Ⅱ インタラクティブゲーム制作
初年次セミナー 第13回 2次元グラフィックス(1).
情報処理演習 (9)グラフィックス システム科学領域 日浦 慎作.
CGアニメーションの原理 基本技術 対象物体の動きや変形の設定方法 レンダリング技術
プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4
プログラミング入門 電卓番外編 ~エクセルで関数表示~.
3DCGコンテンツの基礎 第5回授業:最終課題制作
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
第4回:ボールを画面内で弾ませよう! (オブジェクトの移動、二次元)
画像の作成と編集.
コンピュータと情報 第3回 補遺 ファイルとフォルダ.
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
CADの概要2 電子制御設計製図Ⅰ 2009年4月14日 Ⅲ限目.
CHAPTER1 UMLとオブジェクト指向の基本概念(2)
【トップページ-TOPICSの登録・編集】
エントリーシート.
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
プロセッシング入門1 初歩のプログラミング.
プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4
高山建志 五十嵐健夫 テクスチャ合成の新たな応用と展開 k 情報処理 vol.53 No.6 June 2012 pp
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
コンピュータグラフィックスS 第6回 第6回 レンダリング・パイプライン システム創成情報工学科 尾下 真樹
UMLとは           032234 田邊祐司.
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
プログラミング演習3 第2回 GUIの復習.
第四回 ゲーム                 05A1054         前田嵩公.
オーサリングツール&ブラウザの 技術的トピック
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
電界中の電子の運動 シミュレータ作成 精密工学科プログラミング基礎 資料.
OpenGLライブラリを用いた3次元フラクタルの描画
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
プログラミング演習3 第2回 GUIの復習.
情報検索(6) メディア検索の仕組み 教員 岩村 雅一
コンピュータ教育開発センター Eスクエア・アドバンス ◆産業協力情報授業◆ CGアニメ入門 (株)ドーガ 代表取締役 かまた ゆたか.
3次元構築アプリケーションにおける3D表示(2)
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
可視面・不可視面の判定方法と隠れ面(不可視面)の消去法について述べる.
DirectX勉強会 第2回.
プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4
プログラミング基礎a 第12回 Java言語による図形処理入門(3) アニメーション入門
プログラミング基礎a 第11回 Java言語による図形処理入門(3) アニメーション入門
プロジェクト演習Ⅱ インタラクティブゲーム制作
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
豊富な投影法 座標系をまず設定する必要があります。地球面から平面への投影法,縮尺などをまず選びます。
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4
文化財のデジタル保存のための 偏光を用いた透明物体形状計測手法
本日のスケジュール 14:45~15:30 講義 15:30~16:15 企画書レビューシート記入 16:15~16:30 休憩
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
主専攻実験 第12回 TA : 高林 大輔(M2), 浦木一眞(M1) Chendra Hadi SURYANTO(D1) {takabayashi, uraki, tsukuba.ac.jp.
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
バネモデルの シミュレータ作成 精密工学科プログラミング基礎 資料.
Googleマップを活用した 生物調査データベースの構築
モグラたたき.
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
力覚インタラクションのための 物理ベースモデリング
コンピュータ教育開発センター Eスクエア・アドバンス ◆産業協力情報授業◆ CGアニメ入門 株式会社 ドーガ.
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
Molecular Devices Japan
いじめは決して許されるものではありません。 ネットいじめにあった場合は大人に相談しましょう。
プロジェクト演習Ⅱ インタラクティブゲーム制作
情報スキル活用 第6週 制作技術-1 情報の記述と画面のデザイン.
逆運動学(Inverse Kinematics) 2007.5.15
Presentation transcript:

プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作 第11回 Inside of 3DCG

今日の内容 リアルタイム3DCGの描画処理の流れを 知ろう ネット上のサンプルや、他のライブラリとの連携がやりやすくなる! FKの内側を少しだけ解剖します ネット上のサンプルや、他のライブラリとの連携がやりやすくなる! シェーダプログラミングもやりやすいはず

関連する過去の資料 以下の回の内容とリンクさせながら理解するとよい 前期6回「マテリアルとライティング」 後期8回「エフェクト」

描画処理の流れ 多くのライブラリは 「描画」しかできない これらのライブラリを用いた場合は、自分で右の流れを組む必要がある OpenGL、Direct3Dは もちろん、XNAやDXライブラリもそう これらのライブラリを用いた場合は、自分で右の流れを組む必要がある 画面をまっさらに 塗りつぶす カメラの位置と向き、その他諸々をセット 描画したいモデルの 座標系をセットする 三角形をたくさんたくさんたくさん描画する (3,4をモデルの個数分) 描き上がった画面を まるっと差し替え

FKの最大の特長 形状-モデル-シーン-ウィンドウからなる階層構造 他にも特長はあるが、あまりゲーム向きではない なかでもモデルの存在は大きい 同じ形状を複数描画する際の効率化 位置、姿勢、スケールの柔軟な制御 シーンへの登録制による描画処理のカプセル化 他にも特長はあるが、あまりゲーム向きではない 形状自体の高度な変形、編集操作など

FKのデメリット カプセル化しすぎてて、融通を利かせるのがちょっと難しい これらを紐解きつつ、自分でいじりたいところのいじり方を伝授したい 形状ごとに描画処理内容が固定されており、自由に実装することができない 一般的な描画処理の流れが隠蔽されており、処理のイメージをつかみづらい これらを紐解きつつ、自分でいじりたいところのいじり方を伝授したい

!? 描画処理の解剖 エントリーした順に画面上の領域を塗りつぶしていく 画面上のどの位置を塗りつぶすかは、カメラの座標系とモデルの座標系で決まる どのような色、画像で塗りつぶすかはマテリアルやテクスチャの設定と、光源と法線ベクトルで決まる !?

何故こうならずに済むのか? エントリー順に塗りつぶすのであれば、右のようになってしまうはず 奥のものから順番にエントリーしないといけないようだが、実際は大丈夫 何故か?

デプステスト 塗りつぶす際に、そのピクセルがカメラからどのくらいの距離かを記録していく 色で表すと右図のようなモノクログラデーションになる 実際に塗りつぶす前にピクセル単位で距離を比較し、手前の位置にくる部分だけを塗りつぶす

半透明との組み合わせによって起きる問題 手前に半透明物体を描く 奥に物体を描く この時点では奥に何も描かれてないので、 背景とのブレンド結果で塗りつぶす 当然デプス値にも手前の距離を書き込む 奥に物体を描く 上で手前の距離値が書き込まれている部分は塗りつぶされない 半透明物体を描いた領域は「背景とのブレンド結果のまま」になる

考えられる対策 半透明物体の描画順を後回しにする カメラの最前面に来るような物体(パラメータやメッセージなど)はオーバーレイ描画を使う 半透明物体同士の順番も、出来るだけカメラから遠い順になるようにする カメラの最前面に来るような物体(パラメータやメッセージなど)はオーバーレイ描画を使う FKならばentryOverlayModel()を使えばよい 半透明物体はデプス値に影響を与えないようにする 後期8回で説明した方法が実はこれ

2段階のデプス値制御命令 これから描く物体は「デプス値に従って前後関係を解決する」or 「その場所がいかなる距離でも無視して上書きする」 glEnable(GL_DEPTH_TEST) glDisable(GL_DEPTH_TEST) これから描く物体は「描画する際にデプス値も一緒に更新する」or「描画する際にデプス値は参照するが更新はしない」 glDepthMask(GL_TRUE) glDepthMask(GL_FALSE)

目的別デプス制御状態まとめ 通常の描画 オーバーレイ描画 背景の後書きを邪魔しない半透明描画 デプステスト有効、デプス値書き込み有効 デプステスト無効、デプス値書き込み有効 背景の後書きを邪魔しない半透明描画 デプステスト有効、デプス値書き込み無効

アルファ値の扱いについて マテリアルとテクスチャで2段階のアルファ値(透明度)が扱える アルファ値は0で完全透過を表す アルファ値0のピクセルは描画領域から除かれるようになっており、デプステストからも外れる これをアルファテストと呼ぶ FKではデフォルトで有効になっている 1で完全不透明となり、その間の値は半透明としてブレンド処理が行われる FKの場合はfk_Sceneでの設定が必要

制御命令ぶっ込みポイント 先ほどの処理の流れに注目 fk_Modelを継承するとこのポイントに割り込みが可能 preでいじってpostで戻せば無問題! 画面をまっさらに 塗りつぶす カメラの位置と向き、その他諸々をセット 描画したいモデルの 座標系をセットする 三角形をたくさんたくさんたくさん描画する (3,4をモデルの個数分) 描き上がった画面を まるっと差し替え preShader() postShader()

どんな命令を突っ込めるか? デプス値制御命令 アルファブレンド制御命令 シェーダ処理命令 独自の描画処理命令 glBlendFunc() (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)がデフォ (GL_ONE, GL_ONE)にすると加算ブレンドになる シェーダ処理命令 独自の描画処理命令 preでいじった状態値はpostで戻すこと

とても参考になるサイト PROJECT ASURA http://asura.iaigiri.com/top.html XNA中心ですが、OpenGLによる実装サンプルも豊富です あくまでターゲットにするスペックの範囲でやれることを探してみるのも良いでしょう

まとめ 一般的な3DCGプログラミングにおける 処理の流れを把握 描画処理の各段階において何が行われているかを知る デプス、アルファなどの挙動と制御 正しい見た目の表現と、外部サンプルをうまく取り込むための基礎知識

提出課題について 以下のものを2/2(水)20時までに提出 [必須]チームで開発している現状のプロジェクト ゲーム本体以外にも開発したものがあればそれも一緒に [選択]授業の中で学んだ要素を活かして制作したプログラム [必須]上記提出物のうちに、どのプロジェクトに何の技術要素が含まれているかを記述