1

シーン形式のブレンダー エクスポーターを作成しています。

エクスポートするときは、クォータニオンとしての回転が必要です。

私が見つけた最も簡単な方法は、rotation_quaternionを使用することです。ただし、このメンバーは、rotation_modeが に設定されている場合にのみ、回転を格納することを保証し'QUATERNION'ます。

現在の一時的なソリューションは次のようになります。

prevRotationMode = object.rotation_mode
object.rotation_mode = 'QUATERNION'
rotationAsQuaternion = object.rotation_quaternion
object.rotation_mode = prevRotationMode

この解決策は機能しますが、エクスポーターが頻繁に呼び出されると、回転角度がクォータニオン表現と元の表現の間で変換されるため、数値エラーが発生する可能性があると思います。

私の2番目のアイデアは、オブジェクトをコピーし、オブジェクトのコピーで回転モードを変更し、後で削除することでした。しかし、シーンはエクスポーター スクリプトによって変更されるため、これはまだクリーンなソリューションではありません。

シーンを変更せずに四元数として回転を取得するエレガントな方法はありますか?

4

1 に答える 1

3

mathutilsモジュールは、いくつかの便利な関数を提供します。そのうちのいくつかは、さまざまなプロパティから直接利用できます。

rot_output = object.rotation_euler.to_quaternion()

これにより、ファイル データを変更せずにクォータニオンを取得できます。

数値エラーについては心配しません。これらは、回転モードを変更するときに内部で使用されるのと同じ変換ステップを使用し、視覚的な違いを確認することなく一日中前後に変更できます。オイラー回転の軸の順序を変更すると、しかし、違いを生む。

于 2014-10-03T08:08:27.990 に答える