Dxライブラリの3Dで楕円のビルボードをカメラの方向に向けるほど円に見せたいです

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
TangeΘ

Dxライブラリの3Dで楕円のビルボードをカメラの方向に向けるほど円に見せたいです

#1

投稿記事 by TangeΘ » 14年前

円形の場合は下の関数

MV1SetRotationZYAxis( int MHandle, VECTOR ZAxis, VECTOR YAxis, float ZTwist )

を使って玉をこちらの方向に向かせることはできたのですが、楕円形ですと、”float ZTwist ”を指定しないと楕円がペラペラになってしまいます。どのように求めればよいのでしょうか。

 ちなみに、円形の向きは以下のように求めました。

コード:

 
//宣言

VECTOR CameraPos;	// カメラ座標

struct BURETT
{
	VECTOR pos;		//座標
	VECTOR vz;		//ビルボードの向き(Z軸)
	VECTOR vy;		//ビルボードの向き(Y軸)
	MATRIX my;		//vy用の行列

	VECTOR sz;		//進行方向(Z軸)
	VECTOR sy;		//進行方向(Y軸)

	int mhandle;

};

BURETT burett;

//向き指定

burett.vz=VNorm( VSub( burett.pos,CameraPos ) );	//カメラから弾への単位ベクトル

burett.my=MGetRotVec2( VGet(0,0,1), burett.vz ) ;	//
burett.vy=VTransform( VGet(0,1,0),burett.my );		//Y単位ベクトルを作っておく

MV1SetRotationZYAxis( burett.mhandle, burett.vz, burett.vy, 0 );//円形のビルボードならZ軸回転値は不定です

カメラ座標とカメラのターゲットに直線を引いて、
楕円形のモデルの法線ベクトルと重なる角度が”ZTwist”
だと思うのですが、求め方がわかりません

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: Dxライブラリの3Dで楕円のビルボードをカメラの方向に向けるほど円に見せたいです

#2

投稿記事 by h2so5 » 14年前

質問の意味がよくわかりません。
「楕円がペラペラになる」とはどういうことでしょうか?

また、ビルボードを使用するのに DrawBillboard3D関数を使わないのは、なにか理由があるのでしょうか?

TangeΘ

Re: Dxライブラリの3Dで楕円のビルボードをカメラの方向に向けるほど円に見せたいです

#3

投稿記事 by TangeΘ » 14年前

DrawBillboard3D・・・初めて気づきました。てっきり、ビルボードはDrawPolygon3Dだけかと思ってました。
教えてくれてありがとうございます。
リファレンス読んだのですが、ビルボードの2次元的な変形を加えられるDrawModiBillboard3Dを使えば、私の意図する動きになりそうです。
回答ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る