DXライブラリ用に3Dベクトルや行列、クォータニオン等の演算機能をまとめたライブラリを公開しましたので、ご紹介です。
元々はマルチプラットフォームのライブラリで、DXライブラリ専用ではありませんでしたが、
今回DXライブラリでもすぐに使えるように調整し、パッケージをまとめました。
ダウンロード(DXライブラリ用パッケージ)
ttp://nnmy.sakura.ne.jp/log/eid4.html
「LuminoMath_1.0.0_DxLib_VC.zip」リンクからダウンロードできます。
紹介・使用例(Tips)
ttp://lriki.hatenablog.com/entry/2015/01/15/222625
DXライブラリで使う(導入・モデルビューアのサンプル)
ttp://lriki.hatenablog.com/entry/2015/01/29/231856
DXライブラリで使う(フライトシミュレータのサンプル)
ttp://lriki.hatenablog.com/entry/2015/01/31/210508
紹介URLの先にもありますが、簡単に使い方を。
・導入、準備
ダウンロードした ZIP の中にある「プロジェクトに追加すべきファイル_VC用」フォルダの内容を、
お使いのDXライブラリの「プロジェクトに追加すべきファイル_VC用」フォルダに上書きしてください。
ソースファイルには "LuminoMathDxLib.h" を include してください。
次のように、"DxLib.h" の後に include する必要があります。
--------------------------------
#include <DxLib.h>
#include <LuminoMathDxLib.h>
using namespace Lumino; // 全てのクラスは Lumino 名前空間に入っています
--------------------------------
・使用例
インターフェイスはC++クラスライブラリです。
コンストラクタによる初期化やメンバ関数による演算、演算子のオーバーロードを備えています。
DirectX9の数学ヘルパー関数をご存知の方は、それをクラス化したものと考えていただければすんなり使えると思います。
--------------------------------
// 3Dベクトルを初期化する
Vector3 v1(10, 20, 30);
// ベクトル v1 を正規化する
v1.Normalize();
// ベクトル v1 を軸として 0.1 ラジアン回転するクォータニオンを作る
Quaternion q1 = Quaternion::RotationAxis(v1, 0.1);
// クォータニオンから回転行列を作る
Matrix m1 = Matrix::RotationQuaternion(q1);
// 平行移動行列を作り、回転行列に乗算する
m1 *= Matrix::Translation(10, 20, 30);
// 明示的にキャストしなくても、DXライブラリの関数にそのままセットできます
MV1SetMatrix(model, m1);
--------------------------------
以上、ご紹介でした。
実際に私が 3D ゲーム制作や MMD モデルのレンダリングで使用したライブラリですので、
機能はそこそこまとまっていると思います。
DXライブラリが公開している関数では足りないと思ったときにお試しいただければ幸いです。
ご指摘や感想等ありましたら、フィードバックください。お待ちしています。