準備・座標系

Processingの導入および,Processingにおける座標系など基本的な事柄について解説していきます.

Processing

本講義ではProcessingの最新版を使用して進めていきます.

3Dにする

Processingで3Dを使用する場合は,size関数の引数を変更します.

size(640, 480, P3D);

前2つは画面のサイズです.3番目の引数に「P3D」という文字列が加わっています.これは図形を描画するレンダリングエンジンの指定で,P3Dを指定することにより3Dのレンダリングが可能になります.

トラブルシューティング:

P3Dを加えると,実行に非常に時間がかかる,もしくは実行されない⇒ウイルス対策ソフト(ウイルスバスターなど)を一時的に終了してください

実行した後表示されるウインドウがタスクバーにめり込む

size関数後,

surface.setLocation(200, 200);

でウインドウ位置を変更することで回避できます.

描いてみる

3次元の座標軸をline関数で描いてみます.今までと異なり,引数が増えていることに注目してください.前半3つが始点(AX,AY,AZ),後半3つが終点(BX,BY,BZ)です.それぞれX軸:赤,Y軸:緑,Z軸:青で色分けしています.

stroke(255, 0, 0);
line(0, 0, 0, 100, 0, 0);
stroke(0, 255, 0);
line(0, 0, 0, 0, 100, 0);
stroke(0, 0, 255);
line(0, 0, 0, 0, 0, 100);

結果を見てみると特に変化がなく2次元で描画されているように見えます.

firststep.png

カメラ

結果が2Dにしか見えないのは,カメラの配置のためです.デフォルトではカメラ位置は次のように設定されています.

camera(width/2.0, height/2.0, (height/2.0) / tan(PI*30.0 / 180.0), width/2.0, height/2.0, 0, 0, 1, 0);

Processingではデフォルトで左手座標系なので以下のようになります.

world.png

カメラの位置,注視点を変更してみます.

camera(100, -100, 100, 0, 0, 0, 0, 1, 0);

X軸,Y軸,Z軸が表示され,3Dであることが確認できました.

secondstep.png

カメラの位置は以下のようになっています.

changecam.png

課題の提出先・提出方法

講義中に完成しチェックを受けた課題については提出不要です.

\\nas002.term.usmc.dendai.ac.jp\授業用ワークスペース\千住キャンパス\後期\未来科学部\⊂霾鵐瓮妊ア学科\FI1メディア演習C(CG)(森谷友昭)月34\第01回\提出\自分の学籍番号フォルダ\

指定されたファイル名で,.pdeファイルのみ提出してください.

提出締め切り:10月11日(金) 18:00

注意:VPNへの接続がうまくいかないことがあるため,提出する時間に余裕を持つこと

https://www.mrcl.dendai.ac.jp/mrcl/it-service/network/vpn/

Cisco AnyConnect VPNの利用なども検討すること

課題1

setup関数,draw関数を導入して,カメラが原点を注視しながらY軸回転するアニメーションを作成せよ.

提出ファイル名:BASIC1_1.pde

実装例:filekadai1.mp4(名前を付けて保存,もしくは閲覧パスを入力)

課題2

課題1を改良し,マウスのいずれかのボタンをクリックしている間はカメラの高さ(y位置)を変更できるようにせよ.

提出ファイル名:BASIC1_2.pde

実装例:filekadai2.mp4(名前を付けて保存,もしくは閲覧パスを入力)

課題3(任意)

現在,一般的な3DCGソフトでは,マウスのいずれかのボタンを押しながらマウスを動かすことで,「ある一点を注視しながら(注視する点を注視点を呼ぶ),注視点を中心に配置された仮想の球上をカメラが移動する」というカメラ制御方法が一般的である.それを再現,実装せよ.

提出ファイル名:ADVANCE1_1.pde

実装例(座標軸だけではカメラの動きが分かりづらいためsphere関数で球を配置している)

ヒント

実装方法の一例を示す。

まずは、カメラの移動を、上下方向と、左右方向の2パターンに分けて考える。

上下方向の場合、まずは、カメラの初期位置となる基準ベクトルを用意する。
マウスY方向の移動量の総和を角度θとして、基準ベクトルを、
X軸回りに、θ度回転させた位置が、新たなカメラの位置となる。
これで、上下方向の移動が実現できる。

ただし、θが+90度以上、もしくは-90度以下になった場合、
カメラの上下方向が反転してしまうため、値を制限する必要がある。

updown.png

左右方向も行う場合には,マウスX方向の移動量の総和を角度φとして、X軸に回転させた基準ベクトルをさらにY軸回転させればよい.左右は回転角の制限は不要である.

leftright.png

参考:X軸回転,Y軸回転の計算(3年前期CGモデリングおよび演習より)

rotx.png
roty.png

添付ファイル: filerotcam.mp4 862件 [詳細] fileroty.png 436件 [詳細] filerotx.png 505件 [詳細] fileupdown.png 517件 [詳細] fileleftright.png 387件 [詳細] fileMetasequoia4.mp4 563件 [詳細] filekadai2.mp4 1015件 [詳細] filekadai1.mp4 965件 [詳細] fileworld.png 775件 [詳細] filesecondstep.png 408件 [詳細] filefirststep.png 497件 [詳細] filechangecam.png 638件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-10-07 (月) 15:12:42