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

Slides:



Advertisements
Similar presentations
ファーストイヤー・セミナーⅡ 第13回 2次元グラフィックス(1). 2次元グラフィックス Ultra-C では、これまで利用してきた「標準入出力」 以外に「グラフィックス画面」があり、図形などを 表示できる C 言語のグラフィックスには細かな規定がなく、こ れから学ぶ内容が他の環境、システムでは利用でき.
Advertisements

プロジェクト演習Ⅱ インタラクティブゲーム制作
初年次セミナー 第13回 2次元グラフィックス(1).
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
情報処理演習 (9)グラフィックス システム科学領域 日浦 慎作.
初年次セミナー 第14回 2次元グラフィックス(2).
情報処理実習 第05回 Excelマクロ機能入門 操作マクロ入門.
情報処理 第8回.
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
情報処理 第7回.
初年次セミナー 第4回 整数と実数の取り扱い.
ゲームプログラミング講習 第1章 DXライブラリ入門
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
Excelによる3-D/等高線グラフの描画 2変数関数の描画 Excel によるグレイスケールマップ風描画
Excelによる3-D/等高線グラフの描画 2変数関数の描画 Excel によるグレイスケールマップ風描画
プロジェクト演習Ⅱ インタラクティブゲーム制作
第6章 2重ループ&配列 2重ループと配列をやります.
プロジェクト演習Ⅱ インタラクティブゲーム制作
第3回:ボールを上下に動かそう! (オブジェクトの移動、一次元)
情報学部 プログラミング体験教室 (初級編)
情報 第2回:状態遷移 その2.
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
(Wed) Edited by KON IT講習会 一太郎編.
インタラクティブ・ゲーム制作 <プログラミングコース>
Titanium Studioを使った アプリ開発 Vol.1
CGと形状モデリング 授業資料 長井 超慧(東京大学)
【プログラミング応用】 必修2単位 通年 30週 授業形態:演習.
C 言語について 補足資料 資料および授業の情報は :
Borland Delphi 6 でビジュアルプログラミング
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
JAVA GUIプログラミング 第2回 グラフィックスを使っての演習 グラフを描こう.
情報処理 第8回.
行列による画像処理 デジタル表現論 担当者:劉 雪峰 2017年6月1日.
第二回 VB講座 電卓を作ろう.
プログラミング応用 printfと変数.
オブジェクトの回転と演算 (復習) オブジェクトの回転 空を作るには 形を組み合わせる
はぐれたメルでプログラムを 担当した一人の仁藤が 授業開始前の2時間くらいで作成
ゲームプログラミング講習  第3章 ゲーム作成 ブロック崩しを作ります ゲームプログラミング講習 第3章 ゲーム作成.
0.2 プロジェクトの準備 DXライブラリを使うための準備.
デジタル画像とC言語.
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
プロジェクト演習Ⅱ インタラクティブゲーム制作
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
基礎プログラミング演習 第12回.
C言語 はじめに 2016年 吉田研究室.
高度プログラミング演習 (01).
第1章 いよいよプログラミング!! ~文章の表示 printf~
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
オブジェクト指向プログラミング クラス 継承
vc-2. Visual Studio C++ のデバッガー (Visual Studio C++ の実用知識を学ぶシリーズ)
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
プログラミング入門 電卓を作ろう・パートI!!.
Excelによる3-D/等高線グラフの描画 2変数関数の描画 Excel によるグレイスケールマップ風描画
情報基礎演習I(プログラミング) 第8回 6月8日 水曜5限 江草由佳
CG2 第4回 小林 学 湘南工科大学 2013年5月6日 〒 神奈川県藤沢市辻堂西海岸1-1-25
vc-1. Visual Studio C++ の基本操作 (Visual Studio C++ の実用知識を学ぶシリーズ)
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
標準入出力、変数、演算子、エスケープシーケンス
Visual Studio 2013 の起動と プロジェクトの新規作成 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
プロジェクト演習Ⅱ インタラクティブゲーム制作
プロジェクト演習Ⅱ インタラクティブゲーム制作
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
FK Toolkit for Visual C++2010
printf・scanf・変数・四則演算
第2章 数値の入力と変数 scanfと変数をやります.
第1章 文字の表示と計算 printfと演算子をやります.
Kinectで画像処理 第2回.
Presentation transcript:

