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

Slides:



Advertisements
Similar presentations
Problem C: Grated Radish ~大根おろし~. 成績 Submit 数: 0 Accept 数: 0 問題セットの中で最難問題なので解けな くても仕方が無いかなと思いつつ, 1 チー ム位 submit して欲しかった.
Advertisements

特別支援教育で使える PowerPoint の活用法 研修 最低限必要なスキルはこれでバッチリ!! ICT 活用支援員 高松 崇.
プロジェクト演習Ⅱ インタラクティブゲーム制作
初年次セミナー 第13回 2次元グラフィックス(1).
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4
メディア基礎演習 3Dコンテンツの基礎 第5回:制作作業.
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
Win32APIとMFC H107102 古田雅基 H107048 佐藤一樹 H107126 山下洋平.
プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4
プロジェクト演習Ⅱ インタラクティブゲーム制作
プログラミング演習Ⅱ 第12回 文字列とポインタ(1)
第四回 VB講座 画像とタイマー.
基礎プログラミングおよび演習 第8回.
Handel-Cによる       エアホッケー.
EGSに対応した粒子軌跡と 計算体系の3次元表示ソフト - CGVIEW -
プロジェクト演習Ⅱ インタラクティブゲーム制作
第3回:ボールを上下に動かそう! (オブジェクトの移動、一次元)
高山建志 五十嵐健夫 テクスチャ合成の新たな応用と展開 k 情報処理 vol.53 No.6 June 2012 pp
情報学部 プログラミング体験教室 (中級編)
プロジェクト演習Ⅱ インタラクティブゲーム制作
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
Titanium Studioを使った アプリ開発 Vol.1
CGと形状モデリング 授業資料 長井 超慧(東京大学)
C 言語について 補足資料 資料および授業の情報は :
文献の整理術 ―文献管理ソフトを使ってみよう―!
基礎プログラミング演習 第10回.
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
プロジェクト演習Ⅱ インタラクティブゲーム制作
電界中の電子の運動 シミュレータ作成 精密工学科プログラミング基礎 資料.
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
プロジェクト演習Ⅱ インタラクティブゲーム制作
OpenGLライブラリを用いた3次元フラクタルの描画
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
伺かのための三角関数講座  うかべん大阪# /05/03
 情報の授業 アルゴリズムとプログラム(1) Go.Ota.
デジタル画像とC言語.
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
プロジェクト演習Ⅱ インタラクティブゲーム制作
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
基礎プログラミング演習 第12回.
プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4
Bottom-UpとTop-Down アプローチの組み合わせによる 単眼画像からの人体3次元姿勢推定
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
JAVA GUIプログラミング 第3回 イベント処理① マウスイベント.
円と正多角形 プログルをつかって学ぼう.
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
プログラミング入門 電卓を作ろう・パートI!!.
本当は消去できていない!? ~データを完全消去する方法~
本当は消去できていない!? ~データを完全消去する方法~
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
第0章 MMC PCセクションへようこそ! ~VC++導入~
バネモデルの シミュレータ作成 精密工学科プログラミング基礎 資料.
精密工学科プログラミング基礎 第7回資料 (11/27実施)
アルゴリズム入門 (Ver /10/07) ・フローチャートとプログラムの基本構造 ・リスト ・合計の計算
コンピュータ教育開発センター Eスクエア・アドバンス ◆産業協力情報授業◆ CGアニメ入門 株式会社 ドーガ.
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
C言語を用いたゲームの作成 種田研究室 05A2055 松井和幸.
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
プロジェクト演習Ⅱ インタラクティブゲーム制作
3.1 シューティングゲームの当たり判定 当たったら死亡.
市松模様を使用した カメラキャリブレーション
プロジェクト演習Ⅱ インタラクティブゲーム制作
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
FPS(続き).
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

プロジェクト演習Ⅱ インタラクティブゲーム制作 第8回 はじめての3Dプログラミング 当たってるよ編

今日の内容 どんがらクラッシャー 当たり判定の基礎 条件分岐の嵐 配列と繰り返しもそろそろ使おうか

今週のプロジェクト 授業資料ページからダウンロードします 今週のFKUT更新情報 落としたZipファイルを解凍して、 出てきたフォルダを好きなところに配置 今週のFKUT更新情報 衝突判定関連の機能を追加

今日のサンプル 丸いのが当たります 四角いのも当たります ぶつかります

