AEC拡張機能の樹木をMatIDで分割したい時ありますよね。
今回は標準で入っているヨーロッパ赤松を操作してみます。
まず、MatIDを調べます。
MatIDは
getFaceMatID $tree01 i
で取得できます。
$tree01はオブジェクト名で、iはface番号です。
標準で入っているヨーロッパ赤松はIDが1~4だったので、今回は4つにわけます。
1:幹、2:枝、3:小枝、4:葉 のようです。
もちろん他の樹木パックとかでは枝と葉のように2つだったりします。
事前に編集可能メッシュにしておきます。
んで、振り分けます。
for i = 1 to $tree01.numfaces do ( type = getFaceMatID $tree01 i if(type == 1) then ( append leader i ) if(type == 2) then ( append branch i ) if(type == 3) then ( append subbranch i ) if(type == 4) then ( append leaf i ) )
次に元のオブジェクトからデタッチします。
test = meshop.detachFaces $tree01 leader delete:false asMesh:true isSelected:on mesh mesh:test $Object001.name ="1" test2 = meshop.detachFaces $tree01 branch delete:false asMesh:true isSelected:on mesh mesh:test2 $Object001.name ="2" test3 = meshop.detachFaces $tree01 subbranch delete:false asMesh:true isSelected:on mesh mesh:test3 $Object001.name ="3" test4 = meshop.detachFaces $tree01 leaf delete:false asMesh:true isSelected:on mesh mesh:test4 $Object001.name ="4"
最後に元オブジェクトを削除します。
delete $tree01
まとめ
leader=#() branch=#() subbranch=#() leaf=#() for i = 1 to $tree01.numfaces do ( type = getFaceMatID $tree01 i if(type == 1) then ( append leader i ) if(type == 2) then ( append branch i ) if(type == 3) then ( append subbranch i ) if(type == 4) then ( append leaf i ) ) test = meshop.detachFaces $tree01 leader delete:false asMesh:true isSelected:on mesh mesh:test $Object001.name ="1" test2 = meshop.detachFaces $tree01 branch delete:false asMesh:true isSelected:on mesh mesh:test2 $Object001.name ="2" test3 = meshop.detachFaces $tree01 subbranch delete:false asMesh:true isSelected:on mesh mesh:test3 $Object001.name ="3" test4 = meshop.detachFaces $tree01 leaf delete:false asMesh:true isSelected:on mesh mesh:test4 $Object001.name ="4" delete $tree01
実行結果
(移動させています。スクリプト実行後は全て原点にあります)
ネタ切れ気味です。














