質問
私は、オブジェクトの回転、翻訳、拡大縮小など、さまざまな3Dデータの処理に使用するツールを作成しています。この一般的な3Dの機能をすでに実行している優れたライブラリを知っている人はいますか?
現時点では、データの視覚化には関心がなく、主に操作の実行に関心があります。
この時点で必要になるとわかっていること:
- 2D / 3D / 4Dベクトル
- (加算、減算、内積、外積など)
- 行列を使用した回転/翻訳/スケーリング
- 四元数
Sharp3D ライブラリを見つけることができましたが、それは私が望むことをするかもしれませんが、長い間更新されていません。誰もこれを以前に使用しましたか?他の(より良い)提案はありますか?
解決
Microsoft.Xna.Framework (shipこのXNA)は作業を行うことができます。
XNA Framework Mathライブラリには、2Dまたは3D空間でオブジェクトを操作するために使用できる複数の基本的なジオメトリタイプがあります。このライブラリのプリミティブオブジェクトは、幾何学的オブジェクトまたはそのオブジェクトに対する操作を表すために必要なデータを表します。各ジオメトリタイプには、そのタイプでサポートされているいくつかの数学演算があります。
ベクター
XNA Frameworkは、ベクターを表現および操作するためのVector2、Vector3およびVector4クラスを提供します。通常、ベクトルは方向と大きさを表すために使用されます。ただし、XNAフレームワークでは、同じストレージ要件を持つ座標またはその他のデータ型を格納するためにも使用される場合があります。
各ベクトルクラスには、次のような標準のベクトル演算を実行するためのメソッドがあります。
- ドットプロダクト
- クロス製品
- 正規化
- 変換
- 線形、キュービック、カトマルロム、またはエルミートスプライン補間。
行列
XNA Frameworkは、ジオメトリの変換用のMatrixクラスを提供します。 Matrixクラスは、行の優先順位を使用して行列をアドレス指定します。つまり、2次元行列の要素を記述するときに、行が列の前に指定されます。 Matrixクラスは、スケール行列、平行移動行列、回転行列を作成するためのヘルパーメソッドに加えて、行列の確定行列または逆行列の計算などの標準的な行列演算を実行するためのメソッドを提供します。
四元数
XNA Frameworkは、指定された角度の周りのベクトルについての効率的な回転を表現および計算するためのクォータニオン構造を提供します。
他のヒント
これまで使用したことはありませんが、Sharp3Dを取得しただけで、うまく機能しているようです(回避するのに数分かかった厳密な名前に関する問題は別として)。私の印象では、それは正確に軽量ではありませんが、重い側にはほど遠いということです。
最近の更新はありませんが、数学が変わっているなどのことではありません...
www.obacs.com でScinet Lineaをお試しください。無料のライブラリではありませんが、他の選択肢に比べてそれほど高価ではありませんww
Scinet Lineaはwww.obacs.comから入手できなくなりました。現在、より多くの機能を備えたScinet Math内に含まれています。 1か月前に研究用にコピーを購入しました。今のところ好きです。