EasyFAQ/11

Last-modified: 2008-01-07 (月) 20:15:26

クォータニオンてなんですか?これを理解しないとE3Dで作品を作る事は出来ませんか?

投稿者pupepo
重要度
状態
カテゴリ
HSPバージョン3.1
E3Dバージョン3.0.3.5
回答

ここから下を自由に編集してください。
上の投稿情報は安易に編集するとFAQリストのリストアップに支障が出るものもあります。
よく分からない方は分かる人に聞いてみてください。

  • 基本的には「4つの要素で構成されている」と言う意味の名前で、E3D上で登場する限りは、マニュアルに記載されているとおり「姿勢情報を格納する便利なもの」と思っておけば充分でしょう。「そのキャラクターはどっちを向いているの?」です。ポイントは「クォータニオンは姿勢情報なので、位置情報は持っていない」「位置情報を持っていても、これは姿勢情報である」という考え方です。4つの数字が「100、200、50、1」なら、「0、0、0座標から100、200、50座標の方向を向いている」と言う事です。位置で向きを表しているんですね。4番目の数字は視線の傾きと思えばいいでしょう。寝違えて首の曲がっている人がカメラを持っていたので、撮影した画像の地平線が斜めになっているようなものです。モデルデータにセットする際も「モデルの位置を考えてローカル座標系に持ち込んで・・・」とか考える必要はありません。姿勢情報だけをサックリとセットすればオッケーです。「もともと位置情報は持っていない」ですからね。さらに言えばE3DSetDirと言う関数がありますので、こちらからはじめるのもいいと思いますよ。E3Dでは、親切な機能から高度な機能まで、何段階かの機能が「重なっている」事があります。直立したキャラクターが左右に方向転換するだけなら、E3DSetDirで実現できます。クォータニオンはジンバルロックと言う現象に対応する為に登場した考え方なので、それが出て来なければ避ける事ができるんです。ちなみにジンバルロックってのは「X軸を90度回転させたらY軸とZ軸が重なってしまった!これじゃ2軸しか動かせない!困った!」と言う状態です。で、そんな面倒な事が起きないのがクォータニオンってわけです。なお、クォータニオンは本格的にはまだ議論の余地があるそうで、それを利用したIK機能はE3Dでもβ版として公開されている段階です。その点はご注意下さいませ。 -- pupepo? 2008-01-06 (日) 01:13:29
  • 姿勢(向き・角度)情報が全部入ったそういう便利な入れ物と理解して、使って覚えるのもひとつの手です。そういう風に利用するときはクォータニオンの算術計算は使えませんが、問題ありません。 -- GENKI? 2008-01-06 (日) 17:45:40
  • 3D空間にキャラクターを配置する場合、位置と向きの情報が必要です。多くの場合、サイズの要素も持っています。クォータニオンは向きの情報を計算する数学的な手法の名前です。以前はマトリクス方式と言うやり方が主流でした。しかし、マトリクス方式ではジンバルロックと言うトラブルが発生する事がある為に、近年クォータニオン方式が登場しました。クォータニオンとは、4つの成分で構成されていると言う意味です。E3Dではこの両方の計算方法が用意されています。E3DSetDirはマトリクス方式で計算されており、モデルデータに直接角度を指定することが出来ます。初めて3Dゲームを作る人になら、まずはこちらをおすすめします。対してクォータニオン方式で管理するには、クォータニオンそのものを初期化→何らかの加工を加える→モデルデータに姿勢情報をセットする。と言う段階的な作業が必要になります。また、位置情報で向き情報を管理すると言う考え方を理解する必要があります。原点(0,0,0座標)を始点として、XYZの位置座標を終点とする1本の線が、基本的な向きの情報になります。しかしこれはベクトルと呼ばれるものです。これに、軸のねじれ情報を加えます。これがクォータニオンを構成する4つの成分と言う事になります。実際には何らかの数字を入れてやってみるのが早いです。「位置で向きを管理するなら、滑らかな回転の為にはどう言う計算が必要になるんだ?」「位置を表す数字が極端にならないように、原点からの距離を一定にする、正規化機能も用意して置く必要があるんじゃないか?」「ローカルなX軸に沿った回転は出来ないかな?」など、連想される問題に対して、多くの関数が用意されています。そう言う環境を提供して頂いている時点で非常に恵まれていると言えます。 -- ポッキー? 2008-01-07 (月) 02:17:47