|
|||
2000/ 04・05・06・07・08 2001/ 03・04・07・08・10 2002/ 01・03・04・05・11 2004/ 01 | |||
index |
2001/8/3 | MAXR4でのプラグイン開発の環境設定 |
2001/8/3 | MAXScriptの使い方「シェイプクラスの定義方法」 |
2001/8/3 | MAXスクリプトによるファイル読み込みのテンプレートソースコード |
MAXR4でのプラグイン開発の環境設定 | ||||
|
||||
|
||||
■現象 3DStudioMAX R4においてプラグイン開発をする場合、プロジェクトの設定が 変更になったので注意。 R4からは描画メソッドにDirectXが加わった為、どんなプラグインタイプの プロジェクトであっても、DirectX関連のヘッダーとライブラリーをリンクしないと ビルド時にエラーが起こる。 ex.) > aiimp.obj : error LNK2001: 外部シンボル ""public: virtual > char * __thiscall > ClassDesc::GetRsrcString(long)" > (?GetRsrcString@ClassDesc@@UAEPADJ@Z)" は未 > 解決です > Release\MAPINP.DLI : fatal error LNK1120: 外部参照 1 が未解決です。 ■解決策 Step1) DirectXのSDKを手に入れる必要がある。 http://www.microsoft.com/japan/developer/directx/default.asp ここからDirectXのSDKをダウンロードする。ただし、140Mb位あるので、 MSDNや、雑誌に付属するCD-ROMから手に入れる方が懸命かも。 Step2) プロジェクト設定の「C++」→「カテゴリー:プリプロセッサ」の インクルードファイルのパスに、以下のパスを追加する必要がある。 ..\..\DirectX8SDK\include (パス名は任意) *自分では、このヘッダーをインクルードしていなくても、MAXのヘッダーファイル がこれらを参照している為に必要。 Step3) プロジェクト設定の「リンク」→「カテゴリー:インプット」→「追加ライブラリー のパス」に以下のパスを追加 ..\..\DirectX8SDK\lib (パス名は任意) 以上。 |
||||
MAXScriptの使い方「シェイプクラスの定義方法」 | ||||
|
||||
|
||||
■スプラインシェイプの概念 MAXスクリプトでシェイプクラスを作るには、まず、スプラインシェイプの構造を 理解しておく必要があります。以下の図のようになっています。 |
||||
![]() |
||||
ここにかかれている全体がスプラインシェイプ。それぞれのラインがスプラインとなり、1からの番号で識別されます。また、スプラインの中は、これも1からの番号で頂点が定義されます。
1)ノードのサブクラスであるスプラインシェイプクラスを作ります。 sp = splineshape() これは、単なる入れ物で、ジオメトリーはこの下にスプラインクラスを定義するスプラインクラスにあります。 addNewSpline sp 先ほどの入れ物にジオメトリー保持の実態部分であるスプラインクラスを追加します。 3)スプラインに対して頂点を追加していく addknot sp 1 #corner #line [x,y,z] そして、そのスプラインクラスに対して、頂点を一づつ定義していきます。 addKnot <shape> <spline_index_integer> (
#smooth | #corner | #bezier | #bezierCorner ) \ *<shape> :スプラインシェイプクラス 4)シェイプをアップデート このコマンドによって、ジオメトリーに与えた変更が実際のシェイプに与えられます。 |
||||
MAXスクリプトによるファイル読み込みのテンプレートソースコード | ||||
|
||||
|
||||
3Dデータが定義されたテキストファイルをMAXで読み取り3D化したいというケースは、結構発生すると思います。 それをC++のプラグインでいちいち作るのも手間ですので、MAXスクリプトで行うのがよいでしょう。 ここにそのためのテンプレート(骨格)となるようなサンプルコードを提供します。 ちなみに、ここに上げるコードは、モニターで再現できる色空間を3Dで表した座標列を読み取って、ワイヤーモデルを作るものです。 読み取るデータの形式は、 _________________________________________________________________ 0 0 0 ■カラーデータ読み込みサンプルコード --2行分読み飛ばす while not eof fp do x = Str[1] as float --format "x=% y=% z=%\n" x y z addknot sp 1 #corner #line [x,y,z] close fp --ファイル読み込み if sFileName != undefined then |
||||