ページ 11

スピードメータのようなものを描画したいと思います

Posted: 2010年9月13日(月) 19:55
by kon
初めまして、DirectXで3Dのレースゲームを作ろうと考えています。
メタセコイアで簡単なモデルを作成してキーボードで操作することはできるようになりました。

次は、画面の右下あたりにスピードメータのようなものを描画しようと思うのですが、方法が思いつかなくて困っています。

何か良いアイデアはないでしょうか? よろしくお願いします。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月13日(月) 20:12
by シエル
質問が具体的じゃないので、どの辺で悩んでいるか分かりませんが、
現在のスピードを最大スピードで割った割合をメーターの長さにすればいいのでは?

それともどんなモデルにしようか悩んでるんですか?

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月13日(月) 20:32
by kon
シエルさん、お返事ありがとうございます。

質問の内容が具体的じゃなかったので、補足したいと思います。

悩んでいる内容は、どうすれば画面右下にスピードメータを描画できるかを悩んでいます。

最初は、奥行きなし(z軸の値:0)のテクスチャを描画すれば良いのかなと思いましたが、ダメでした。

ネットで調べようにも、どう検索すれば良いかわからない状態で、偶然このサイトを見つけたので書き込みさせていただきました。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月13日(月) 20:37
by シエル
駄目っていうのは具体的にどういうことですか?

描画されなかったってことですか?

深度テストやステンシルテストなどには問題はありませんか?

ちょっとコードとかがないと原因を突き止めれそうにありません。。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月13日(月) 20:39
by パコネコ
メーターっというとあの丸っこいものですか?
(車とかについてる)
円で言うとスピードを0~360に変換して時計みたいに描写しては?
(スピードを0~360にするために(スピード*360/最大スピード))
真中から角度におおじて線を引くと言う感じでどうでしょう?

なんか勘違いしてたらすみません。

======
あれ?
タイミングが…遅かったようで。
======
3Dは経験なしなんで、勘違いな、発言してたらすいません。
画像

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月13日(月) 21:17
by kon
シエルさん、パコネコさん、お返事ありがとうございます。

>>シエルさん
ダメというのは、描画されなかったわけではなく、画面の右下にされなかったという意味です。
スクリーンショットを載せましたのでそちらを見てもらえば現状が分かると思います。



>>パコネコさん
詳しい解説ありがとうございます。
後ほど参考にさせていただきます。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月13日(月) 21:21
by シエル
こ、このロボットは見覚えがありますwもしかしたら同じ本で勉強されてるのかもw

右下に移動されないということですが、DIRECTX9を使って開発されますか?

もしそうであれば、ポリゴンの頂点フォーマットはどのように設定してますか?
ただの2D描画であれば、頂点変換済み座標を使うと簡単ですよ。

どちらにしろコードを見せていただいたほうが良いかもしれません。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月13日(月) 21:42
by kon
シエルさん、お返事ありがとうございます。

多分、シエルさんと同じ本で勉強していると思います。

本のタイトルは「DirectXゲームグラフィックスプログラミングVer.2.0」 です。

以下は、スピードメータ描画用テクスチャのコードの一部です。

ソースコードの情報が不足であれば、他の部分も載せたいと思います。

    MY_VERTEX* v6;
m_pMyVB6->Lock( 0, 0, (void**)&v6, 0);

// 頂点座標の設定(スピードメータ)
   v6[0].p = D3DXVECTOR3( 10.0f, 0.0f, NULL );
  v6[1].p = D3DXVECTOR3( 30.0f, 0.0f, NULL);
v6[2].p = D3DXVECTOR3( 10.0f, -5.0f, NULL );
v6[3].p = D3DXVECTOR3( 30.0f, -5.0f, NULL );


v6[0].t = D3DXVECTOR2(0.0f, 0.0f);
v6[1].t = D3DXVECTOR2(1.0f, 0.0f);
v6[2].t = D3DXVECTOR2(0.0f, 1.0f);
v6[3].t = D3DXVECTOR2(1.0f, 1.0f);

v6[0].color = v6[1].color = v6[2].color = v6[3].color = D3DXCOLOR(1.0f,0.0f,0.0f,1.0f);

  m_pMyVB6->Unlock();

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月13日(月) 21:46
by シエル
頂点バッファ使ってるんですね。

頂点フォーマットはどのように設定していますか?

D3DFVF_TEX1 | D3DFVF_DIFFUSE | D3DFVF_XYZですか?

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月13日(月) 21:51
by シエル
すいません。ちょっと他のことするので、回答が遅れるかもしれません。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月13日(月) 21:54
by kon
シエルさん、お返事ありがとうございます。

