...

2006_DX_3.

by user

on
Category: Documents
6

views

Report

Comments

Transcript

2006_DX_3.
情報学演習ⅠA(Windows アプリケーションの開発)
Windows アプリケーションの開発#3
【課題】 Xファイルの読み込み
1
サンプル・プログラムのダウンロード
① http://www.io.nara-su.ac.jp/~landy/Sample3.lzh をダウンロードする。
② 解凍後、「Sample3.sln」をダブルクリックする。
③ ソリューション・エクスプローラのソース・ファイル「Sample3.cpp」を開く。
2
プログラミング
① 3Dモデル: InitGeometry 関数
Xファイル「ball.x」から3Dモデルを読み込む。
if( FAILED(D3DXLoadMeshFromX(
,
D3DXMESH_SYSTEMMEM, g_pd3dDevice, NULL,
&pMB, NULL, &g_NumMaterial, &g_pMesh )) )
return E_FAIL;
② 行列の設定: SetupMatrices 関数
World 行列を設定する(周期5秒で回転)。
D3DXMATRIXA16 matWorld;
float sec = timeGetTime() / 1000.0f;
float deg =
;
D3DXMatrixRotationY( &matWorld, deg );
g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
※ 変換行列
X軸回転:
D3DXMatrixRotationX( &行列, 回転角[rad] )
Y軸回転:
D3DXMatrixRotationY( &行列, 回転角[rad] )
Z軸回転:
D3DXMatrixRotationZ( &行列, 回転角[rad] )
平行移動:
D3DXMatrixTranslation( &行列, X軸方向の移動量, Y軸方向の移動量,
Z軸方向の移動量)
拡大縮小:
D3DXMatrixScaling( &行列, X軸方向の倍率, Y軸方向の倍率,
Z軸方向の倍率 )
1
3
練習問題#1
① Metasequoia で立方体の3Dモデルを作成し、Xファイルとして保存しなさい。
② 保存したXファイルを表示するプログラムを作成しなさい。
4
練習問題#2
モデルの回転と移動
Y軸に平行な軸で自転しながら(周期 10 秒)、原点を中心にX軸上を幅3,周期 20 秒
で移動する。
D3DXMATRIXA16 matWorld, matA, matB;
float sec = timeGetTime() / 1000.0f;
float deg = 2.0f * D3DX_PI * sec /
;
float x = 3.0f * sin( 2.0f * D3DX_PI * sec /
);
D3DXMatrixRotationY( &matA, deg );
D3DXMatrixTranslation( &matB, x, 0, 0 );
D3DXMatrixMultiply( &matWorld,
,
);
g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
※ 変換行列の掛け算
行列Aの変換を施したのちに行列Bの変換を施すような行列Cを作成する。
D3DXMatrixMultiply ( &行列C, &行列A, &行列B )
例えば、Z軸方向に+1移動した(行列A)後に、30°X軸回転する(行列B)場合、
D3DXMATRIXA16 matA, matB, matC;
D3DXMatrixTranslation( &matA, 1, 0, 0 );
D3DXMatrixRotationX( &matB, D3DX_PI / 6.0f );
D3DXMatrixMultiply( &matC, &matA, &matB );
g_pd3dDevice->SetTransform( D3DTS_WORLD, &matC );
5
課題提出
配布された課題用紙に答えを記入し、提出しなさい。
2
Fly UP