-- 制御点の配列からポリラインを作成
fn CreatePolyLineFromPosArray posArray lineWidth = (
ss = SplineShape pos:posArray[1] -- posArray[1]にSplineShapeを作成
idx = addNewSpline ss -- スプライン曲線を追加
format "NewSpline idx = %\n" idx
for i = 1 to posArray.Count do (
addKnot ss idx #corner #line posArray[ i ]
)
-- シェイプの更新
updateShape ss
-- [ビューポートを有効]チェックボックスをオン
ss.render_displayRenderMesh = true
-- 矩形断面モードにする
-- ss.render_viewport_rectangular = true
ss.render_rectangular = true
-- 矩形断面の設定値
-- ss.render_length = 5.0
ss.render_width = lineWidth
-- ss.render_viewport_length = 1.0
-- ss.render_viewport_width = lineWidth
-- メッシュに変換
convertToMesh ss
format "ss.numfaces %\n" ss.numfaces
-- アップベクトル
vUp = [0, 0, 1]
-- 削除する面のインデックスの配列
faceIdxArray = #()
for f = 1 to ss.numfaces do (
-- 面の法線を取得
n = getFaceNormal ss f
-- アップベクトルと面の法線の内積
d = dot vUp n
-- if d <= 0.0 do ( -- 削除されない面がある
if d <= 0.01 do (
-- 削除する面のインデックスを追加
append faceIdxArray f
)
)
-- 道路以外のメッシュを削除
meshop.deleteFaces ss faceIdxArray delIsoVerts:false
-- UVWMapモディファイアの追加
-- maptype 0 - 6
addModifier ss (UVWMap maptype:5) -- maptype 0:Planar 4:Box 5: Face
ss
)
-- CreatePolyLineFromPosArrayのテスト
-- 制御点の配列
gPosArray1 = #()
gPosArray2 = #()
-- 制御点を追加
append gPosArray1 [0, 0, 0]
append gPosArray1 [200, 0, 0]
append gPosArray1 [200, 50, 0]
append gPosArray1 [250, 250, 0]
append gPosArray1 [300, 450, 0]
append gPosArray1 [50, 500, 0]
append gPosArray2 [0, -50, 0]
append gPosArray2 [0, 100, 0]
-- 線の幅
lineWidth = 25.0
-- メッシュを作成
newSpline1 = CreatePolyLineFromPosArray gPosArray1 lineWidth
classof newSpline1
newSpline2 = CreatePolyLineFromPosArray gPosArray2 lineWidth
-- メッシュの加算
newSpline1 = newSpline1 + newSpline2
-- 追加したメッシュを削除
delete newSpline2
2012年2月29日水曜日
MAXScript メッシュの作成(2)
ポリラインの作成
登録:
コメントの投稿 (Atom)
0 件のコメント:
新しいコメントは書き込めません。