頂点フォーマットは、

#define MY_VERTEX_FVF ( D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1 )

に設定しているので問題ないと思います。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月14日(火) 02:59
by ぬるぽ
DirectXではありませんがDXライブラリなら
管理人さんが作成したスピードメーターのサンプルプログラムが
下記のURLより記してあります。

http://dixq.net/sm/d6.html

参考にしてみてはいかがでしょうか。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月14日(火) 03:39
by シエル
78~81ページの移動行列を使って移動しているページを参照して下さい。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月14日(火) 19:29
by kon
ぬるぽさん、シエルさんお返事ありがとうございます。

>>ぬるぽ さん
まだ、実行はしていませんが完成度が高そうですね。教えていただきありがとうございます。


>>シエルさん
移動行列を使って移動とありますが、テクスチャを移動させるということでしょうか?

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月14日(火) 20:02
by シエル
いえ、テクスチャマッピングしたオブジェクトを移動行列を使って移動させるということです。。。
先ほど言ったページを見ていただければ載ってます。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月14日(火) 20:20
by 御津凪
ヒントを提示しますね。

画面上に固定した位置に表示する場合、通常使用している行列とは別にその位置を指定する為の行列を設定し直す必要があります。
この場合、3D描画用の各変換行列と、2D描画用の各変換行列を用意し、それぞれの描画時に合わせて設定します。
3D描画用の変換行列を指定したままだと、3D空間上に表示されてしまいます。

2D描画用の各変換行列の作り方は、

ワールド行列:
 x軸が(2 / 画面横幅)の拡大率、
 y軸が(-2 / 画面縦幅)の拡大率で、
 x軸とy軸を-1移動する行列。

ビュー行列:
 まっすぐz軸の+方向に向かせる行列。(上方向はy軸の+方向)

プロジェクション行列:
 正射影行列。(near は 0.0f で)

となります。
これで頂点を画面左上を原点としたピクセル座標で指定すればきれいに表示できるはず、です。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月14日(火) 20:26
by シエル
正射影行列なら215~216ページに載ってますよ。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月15日(水) 19:51
by kon
御津凪さん、シエルさんお返事ありがとうございます。

>>御津凪さん

すみませんが、御津凪さんに何点かお聞きしたいことがあります。

・1点目は「3D描画用の各変換行列と、2D描画用の各変換行列を用意しそれぞれの描画時に合わせて設定」とありますが、3Dと2Dの両方を描画するには、どうすれば良いのでしょうか?

・2点目ワールド行列: 「x軸とy軸を-1移動する行列」というのはx軸・y軸に-1を設定すれば良いのでしょうか?

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月15日(水) 20:37
by 御津凪
> ・1点目

現在描画している処理の中に、 IDirect3DDevice9::SetTransform で各変換行列を設定していると思います。
3D描画全て行った後、ここに2D用の各変換行列を設定して描画処理をします。
描画処理は、その処理を行うときの設定に従って処理されます。

今回の場合だと、現在の描画処理の最後あたりに追記するようにすれば問題なくいけるかと思います。
(深度バッファを使っている場合は念のため2D描画時には切っておくといいでしょう)

> ・2点目

その通りです。

ちなみに下記のような感じに D3DXMATRIX のコンストラクタでまとめることもできます。

D3DXMATRIX world(
2.0f / width, 0.0f, 0.0f, 0.0f,
0.0f, -2.0f / height, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
-1.0f, -1.0f, 0.0f, 1.0f,
);

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月16日(木) 21:30
by kon
スピードメータ描画用のテクスチャが表示されなくなりました。
多分、2D描画用の設定が原因だと思います。

以下にソースコードを記載します。

// ワールドマトリックスの設定( 何もしないマトリックスの生成)
D3DXMatrixIdentity(&m_world);

D3DXMatrixScaling( &mScale,( 2.0 / CLIENT_WIDTH), (-2.0 / CLIENT_HEIGHT), 1.0f) ;
//移動
D3DXMatrixTranslation( &mMove, -1.0f, -1.0f, 0.0f);

//マトリックス合成
D3DXMatrixMultiply(&m_world,&mScale, &mMove);

// マトリックスをレンダリングパイプラインにセット
pD3DDevice->SetTransform(D3DTS_WORLD, &m_world);

// カメラの位置と方向を設定
D3DXMatrixLookAtLH(&m_view,
&D3DXVECTOR3( 10.0f , 5.0f, 5.0f ), // カメラの位置
&D3DXVECTOR3( 0.0f, 0.0f, 0.0f), // カメラの方向を向ける点
&D3DXVECTOR3( 0.0f, 1.0f, 0.0f)); // カメラの上の方向