一応プログラミング演習にあわせて自重してたんだけど 配列、使えてる?大丈夫?

C++での配列 Javaより簡単に扱えます Javaよりデンジャラスです double dDs[20]; これだけでOK fk_Vector や fkut_SphereModel とかも可 Javaよりデンジャラスです 要素数をオーバーするとどんがらクラッシュ クラッシュしてくれる場合はまだマシで、 普通に動いてるように見えて内部では 崩壊している場合も…

繰り返しと組み合わせると 座標値を計算して、 ずらーっと細かい物体を 並べたりできます 共通の設定項目をまとめて書けたりします fkut_SphereModel maru[20]; for(int i = 0; i < 20; i++) { maru[i].glMoveTo(-100.0 + i*10.0, 0.0, 0.0); maru[i].create(4, 5.0); window.entry(&maru[i]); } 座標値を計算して、 ずらーっと細かい物体を 並べたりできます 共通の設定項目をまとめて書けたりします

どんどん使いましょう いっぱい敵を出したり、地形用のパーツを作るときには配列の方が便利なことが多いです iを座標値の計算に使うと、手間のかかる配置が楽できたり、計算式次第では美しい形ができたりします

ガチ数学の世界へようこそ 当たり判定の基礎

衝突判定とは CG上で物がぶつかっているか どこでぶつかったか いつぶつかったか どのくらい位置を動かすと帳尻が合うか などなどを計算して求める、絶望的な までに数学スパイラルな技術分野である

衝突判定用の形状 見た目重視で表示している形状で厳密な判定をすると、無双などはやってられないことになる 判定用の簡易形状を用意し、裏ではそれで計算するのがセオリー

球ベース判定 球 カプセル シンプルイズベスト 球だけで押し通すのは厳しいが、他の判定と併用することも多い 球の中心を「点」から「線分」に拡張することにより、「カプセル」へと進化する カプセル 球よりボリュームの広いエリアをカバー 球の弾丸貫通問題対策としても使用 ボーンのように組み合わせれば人型キャラの判定は十分作れる

球とカプセル 中心間の距離が、お互いの半径の合計より小さかったら衝突 球がうぞぞぞぞっと動いた軌跡 組み合わせて人型にしたり、弾丸貫通 問題への対処に使う

角張り系判定 AABB OBB 凸包 XYZ軸に平行な直方体 球やカプセルとの判定も可能で、その場合は裏技を使ってOBB同様の扱いができる 自由に回転できる直方体 角張り系判定の究極系とされる 凸包 対球に関しては最強レベルの判定素材 凸包同士や、その他の判定素材との連携が困難

凸包とは 凹んだ部位のない 立体 n角柱、n角錐なども凸包に含まれる 点(球)との内外判定がべらぼうに簡単 衝突検出になると 難しいが。。。

とりあえず 球と四角形で判定してみましょう create()したもの同士はすぐ判定できます sphere.checkToSphere(other_s, back); block.checkToBlock(other_b, back); block.checkToSphere(other_s, back); if(命令 == true)でYesなら衝突しており、 backに設定したfk_Vectorの変数に 戻しベクトルが入る

注意点 あまり高速に動かしていると、貫通してしまう場合がある 物体が密集していると、押し合いへし合いしてあらぬ方向へ押し出される 速度が大きい場合は、少しずつ動かして判定するのが吉 物体が密集していると、押し合いへし合いしてあらぬ方向へ押し出される ゲームを構成する最低限の配置を工夫しよう

実演します、コードの公開はあとでね その他もろもろ

カメラを一緒に動かす 自分で用意したfk_Modelの変数をカメラとしてセットすると、物体同様に動きをコントロールすることが可能 キャラクターの動きと同期すれば、FPS的な画面も作れる 見下ろし系のゲームの場合、Y軸方向にも同期させると気持ち悪いので注意

任意軸回転 これまでは「方向」を指定するやり方しか教えていなかった XYZ軸それぞれについてこのくらいの角度で!などといった姿勢の指定が可能 glAngle() 現在位置からここを中心に回転しろ、なんて命令も glRotateWithVec()

今日の課題 BASIC ADVANCED EXTREME ボンバーマン的なフィールドを作ってみよう マリオ64的なフィールドを作ってみよう ブロックや球をぐいぐい押せるような フィールドを作ってみよう(かなり難)