2012年1月31日火曜日

MAXScript ベジェ曲線の作成


gSpline = undefined
gSplineIdx = 0

-- スプラインシェイプを作成
fn CreateSpline =
(
 if undefined != gSpline then return -1 
 
 -- シェイプの作成
 ss = splineShape()
 -- シェイプにスプライン曲線を追加
 idx = addnewSpline ss

 -- addKnotのパラメータ
 param3 = #bezier 
 param4 = #curve

 -- bezier曲線の制御点のイン、アウトベクトルの座標
 inPos0 = [0, 0, 0]
 outPos0 = [0, 0, 0]
 inPos1 = [30, 10, 0]
 outPos1 = [70, 40, 0]
 inPos2 = [100, 100, 0]
 outPos2 = [100, 100, 0]

 -- 制御点の追加
 addKnot ss idx param3 param4 [0, 0, 0] inPos0 outPos0
 addKnot ss idx param3 param4 [50, 20, 0] inPos1 outPos1
 addKnot ss idx param3 param4 [100, 100, 0] inPos2 outPos2
 
 -- シェイプの更新
 updateShape ss
 
 -- コピー
 gSpline = ss
 gSplineIdx = idx
 return 0
)

-- 形状データ取得テスト
fn GetShapeDataTest ss idx =
(
 -- セグメント数
 nSeg = numSegments ss idx
 format "nSeg %\n" nSeg
 
 -- 曲線の座標
 for t = 0.0 to 1.0 by 0.1 do
 (
  pos = interpCurve3D ss idx t
  format "t = % pos = %\n" t pos
 )
)

CreateSpline()
GetShapeDataTest gSpline gSplineIdx

0 件のコメント:

コメントを投稿