// マトリックスをレンダリングパイプラインに設定
pD3DDevice->SetTransform(D3DTS_VIEW, &m_view);

//正射影行列
D3DXMatrixIdentity(&m_proj);
D3DXMatrixOrthoLH(&m_proj, 2.0f, 2.0f, 0.0f, 100.0f);
pD3DDevice->SetTransform(D3DTS_PROJECTION, &m_proj);

// テクスチャをパイプラインにセット(スピードメータ)
pD3DDevice->SetTexture( 0, m_pTexture6);

// VertexBufferの描画
pD3DDevice->SetStreamSource( 0, m_pMyVB6, 0, sizeof(MY_VERTEX) );
pD3DDevice->SetFVF( MY_VERTEX_FVF );
pD3DDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );

pD3DDevice->SetTexture( 0, NULL);

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月16日(木) 22:00
by 御津凪
// カメラの位置と方向を設定
D3DXMatrixLookAtLH(&m_view,
&D3DXVECTOR3( 0.0f , 0.0f, -5.0f ), // カメラの位置
&D3DXVECTOR3( 0.0f, 0.0f, 0.0f), // カメラの方向を向ける点
&D3DXVECTOR3( 0.0f, 1.0f, 0.0f)); // カメラの上の方向

としたら、表示されますか?

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月17日(金) 20:18
by kon
御津凪さん、お返事ありがとうございます。
カメラ位置の設定を変更してみましたが、相変わらず表示されないままです。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月17日(金) 20:29
by シエル
私なら頂点バッファを、
(-0.5,0.5)(0.5,0.5)(-0.5,-0.5)(0.5,-0.5)の頂点で作成します。(TRIANGLESTRIP)

その後、
D3DXMATRIX world,proj;

のワールド行列と正射影用の行列を作り、
ワールド行列は
D3DXMatrixIdentity(&world)で単位行列を作ったあと、
そのメンバの_11と_22にそれぞれ横の長さと縦の長さを入れます。

正射影行列は
D3DXMatrixIdentity(&proj)で単位行列を作ったあと、
_11に2/ウィンドウ横幅、_22に2/ウィンドウの縦幅を設定します。

あとはそれぞれSetTransformで設定すれば、指定した大きさで描画できます。
この場合画面の中央が(0,0,0)になります。

移動したい場合は移動行列の各xyzの座標をスクリーン座標で設定すればOKです。

たぶんこれでいけるはずです。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月17日(金) 20:49
by 御津凪
計算方法は違えど、シエルさんの方がよさそうですね。
(スプライト描画としては適切な値ですし)

表示されない原因をチェックしたいのですが、今現在そんなに手を掛けられない状況になってしまってるので、
誠に申し訳ありませんがシエルさんにバトンタッチします。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月18日(土) 10:47
by kon
シエルさん、御津凪さんお返事ありがとうございます。

シエさんに教えていただいた方法でやってみたのですが、やはりだめでした・・・。

カメラの位置と方向を設定用のm_viewは3Dの時と同じものを使っていますが、2D用は別に宣言して使った方が良いのでしょうか?

ワールドマトリックス・正射影行列は2D用に宣言して使っています。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月18日(土) 10:54
by シエル
私の方法であれば、ビュー行列は素通りでOKです。
というか計算すらしなくていいです。

一度ビュー行列をはずしてみて下さい。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月18日(土) 11:54
by kon
シエルさん、お返事ありがとうございます。

ビュー行列をはずしてみましたが、相変わらずダメでした。

一度シエルさんに、ソースコード(Scene.cpp)をお渡した方が良いでしょうか?

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月18日(土) 11:59
by シエル
そうですね。お願いします。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月18日(土) 12:18
by kon
シエルさん、お返事ありがとうございます。

ソースコードを添付いたしました。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月18日(土) 12:35
by シエル
ソース確認しました。

まず、スピードメータ用の頂点バッファの頂点が設定されてないと思いますので、
(-0.5,0.5)(0.5,0.5)(-0.5,-0.5)(0.5,-0.5)の頂点で設定して下さい。
テクスチャ座標も忘れずに。

で、各行列の設定ですが、上にも書いているように、

ワールド行列は
D3DXMatrixIdentity(&world)で単位行列を作ったあと、
そのメンバの_11と_22にそれぞれ横の長さと縦の長さを入れます。
もし、指定の位置に移動したければ、
_41,42,43のxyz座標にスクリーン座標でそれぞれ値を設定して下さい。
その後、SetTransformでワールド行列として設定

ビュー行列は
D3DXMatrixIdentityで単位行列を作って、
そのままSetTransformでビュー行列として設定して下さい。

正射影行列は
D3DXMatrixIdentity(&proj)で単位行列を作ったあと、
_11に2/ウィンドウ横幅、_22に2/ウィンドウの縦幅を設定します。
その後、SetTransformで射影行列として設定

この方法の場合、画面の中央が(0,0,0)になります。

直接行列に値を代入してるので、D3DXMatrixTranslationやD3DXMatrixOrthoLH関数は使いません。

これでいけるはずです。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月18日(土) 14:42
by kon
シエルさんお返事ありがとうございます。

D3DXMatrixTranslation( &mMove, 1.0f, 1.0f, 0.0f)、D3DXMatrixIdentity(&m_view)をコメントアウトすると描画されました。

ただ、ロボットを回転させるとテクスチャも一緒に回してしまいます。また、ロボットを移動したり回転するとテクスチャが少し震動しています。


なお、拡大縮小をD3DXMatrixScaling( &mScale,( 1.0 / CLIENT_WIDTH), (-1.0 / CLIENT_HEIGHT), 1.0f) にしましまた。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月18日(土) 14:46
by シエル
ん?おかしいですね。

もう一度、今の状態のソースを全部貼ってもらえますか?

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月18日(土) 15:04
by kon
シエルさん、お返事ありがとうございます。

ソースコードを添付しておきます。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月18日(土) 15:22
by シエル
下記のコードでやってみてもらえますか?


//****************スピードメータの画面作成***************

// ワールドマトリックスの設定(/ 何もしないマトリックスの生成)
D3DXMatrixIdentity(&m_world2);

//画像を200×200の大きさで(100.100)の場所に移動。
m_world2._11=200.0f;
m_world2._22=200.0f;
m_world2._41=100.0f;
m_world2._42=100.0f;

// マトリックスをレンダリングパイプラインにセット
pD3DDevice->SetTransform(D3DTS_WORLD, &m_world2);


//D3DXMatrixIdentity(&m_view);
// マトリックスをレンダリングパイプラインに設定
pD3DDevice->SetTransform(D3DTS_VIEW, &m_view);


//正射影行列
D3DXMatrixIdentity(&m_proj2);
m_proj2._11=2.0f/CLIENT_WIDTH;
m_proj2._22=2.0f/CLIENT_HEIGHT;
pD3DDevice->SetTransform(D3DTS_PROJECTION, &m_proj2);

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月18日(土) 15:39
by kon
シエルさん、お返事ありがとうございます。

初期状態では、テクスチャは表示されずロボットを回転させたりするとテクスチャの端が表示されました。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月18日(土) 15:53
by シエル
う~ん。
スピードメーター描画前に、Zバッファをクリアしても駄目ですか?

今からちょっと出かけるので、返答はしばらく後になります。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月18日(土) 16:23
by kon
シエルさんお返事ありがとうございます。

D3DXMatrixIdentity(&m_view); のコメントアウトを外したら無事に描画されました。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月18日(土) 16:36
by シエル
おっと。すいません。コメントアウトを外しわすれてたようですね^^;

とりあえずおめでとうございます。これで解決ですね^^

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月18日(土) 17:18
by kon
シエルさんのおかげで、無事にテクスチャを描画することができました。ありがとうございます。

あとは、スピードメータ本体をどうやって描画するかですね。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月18日(土) 17:56
by シエル
まだ解決してませんでしたか^^;

あとは何をお困りなのですか?
具体的にお願いします。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月18日(土) 22:15
by kon
シエルさん、お返事ありがとうございます。

スピードメータのメモリの部分を描画した画像(針のないメータの画像)をテクスチャに貼り付け、貼り付けた画像の上に針(細長い四角形)を描画しようと考えています。

ただ、針の位置を移動させるにはsinやcosなどの三角関数が必要になると思います。

私は、あまり数学が得意でないので、針の位置決めにつてい悩んでる状態です。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月18日(土) 22:20
by シエル
あ~あの針が動く感じの描画の仕方ってことですね。

たぶん少し中心を下にずらしてZ軸を中心に回転させればよさそうですが、
アルゴリズム的にはすぐに思いつきそうにありません^^;

どなたか分かるかたフォローお願い致します。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月20日(月) 12:31
by kon
シエルさん、お返事ありがとうございます。

針の動きの描画の件に関しては、相変わらす解決していないです・・・。

なので、ひとまず速度を数字で表示しようと思い、ID3DXFontを使って文字描画を試してみましたが上手く表示されませんでした。

今回は、四角形を描画するだけのプログラムに The DirectXと表示させるプログラムを作成しました。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月20日(月) 12:41
by シエル
経験上ID3DXFontを使うとかなり速度が落ちるので、0から9までの画像を用意し、
それらを上手くつなぎあわせて、表示したほうが断然速いです。

ソース見たらまた返事します。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月20日(月) 23:36
by シエル
このソースで実際に文字は表示されたんですか?

それと2D描画ではID3DXSpriteインターフェイスというのがあり、
簡単に2D描画ができます。
私も簡単な描画はこれで済ますことがあります。
これを使って、数字の画像を用意し、上手くつなぎ合わせてスピードを表示したらどうでしょうか?
ID3DXSpriteインターフェイスについては下記を。
http://marupeke296.com/DXG_No41_ID3DXSprite.html

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月22日(水) 18:56
by kon
シエルさん、お返事ありがとうございます。

一度、ID3DXSpriteの方法を試してみたいと思います。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月24日(金) 20:39
by kon
シエルさんこんばんわ。

数字の画像を用意して、現在のスピードを表示することができました。

スピードメータの針に関しては、テクスチャをZ軸で回転させましたが、回転軸の位置が正しくないため妙な動きになってしまいました。



実行画面をキャプチャYouTubeにアップしましたので、よろしければご確認ください。また、ソースコードも添付しておきます。

http://www.youtube.com/watch?v=UCmO9ScV-Ek

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月24日(金) 21:26
by シエル
動画確認しました。

つまり、針の始端(ていうのかな?)を中心にして描画したいってことですよね?
うーんこれはちょっと自信がないんですが、まず最初に針の始端(ていうのかな?)部分に中心が
いくように、移動行列を作ります。
その後、回転行列をかけて、回転すればうまくいくと思うのですがどうでしょうか?

ちょっと自信がないので、御津凪さんや他のDirectXに詳しい方から回答をもらったほうがいいかもしれません。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月25日(土) 01:45
by 御津凪
戻ってきました。

回転するときは、描画する頂点の中心(ゼロ位置)を軸に回転する為、
今回の場合は一度頂点の中心へ向かわせる移動行列を追加する必要があり、計算順序を次のように組み直す必要があります。

1.ゼロ位置に回転の中心位置を移動させる
2.回転させる
3.元の位置を移動させる(1.の逆)
4.拡大縮小させる
5.移動させる


ちなみに、このような処理を一括して行う D3DXMatrixTransformation 関数があります。

今回の場合だと、

D3DXMATRIX out; // 計算結果行列
D3DXVECTOR3 rotateTrans; // 回転の中心を示す座標
D3DXVECTOR3 scale; // スケーリングベクトル
D3DXQUATERNION rotate; // 回転ベクトル
D3DXVECTOR3 trans; // 移動ベクトル

// 上記値を代入...

D3DXMatrixTransformation( &out, NULL, NULL, &scale, &rotateTrans, &rotate, &trans );

で、そのままワールド行列にセットすれば多分出来上がると思います。

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月25日(土) 17:38
by kon
御津凪さん、お返事ありがとうございました。

御津凪さんのおかげでなんとかスピードメータらしい動きが完成しました。

動作画面をまたアップしました。
http://www.youtube.com/watch?v=BNc5E5rvjmc

下記にスピードメータの針を動かすコードを記載しておきます。


//*************:スピードメータの針を描画******************

hari_scale.x = 1.0;
hari_scale.y = 1.0;
hari_scale.z = 1.0;

hari_trans.x = 320.0f;
hari_trans.y =-200.0f;
hari_trans.z = 0.0f;

// 回転の中心を示す座標
hari_rotateTrans.x = 25.0f; //回転軸を右に25移動
hari_rotateTrans.y = 0.0f;
hari_rotateTrans.z = 0.0f;


//針の回転量を設定
D3DXMatrixRotationZ(&mRoat2,D3DXToRadian(hari_rad));
D3DXQuaternionRotationMatrix(&hari_rotate, &mRoat2);//回転行列からクォータニオンを作成


D3DXMatrixTransformation( &m_world2, NULL, NULL,
&hari_scale, &hari_rotateTrans, &hari_rotate, &hari_trans );

// マトリックスをレンダリングパイプラインにセット
pD3DDevice->SetTransform(D3DTS_WORLD, &m_world2);

Re:スピードメータのようなものを描画したいと思います

Posted: 2010年9月25日(土) 17:45
by kon
シエルさん、御津凪さんに色々と助けていただいたおかげでスピードメータらしい動きを完成することができました。ありがとうございます。

また何か困ったことがあったら書き込みするかもしれないので、その時はお願いします。