プロジェクト演習Ⅱ インタラクティブゲーム制作 第2回 はじめての3Dプログラミング 3次元的お絵かき編

今日の内容 前回のセットアップの続き 「すごい変数」を使ったプログラミング 「世界」を我が手に プログラムによる3次元的お絵かき

ダウンロードするもの Visual C++ 2008 Express Edition FK ToolKit Eclipse的なもの 授業ページからのリンクを参照 FK ToolKit 3Dでぐりぐりするものを作るための道具箱

セットアップ手順 “FK_VC08_2_8_9_0.exe”を実行 インストール先は変えてもよいが、 そのままの方が混乱しなくてよいかも 後はひたすら次へとかOKとか同意とか インストール先は変えてもよいが、 そのままの方が混乱しなくてよいかも

今週のプロジェクト 授業資料ページからダウンロードします 落としたZipファイルを解凍して、出てきたフォルダを好きなところに配置 本来は毎回「新規作成→プロジェクト」で作るのですが、色々サンプルなどを含めることが多いので、とりあえずこういう形で進めます

中身 First3D.sln First3D.vcproj main.cpp FKUT これを開くとVisual Studioが起動します こっちでも開きます main.cpp Visual Studio上で 読み書きする プログラム本体です FKUT ないしょ☆

とりあえず開いてみよう ソリューション エクスプローラー → First3D → ソース ファイル →main.cpp C++のプログラムで主に書くのは cppファイル hファイルもそのうち書きます

早速動かそう プロジェクトを開いたらF7キーでビルド うまくいったようなら、Ctrl+F5で実行 黄色いブロックと赤い丸が表示されればOK コンパイルと意味は(だいたい)一緒です うまくいったようなら、Ctrl+F5で実行 黄色いブロックと赤い丸が表示されればOK

コメントによく出てくる すごい変数プログラミング?

「すごい変数」とは? プログラミングに付きものの「変数」 普通のだと「数値」しか仕舞えません intには整数、doubleには実数が仕舞えます ですが世の中にはもっとすごい変数が 存在するのです “fkut_Window”とか”fkut_BlockModel”がintやdoubleなどの変数型にあたる “window”や”block”が変数名

「すごい変数」のすごいところ 数値以外の「何か」を仕舞える 「すごい変数」は「技」を持っている 自分で自由に「すごい変数」を作れる! 表現できる、といってもいい 「すごい変数」は「技」を持っている 呼び出し方 すごい変数名.技の名前(); 色々な設定をしたり、アクションを起こさせたりできる 自分で自由に「すごい変数」を作れる!

これからの時代は 「すごい変数プログラミング」 またの名を 「オブジェクト指向プログラミング」と言います すごい変数の型=「クラス」 プログラム中で作ったすごい変数そのもの =「オブジェクト」 すごい変数が持っている技=「メンバ関数」 細かいことは後々で覚えても無問題 まずは「すごい変数」を使いこなそう

数値で構築される世界の法則を知ろう 「世界」を我が手に

世界は数値で構築されている 確かめてみよう 下のコードを適当なところに追加 赤の軸がX軸 緑の軸がY軸 1マスで距離5 window.showGuide (FKUT_ALL_GUIDE); 赤の軸がX軸 緑の軸がY軸 1マスで距離5

数学のグラフを思い出してみよう (嫌かも知れないけど) 右に行くほどX座標が大きくなる 左に行くほどX座標が小さくなる 上に行くほどY座標が大きくなる 下に行くほどY座標が小さくなる 軸の伸びている方がプラス、と覚えよう でもこれって2次元だよね?

実は三次元なんですよ 以下のコードを追記 さっきの追記は以下のように修正 さあ、どうなる? window.setCameraPos(0.0, 50.0, 100.0); window.setCameraFocus(0.0, 0.0, 0.0); さっきの追記は以下のように修正 window.showGuide(); さあ、どうなる?

