Bishamon Personal コミュニティ

Bishamon Personal コミュニティ 掲示板(仮運営中)です。

Bishamon Personal コミュニティ » DirectX9 » ビュー行列のセットについて

ビュー行列のセットについて

Post Reply

Page: 1

Author Post
Member
Registered: Oct 2011
Posts: 16
エフェクトを傾けるため、managerのビュー行列を変更しようとしましたがどうも上手くいきません。


ml::matrix44 view;
ml::vector3d v3eye(0.0f,eye_ypos,1.0f,0.0f);
ml::vector3d v3at(0.0f,0.0f,0.0f,0.0f);
ml::vector3d v3up(0.0f,1.0f,0.0f,0.0f);
view.lookat_l(v3eye,v3at,v3up);
Manager->SetView(view);



やり方はこれで合っていますでしょうか?
_______________
twitter: @eiki_okuma
Administrator
Registered: Oct 2011
Posts: 206
Location: Tokyo
BMManagerのBegin2Dメソッドのあとに呼び出していますでしょうか。
Begin2Dの中で、SetViewされているので上書きされているかもしれません。
Member
Registered: Oct 2011
Posts: 16
ありがとうございます。

仰るとおりBegin2D〜End外で呼び出していました。
が、中に記述しても変化が見られないようです。

サポートメールアドレスの方にソースコードを送付致しましたため、
見て頂ければ幸いです。

宜しくお願いします。
_______________
twitter: @eiki_okuma
Administrator
Registered: Oct 2011
Posts: 206
Location: Tokyo
BMManager::SetView, BMManager::SetProjectionはBMManager::Beginの前にコールして下さい。
また、ビューやプロジェクション行列を変更したい場合はBegin2Dを呼ばずにBeginを呼んで下さい。
Begin2Dの内部でSetView/SetProjectionされているので設定しても上書きされてしまいます。

e.g.

BMManager *manager = ...;

// ビュー行列の設定
ml::matrix44 view;
ml::vector3d eye(10, 10, 10, 0);
ml::vector3d at(0, 0, 0, 0);
ml::vector3d up(0, 1, 0, 0);
view.lookat_r(eye, at, up);
manager->SetView(view);

// プロジェクション行列の設定
ml::matrix44 proj;
float angle = ml::to_radian(60.f);
float aspect = SCREEN_WIDTH/SCREEN_HEIGHT;
float near = 1;
float far = 1000;
proj.perspectivefov_r(angle, aspect, near, far);
manager->SetProjection(proj);

// 描画
manager->Begin();
...
manager->End();

Member
Registered: Oct 2011
Posts: 16
ありがとうございます。
Begin2Dの代わりに自前でSetView/SetProjectionを設定し、上手く行きました。
_______________
twitter: @eiki_okuma

Post Reply

Page: 1

Bishamon Personal コミュニティ » DirectX9 » ビュー行列のセットについて

Bishamon Personal コミュニティ is powered by UseBB 1 Forum Software