> いっちさん
うまく伝えられなくて申し訳ないです。
カメラを動かしても、ワールド座標に置いていかれずに、
スクリーン上に映り続ける。というものを指しています。
ソース載せます。
------------------------------------------------
- Draw関数 -
C_CAMERA.Draw(); // 3Dカメラ設定
C_PLAYER.Draw(); // プレイヤーモデル描画
C_ENEMY.Draw(); // 敵モデル描画
C_CAMERA_2D.Draw(); // 2Dカメラ設定
C_OBJ.Draw2D(); // 2Dオブジェクト描画
- 2Dカメラ設定 -
SetCameraNearFar( m_fNear, m_fFar ); // ( DEFAULT_NEAR, DEFAULT_FAR )
/*---------------------------------
m_vPos : VECTOR型 カメラ視点座標
( 0.f, 0.f, -500.f )
m_vTarget : VECTOR型 注視点座標
( 0.f, 0.f, 0.f )
m_vUp : VECTOR型 アップベクトル
( 0.f, 1.f, 0.f )
---------------------------------*/
SetCameraPositionAndTargetAndUpVec( m_vPos, m_vTarget, m_vUp );
- 2Dポリゴン描画 -
MATRIX Matrix;
VERTEX3D TmpVec[4];
VECTOR vTmpPos3D;
// スクリーン座標をワールド座標へ変換
vTmpPos3D = ConvScreenPosToWorldPos( m_vPos );
// 行列変換
Matrix = MGetIdent();
Matrix = MMult( Matrix , MGetScale( m_vScale ) );
Matrix = MMult( Matrix , MGetRotX( m_vRot.x * PHI_F / 180.f) );
Matrix = MMult( Matrix , MGetRotY( m_vRot.y * PHI_F / 180.f) );
Matrix = MMult( Matrix , MGetRotZ( m_vRot.z * PHI_F / 180.f) );
Matrix = MMult( Matrix , MGetTranslate( vTmpPos3D ) );
for( int i = 0 ; i < 4 ; i ++ ) {
TmpVec[i] = m_Vertex[i];
TmpVec[i].pos = VTransform( m_Vertex[i].pos , Matrix );
TmpVec[i].dif = GetColorU8( m_Color.r , m_Color.g , m_Color.b , m_Color.a );
}
DrawPolygonIndexed3D( TmpVec , 4 , m_Index , 2 , m_nGrHandle , TRUE );
------------------------------------------------
以上が原因と思っている部分のソースです。
「スクリーン座標をワールド座標へ変換」
というところでおかしくなっていると思い、これを消しました。
一見うまく言っているように見えるのですが、画像のサイズなどが小さくたっていたりで、
思った通りになりませんでした。
描画はDrawPolygonIndexed3Dです。
α値を唯一使える。と思い、使っています。
・DrawPrimitive2D
・DrawBillboard3D
でもα値を扱えるのでしょうか?
そもそも「DrawPrimitive2D」というのをはじめて知りました。