メディア演習C(CG)/第5回
をテンプレートにして作成
開始行:
**テクスチャマッピング,モデル表示 [#ucda70c3]
図形の面に画像(面に貼り付ける画像をテクスチャと呼ぶ)を...
また,より複雑な図形を表示するため,ライブラリを使用して...
**画像の準備 [#c9a7473c]
まずは貼り付けたい画像を準備します.
ここでは例として以下の画像を用います.
-http://pixabay.com/en/brick-wall-bricks-building-302589/
ダウンロードした画像は,Processingの[Sketch]⇒[Add File]か...
#ref(./addfile.png,50%);
**テクスチャマッピング [#u052bc60]
早速テクスチャマッピングしてみます.
PImage img;
void setup()
{
size(640, 480, P3D);
img = loadImage("brick-wall.jpg");
}
void draw()
{
background(127, 127, 127);
camera(100, -100, 100, 0, 0, 0, 0, 1, 0);
axis(100);
noStroke();
beginShape(QUADS);
texture(img);
vertex(0, 0, 0, 0, 480);
vertex(0, -50, 0, 0, 0);
vertex(50, -50, 0, 640, 0);
vertex(50, 0, 0, 640, 480);
endShape();
}
void axis(float l)
{
stroke(255, 0, 0);
line(0, 0, 0, l, 0, 0);
stroke(0, 255, 0);
line(0, 0, 0, 0, l, 0);
stroke(0, 0, 255);
line(0, 0, 0, 0, 0, l);
}
#ref(./wall.png,50%);
変更点としては,画像を読み込むため,PImageクラスのインス...
またテクスチャを面にどのように貼り付けるのか指定する必要...
以下のように,vertex関数に引数が追加されています.
vertex(0, 0, 0, 0, 480);
前半3つは従来から使っていたx,y,z,後半2つがテクスチャマッ...
**モデル表示 [#w88a5c43]
ここまで図形(以降モデルと呼びます)はプログラムで作成し...
しかしながら,より複雑なモデルを表示するには,モデルを作...
自分で一からモデルを読み込むプログラムを書いても良いです...
ここでは一例として,国産のモデリングソフトである「メタセ...
-メタセコイア:http://metaseq.net/jp/
**Model3DView [#n44f1272]
[[Writing Cafe:http://cafe.eyln.com/cgi-bin/wiki/wiki.cgi...
-http://cafe.eyln.com/p5/Model3DView/
%%配布されているライブラリ(MQOLoader.zip)をダウンロード...
%%ユーザ名\Documents\Processing\libraries%%
%%へコピーします.%%
%%Processingを起動し,[File]⇒[Examples]でMQOLoaderが表示...
Processing Ver.2以降ではエラーが発生するため,修正したフ...
#ref(HelloModel.zip);
#ref(./mqoloader.png,50%);
具体的な使い方は「HelloModel」のコードを見るのが早いので...
''自身のプログラムでMQOModelクラスを使用したい場合は,MQO...
**課題の提出先・提出方法 [#h475884f]
招待されているBoxアップロードフォルダ「第05回」に自身の学...
''提出締め切り:5月21日(火) 23:59''
BOXアップロードフォルダの招待メールが来ていない,また,We...
**課題 [#vdde6c4b]
以下のようなアプリケーションを作成せよ.
-使用するテクスチャ,モデルは自身で作成しても構わない
-ライトの設定は自由とする
提出スケッチフォルダ名:BASIC5_1
#ref(./kadai.mp4);
テクスチャ:
PNG:
#ref(./road.png);
JPEG:
#ref(./road.jpg);
モデル:
#ref(./car.mqo);
''右クリック→[名前を付けて保存]''で保存する.(ブラウザに...
プログラムから読み込んで使うので[スケッチ]→[ファイルを追...
***押されたキーの検出 [#ye13a1b1]
-https://www.mlab.im.dendai.ac.jp/programming/2021/intro/...
**任意課題 [#o42680d7]
上記課題をゲーム化せよ
提出スケッチフォルダ名:ADVANCE5_1
実装例:
[[https://tdu.box.com/s/wamqjhv7ew78cknw8v6mot16d6uamw8s]]
(box,学籍メール認証,WindowsまたはmacOS用)
#ref(advance.mp4);
#ref(advance.png);
-Windows10の場合,実行をセキュリティ関係で止められてしま...
***ヒント:ゲームのプログラム [#nbc3b1c8]
グローバル変数とif文を用いた昔ながらの疑似ゲームプログラ...
boolean gameover = false;
...
void draw()
{
if (gameover == false){ //ゲームオーバーではない(=ゲ...
プレイヤーを動かす();
敵を動かす();
if (プレイヤーと敵が接触していたら){
gameover = true;
}
}else{
ゲームオーバー時の処理();
//プレイヤー,敵は止める
//"GAMEOVER",スコアの表示など
}
}
***ヒント:プレイヤーと障害物の当たり判定の例 [#v5f1bfbe]
双方の位置ベクトル間の距離を求め,それが特定の値以下であ...
//px, py, pz:プレイヤーの座標
//ex, ey, ez:障害物の座標
float dx = px - ex;
float dy = py - ey;
float dz = pz - ez;
float l = sqrt(dx * dx + dy * dy + dz * dz);
if (l < 3) //3という値は適当,各自要調整
{
//衝突した際の処理
}
***ヒント:テキスト表示 [#va0dfea5]
P3Dが有効の場合,text関数は3Dとなり3次元の座標を指定する
text("GAMEOVER", -50, -10, -50);
終了行:
**テクスチャマッピング,モデル表示 [#ucda70c3]
図形の面に画像(面に貼り付ける画像をテクスチャと呼ぶ)を...
また,より複雑な図形を表示するため,ライブラリを使用して...
**画像の準備 [#c9a7473c]
まずは貼り付けたい画像を準備します.
ここでは例として以下の画像を用います.
-http://pixabay.com/en/brick-wall-bricks-building-302589/
ダウンロードした画像は,Processingの[Sketch]⇒[Add File]か...
#ref(./addfile.png,50%);
**テクスチャマッピング [#u052bc60]
早速テクスチャマッピングしてみます.
PImage img;
void setup()
{
size(640, 480, P3D);
img = loadImage("brick-wall.jpg");
}
void draw()
{
background(127, 127, 127);
camera(100, -100, 100, 0, 0, 0, 0, 1, 0);
axis(100);
noStroke();
beginShape(QUADS);
texture(img);
vertex(0, 0, 0, 0, 480);
vertex(0, -50, 0, 0, 0);
vertex(50, -50, 0, 640, 0);
vertex(50, 0, 0, 640, 480);
endShape();
}
void axis(float l)
{
stroke(255, 0, 0);
line(0, 0, 0, l, 0, 0);
stroke(0, 255, 0);
line(0, 0, 0, 0, l, 0);
stroke(0, 0, 255);
line(0, 0, 0, 0, 0, l);
}
#ref(./wall.png,50%);
変更点としては,画像を読み込むため,PImageクラスのインス...
またテクスチャを面にどのように貼り付けるのか指定する必要...
以下のように,vertex関数に引数が追加されています.
vertex(0, 0, 0, 0, 480);
前半3つは従来から使っていたx,y,z,後半2つがテクスチャマッ...
**モデル表示 [#w88a5c43]
ここまで図形(以降モデルと呼びます)はプログラムで作成し...
しかしながら,より複雑なモデルを表示するには,モデルを作...
自分で一からモデルを読み込むプログラムを書いても良いです...
ここでは一例として,国産のモデリングソフトである「メタセ...
-メタセコイア:http://metaseq.net/jp/
**Model3DView [#n44f1272]
[[Writing Cafe:http://cafe.eyln.com/cgi-bin/wiki/wiki.cgi...
-http://cafe.eyln.com/p5/Model3DView/
%%配布されているライブラリ(MQOLoader.zip)をダウンロード...
%%ユーザ名\Documents\Processing\libraries%%
%%へコピーします.%%
%%Processingを起動し,[File]⇒[Examples]でMQOLoaderが表示...
Processing Ver.2以降ではエラーが発生するため,修正したフ...
#ref(HelloModel.zip);
#ref(./mqoloader.png,50%);
具体的な使い方は「HelloModel」のコードを見るのが早いので...
''自身のプログラムでMQOModelクラスを使用したい場合は,MQO...
**課題の提出先・提出方法 [#h475884f]
招待されているBoxアップロードフォルダ「第05回」に自身の学...
''提出締め切り:5月21日(火) 23:59''
BOXアップロードフォルダの招待メールが来ていない,また,We...
**課題 [#vdde6c4b]
以下のようなアプリケーションを作成せよ.
-使用するテクスチャ,モデルは自身で作成しても構わない
-ライトの設定は自由とする
提出スケッチフォルダ名:BASIC5_1
#ref(./kadai.mp4);
テクスチャ:
PNG:
#ref(./road.png);
JPEG:
#ref(./road.jpg);
モデル:
#ref(./car.mqo);
''右クリック→[名前を付けて保存]''で保存する.(ブラウザに...
プログラムから読み込んで使うので[スケッチ]→[ファイルを追...
***押されたキーの検出 [#ye13a1b1]
-https://www.mlab.im.dendai.ac.jp/programming/2021/intro/...
**任意課題 [#o42680d7]
上記課題をゲーム化せよ
提出スケッチフォルダ名:ADVANCE5_1
実装例:
[[https://tdu.box.com/s/wamqjhv7ew78cknw8v6mot16d6uamw8s]]
(box,学籍メール認証,WindowsまたはmacOS用)
#ref(advance.mp4);
#ref(advance.png);
-Windows10の場合,実行をセキュリティ関係で止められてしま...
***ヒント:ゲームのプログラム [#nbc3b1c8]
グローバル変数とif文を用いた昔ながらの疑似ゲームプログラ...
boolean gameover = false;
...
void draw()
{
if (gameover == false){ //ゲームオーバーではない(=ゲ...
プレイヤーを動かす();
敵を動かす();
if (プレイヤーと敵が接触していたら){
gameover = true;
}
}else{
ゲームオーバー時の処理();
//プレイヤー,敵は止める
//"GAMEOVER",スコアの表示など
}
}
***ヒント:プレイヤーと障害物の当たり判定の例 [#v5f1bfbe]
双方の位置ベクトル間の距離を求め,それが特定の値以下であ...
//px, py, pz:プレイヤーの座標
//ex, ey, ez:障害物の座標
float dx = px - ex;
float dy = py - ey;
float dz = pz - ez;
float l = sqrt(dx * dx + dy * dy + dz * dz);
if (l < 3) //3という値は適当,各自要調整
{
//衝突した際の処理
}
***ヒント:テキスト表示 [#va0dfea5]
P3Dが有効の場合,text関数は3Dとなり3次元の座標を指定する
text("GAMEOVER", -50, -10, -50);
ページ名: