トップページ > 記事閲覧
モデルの回転について, MV1SetRotatioXYZのx軸を中心とした回転
名前:K2 日時: 2024/06/11 22:27

お疲れ様です。 日頃からありがたく使わさせていただいております。 DxLib 3.24d を vs2022で使用しています。 MV1SetRotationXYZ関数を使用する際の問題で質問させていただきます。 x,y,z軸それぞれに値を与えたところ。 y -> y軸周りに回転する。 z -> z軸周りに回転する。 x -> 全ての値が0,0,0の時のx軸を起点に回転する つまり y -> 0.5radの際 y -> y軸を中心に回転 z -> z軸を中心に回転 x -> y軸を中心に回転 ということになっています。 こちらの問題、DxLibModelviewerでも発生しており、回転のX+,X-で値を変えると同様の事象が起きました。 こちら,x軸も他の2軸と同様に常にx軸を中心として回転するようにしたく思っております。 ご助力いただけますと幸いです。
メンテ

Page: 1 |

Re: モデルの回転について, MV1SetRotatioXYZのx軸を中心とした回転 ( No.1 )
名前:管理人 日時:2024/06/12 00:11

MV1SetRotationXYZ はリファレンスの解説にもありますように回転の順番は  x軸回転 → y軸回転 → z軸回転 となっていて、まず x軸で回転した後、y軸で回転して、その後 z軸で回転しますので x軸回転は y軸回転 とz軸回転の影響を受け、 y軸回転は z軸回転の影響を受け z軸回転のみ他の軸の回転の影響を受けない、という形になっています この順番を変更されたい場合は回転行列を直接指定する MV1SetMatrix という関数を使用して 希望の回転順番となっている回転行列を設定してください m(_ _)m // モデルの座標変換用行列をセットする int MV1SetMatrix( int MHandle, MATRIX Matrix ) ; <MV1SetMatrix のリファレンスページ> https://dxlib.xsrv.jp/function/dxfunc_3d_model_0.html#R3N11 例えば y軸回転 → z軸回転 → x軸回転 とされたい場合は以下のようにします // y軸回転 → z軸回転 → x軸回転 の順に回転する行列をセット MV1SetMatrix( ModelHandle, MMult( MMult( MGetRotY( y軸の回転値 ), MGetRotZ( z軸の回転値 ) ), MGetRotX( x軸の回転値 ) ); ( MGetRotX, MGetRotY, MGetRotZ は回転行列を取得する関数、MMult は行列同士の乗算を行う関数です )
メンテ
Re: モデルの回転について, MV1SetRotatioXYZのx軸を中心とした回転 ( No.2 )
名前:K2 日時:2024/06/13 02:02

なるほど! 承知いたしました。 ありがとうございます!😭
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存