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

Slides:



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

事前アンケートの結果 調査日:平成 2 3年 ○ 月 ○ 日 対 象: ○○○○○○ 中学校 ○ 年 ○ 組 1.
絵コンテの描き方 II-4C プロジェクト 担当:清水. 目次  絵コンテの必要性  絵コンテの目的  絵コンテ用紙と使い方  絵の描き方  絵コンテに起こす  「動き」の描き方  参考資料.
ファーストイヤー・セミナーⅡ 第13回 2次元グラフィックス(1). 2次元グラフィックス Ultra-C では、これまで利用してきた「標準入出力」 以外に「グラフィックス画面」があり、図形などを 表示できる C 言語のグラフィックスには細かな規定がなく、こ れから学ぶ内容が他の環境、システムでは利用でき.
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
初年次セミナー 第13回 2次元グラフィックス(1).
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
豊洲 304教室 15 JULY コンピュータグラフィックス 2008年度版.
情報処理演習 (9)グラフィックス システム科学領域 日浦 慎作.
CGアニメーションの原理 基本技術 対象物体の動きや変形の設定方法 レンダリング技術
プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4
プログラミング入門 電卓番外編 ~エクセルで関数表示~.
3DCGコンテンツの基礎 第5回授業:最終課題制作
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
自作組込みOSを エミュレータで 動かしてみた 坂井弘亮 (KOZOSプロジェクト) Twitter ID:kozossakai.
第4回:ボールを画面内で弾ませよう! (オブジェクトの移動、二次元)
WagbyR6.5 Update 12 PPT版 更新情報
流れ(3時間分) 1 ちらばりは必要か? 2 分散・標準偏差の意味 3 計算演習(例題と問題) 4 実験1(きれいな山型の性質を知ろう)
画像の作成と編集.
CHAPTER1 UMLとオブジェクト指向の基本概念(2)
プロジェクト演習Ⅱ インタラクティブゲーム制作
日本大学 文理学部 情報システム解析学科 谷研究室 益田真太郎
プロセッシング入門1 初歩のプログラミング.
高山建志 五十嵐健夫 テクスチャ合成の新たな応用と展開 k 情報処理 vol.53 No.6 June 2012 pp
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
コンピュータグラフィックスS 第6回 第6回 レンダリング・パイプライン システム創成情報工学科 尾下 真樹
UMLとは           032234 田邊祐司.
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
プログラミング演習3 第2回 GUIの復習.
インタラクティブ・ゲーム制作 <プログラミングコース>
第四回 ゲーム                 05A1054         前田嵩公.
SystemKOMACO Jw_cad基本操作(2) Ver.1
オーサリングツール&ブラウザの 技術的トピック
概要 Boxed Economy Simulation Platform(BESP)とその基本構造 BESPの設計・実装におけるポイント!
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
電界中の電子の運動 シミュレータ作成 精密工学科プログラミング基礎 資料.
シーケンス図を用いて実行履歴を可視化するデバッグ環境の試作
OpenGLライブラリを用いた3次元フラクタルの描画
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
Computer Graphics 第10回 レンダリング(4) マッピング
3次元構築アプリケーションにおける3D表示(2)
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
可視面・不可視面の判定方法と隠れ面(不可視面)の消去法について述べる.
DirectX勉強会 第2回.
プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4
プログラミング基礎a 第12回 Java言語による図形処理入門(3) アニメーション入門
プログラミング基礎a 第11回 Java言語による図形処理入門(3) アニメーション入門
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
プロジェクト演習Ⅱ インタラクティブゲーム制作
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
SystemKOMACO Jw_cad 基本操作(3) Ver.1
プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4
文化財のデジタル保存のための 偏光を用いた透明物体形状計測手法
コンピュータにログイン 第1章 コンピュータにログイン 啓林館 情報A最新版 (p.6-13)
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
主専攻実験 第12回 TA : 高林 大輔(M2), 浦木一眞(M1) Chendra Hadi SURYANTO(D1) {takabayashi, uraki, tsukuba.ac.jp.
バネモデルの シミュレータ作成 精密工学科プログラミング基礎 資料.
Googleマップを活用した 生物調査データベースの構築
モグラたたき.
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
力覚インタラクションのための 物理ベースモデリング
コンピュータ教育開発センター Eスクエア・アドバンス ◆産業協力情報授業◆ CGアニメ入門 株式会社 ドーガ.
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
いじめは決して許されるものではありません。 ネットいじめにあった場合は大人に相談しましょう。
プロジェクト演習Ⅱ インタラクティブゲーム制作
Presentation transcript:

プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4 2012/11/21 Inside of 3DCG

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

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

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

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

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

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

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

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

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

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

今日の課題 「PROJECT ASURA」に掲載されているエフェクトのサンプルのうち、自分たちで使いそうなものをFK上で利用できるように移植してみよう 煙のサンプルについては移植した例があるので、そちらを参考にするとよい