座標とカメラ 青い軸がZ軸 最初は(0, 0, 100)の地点から(0, 0, 0)を見てました 今は(0, 50, 100)に上昇して(0, 0, 0)を見下ろしている状態 // カメラを右ドラッグで自由に動かせるモード window.setTrackBallMode(true);

理屈が分かったところで プログラムによる 3次元的お絵かき

とりあえず作れる図形は4種類 fkut_BlockModel で直方体 fkut_SphereModel で球 fkut_PrismModel で円柱 fkut_ConeModel で円錐 作りたい図形に応じて変数型を選ぶ 変数名は自分で好きに決めていい 全ての技は「変数名.技名();」で呼び出す いつまでも「技」とか言ってるとアレなので、 「命令」と言い換えましょう

作る手順 create()でサイズを決める 角数とは曲線の滑らかさをあらわす Blockの場合は(幅,高さ,奥行き) Sphereの場合は(角数,半径) Prismの場合は (角数,上面半径,底面半径,高さ) Coneの場合は(角数,半径,高さ) 角数とは曲線の滑らかさをあらわす 曲線は角をたくさん作って擬似的に表現する

3Dでは単純な色と言わず マテリアルと呼びます 単純に色が付かないのは3次元だから 光の向きによって陰影が付く 今は上から斜めに光が当たっている設定 setMaterial()でマテリアルを指定する だいたいは英単語で指定できる 指定できるキーワードは別途資料を参照

使えるマテリアル一覧 AshGray BambooGreen Blue Brown BurntTitan Coral Cream Cyan DarkBlue DarkGreen DarkPurple DarkRed DarkYellow DimYellow Flesh GlossBlack GrassGreen Gray1 Gray2 Green HolidaySkyBlue IridescentGreen Ivory LavaRed LightBlue LightCyan LightGreen LightViolet Lilac MatBlack Orange PaleBlue PearWhite Pink Purple Red UltraMarine Violet White Yellow

位置と姿勢 位置はglMoveTo(x, y, z);で移動できます 姿勢がちょっと難しいです 全てのModelは作りたての時(0,0,-1)を 向いてます、これを「前」にします それを基準に向けたい方向を考えます 右(1,0,0)、左(-1,0,0) 上(0,1,0)、下(0,-1,0) 前(0,0,-1)、後(0,0,1) glVec(x, y, z);で向けたい方向を指定します

作例 fkut_BlockModel kushi; // すごい変数「直方体になる変数」 kushi.create(1.0, 1.0, 70.0); // 縦横高さがの立方体を作る kushi.setMaterial(Green); // 色は黄色にする kushi.glMoveTo(-2.5, -2.5, 0.0); // 直方体の中心点を指定する kushi.glVec(5.0, 15.0, 0.0); // 右斜め上を向かせる window.entry(kushi); // ↑で先に作ったウィンドウ(window)に表示する fkut_SphereModel dangoA, dangoB, dangoC; // すごい変数「球になる変数」 dangoA.create(8, 8.0); dangoA.setMaterial(Yellow); dangoA.glMoveTo(-5.0, -10.0, 0.0); window.entry(dangoA); // ↑で先に作ったウィンドウ(window)に表示する dangoB.create(8, 8.0); dangoB.setMaterial(Yellow); dangoB.glMoveTo(0.0, 5.0, 0.0); window.entry(dangoB); // ↑で先に作ったウィンドウ(window)に表示する dangoC.create(8, 8.0); dangoC.setMaterial(Yellow); dangoC.glMoveTo(5.0, 20.0, 0.0); window.entry(dangoC); // ↑で先に作ったウィンドウ(window)に表示する

こうなる

課題 以下のお題の図形を作ってみよう 自分の一番のお気に入りをAssitで提出 何かの動物(→はねこ) 自動車 サザエさん的なおうち その他思いつくもの 自分の一番のお気に入りをAssitで提出

FKセットアップ時にうまく設定が追加できなかった場合 ツール→オプション プロジェクトおよびソリューション→VC++ディレクトリ 「インクルードファイル」と 「ライブラリファイル」に対して ”C:\FK_VC08”を追加する

1回やればOKな設定画面