DXライブラリで使える数学(線形代数)ライブラリのご紹介

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
lriki
記事: 88
登録日時: 9年前

DXライブラリで使える数学(線形代数)ライブラリのご紹介

#1

投稿記事 by lriki » 5年前

DXライブラリ用に3Dベクトルや行列、クォータニオン等の演算機能をまとめたライブラリを公開しましたので、ご紹介です。
元々はマルチプラットフォームのライブラリで、DXライブラリ専用ではありませんでしたが、
今回DXライブラリでもすぐに使えるように調整し、パッケージをまとめました。

ダウンロード(DXライブラリ用パッケージ)
http://nnmy.sakura.ne.jp/log/eid4.html
「LuminoMath_1.0.0_DxLib_VC.zip」リンクからダウンロードできます。

紹介・使用例(Tips)
http://lriki.hatenablog.com/entry/2015/01/15/222625

DXライブラリで使う(導入・モデルビューアのサンプル)
http://lriki.hatenablog.com/entry/2015/01/29/231856

DXライブラリで使う(フライトシミュレータのサンプル)
http://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ライブラリが公開している関数では足りないと思ったときにお試しいただければ幸いです。

ご指摘や感想等ありましたら、フィードバックください。お待ちしています。


[追記]
DXライブラリ掲示板でも紹介を行いましたのでリンクを張っておきます。
http://hpcgi2.nifty.com/natupaji/bbs/pa ... ew&no=3494

“C言語何でも質問掲示板” へ戻る