3Dデータが定義されたテキストファイルをMAXで読み取り3D化したいというケースは、結構発生すると思います。
それをC++のプラグインでいちいち作るのも手間ですので、MAXスクリプトで行うのがよいでしょう。
ここにそのためのテンプレート(骨格)となるようなサンプルコードを提供します。
これをもとに各自、読み込みプラグインを作ってみてください。
ちなみに、ここに上げるコードは、モニターで再現できる色空間を3Dで表した座標列を読み取って、ワイヤーモデルを作るものです。
読み取るデータの形式は、
_________________________________________________________________
L* a* b*
0 0 0
0.34 2.37 -6.46
0.94 6.62 -17.34
1.93 13.55 -28.19
3.34 23.39 -37.66
5.23 32.43 -45.83
7.63 38.71 -52.74
10.33 43.18 -58.8
12.98 47.51 -64.7
.
.
.
______________________________________________
このように、X,Y,Zに対応する座標値が単純に並んでいるものです。
■カラーデータ読み込みサンプルコード
______________________________________________
utility ReadColorSpace "カラーデータの読み込み"
(
--Ver1
--<2001/7/31>
--・ファーストリリース
--ファイルの読み込み
function ReadFile sFilename =
(
--ファイルのオープン
fp=openFile sFilename
--2行分読み飛ばす
LineStr = readline fp
LineStr = readline fp
--スプラインシェイプを作る
sp = splineshape()
--スプラインを作る(このスプラインセグメントに対して頂点を追加していく
addNewSpline sp
while not eof fp do
(
--一行読み込み、名前に変換
LineStr = readline fp
Str=filterString LineStr " "
--format "Str=%\n"Str
--format "Str.count=%\n" Str.count
if Str.count<3 then
continue
x = Str[1] as float
y = Str[2] as float
z = Str[3] as float
--format "x=% y=% z=%\n" x y z
addknot sp 1 #corner #line [x,y,z]
)
--シェイプをアップデート
updateshape sp
close fp
return true
)
--インターフェース定義
button LoadFile "読み込み" toolTip:"カラースペースの3D定義ファイルを読み込みます"
label label04 "---------------------------"
label label05 "by Hiromitsu Kohsaka"
--パネルの初期化
on ReadColorSpace open do
(
)
--ファイル読み込み
on LoadFile pressed do
(
--レンダリングファイル名の入力
sFileName = getOpenFileName caption:"カラースペースの3D定義ファイルの読み込み"
\
types:"カラースペース定義ファイル(*txt)|*.txt"
if sFileName != undefined then
(
ReadFile sFilename
)
)
)
______________________________________________
|