('12 6/21
NativeMeta_data loader plugin ← (Link) NativeMeta Renderer static link library
の構成でテストするが、なぜかShadeにloader pluginがロードされない。DLLにしても結果は同じ。
他のresident系のプラグインを調査してみる。
↓
DLL形式にしてShade実行ディレクトリに配置、起動されることを確認。)
現在のところ、メタエリプソイド、Win32bit限定ですが、
ライブラリをリンク、下記インクルードファイルをインクルードして、
オブジェクト・データを
std::vector<MetaElements> meta_elms に、push_back()していって、
convert_scene();を実行すると、スタティックライブラリが利用可能になります。
後は、レイトレース発生毎に
CROSS_INF RayIntersection(const vec3d *eye, const vec3d *view);
を実行すれば、
CROSS_INF
float t; //交点距離
vec3d pnt, nrm; //交点座標、法線
std::vector<INFLU_INF> influ; //影響情報
が取得されます。
INFLU_INF
MetaElements *elem; //影響するエレメント
float wgt; //影響する重さ
// staticNMRlib.h -------------------------------------------------------------------------------------------------------
#include <vector>
#include "micro_math.h"
enum eMETA_ELEMENT_KIND { eMETA_ELLIPSOID, eMETA_CUBE, eMETA_CYLINDER, eMETA_POLYHEDRON, eMETA_BILINEAR, eMETA_BICUBIC };
struct MetaElement
{
enum eMETA_ELEMENT_KIND kind;
std::string sign;
float fusion_scale;
MetaElement(){}
};
struct MetaEllipsoid : public MetaElement
{
vec3d local_size;
mtx4 wl;
MetaEllipsoid() {
local_size = vec3d(0,0,0);
wl = mtx4::identity();
}
};
struct MetaCube : public MetaElement
{
vec3d vtcs[8];
};
//struct MetaCylinder : public MetaElement
//{
// float length;
// float radius;
// mtx4 wl;
//};
//struct MetaPolygon : public MetaElement
//{
// float thickness;
// vec3d vtcs[3];
//};
//struct MetaBilinear : public MetaElement
//{
// float thickness;
// vec3d vtcs[4];
//};
//struct MetaBicubic : public MetaElement
//{
// float thickness;
// vec3d qp[4][4];
//};
union MetaElements {
MetaElement *elem;
MetaEllipsoid *ellip;
MetaCube *cube;
};
struct CROSS_INF {
float t;
vec3d pnt, nrm;
int inout, sign;
};
struct cNativeMetaScene;
struct NativeMetaScene
{
float threshold;
std::vector<MetaElements> meta_elms; //ネイティブメタ記述ファイルを読み込んでここにストックされる
void convert_scene();
cNativeMetaScene *nms;
CROSS_INF RayIntersection(const vec3d *eye, const vec3d *view);
NativeMetaScene() {
nms = 0;
}
~NativeMetaScene() {
if ( nms ) {
free( nms );
nms = 0;
}
}
};
//-----------------------------------------------------------------------------------------------------------------------
.
最終更新:2012年07月31日 22:57