Shatterもどき??

今日Twitterを通じてほろにがさんの記事を読んで、ふむふむ、前半はこういうことかな?

http://www.dfx.co.jp/dftalk/?p=757

とSoftimage用のスクリプトで起こしてみました。
これを切り刻む分だけ繰り返せばいいのかな?

今回はVBSですが・・・w

Dim ret
Dim oCol, oSel
' オブジェクトを選択
Set oCol = GetValue("SelectionList")

for each oSel in oCol
	Logmessage "Cutting : " & oSel
	' 選択オブジェクトのバウンディングボックス座標を取得
	GetBBox oSel, FALSE, xmin, ymin, zmin, xmax, ymax, zmax
	
	' 選択オブジェクトのXYZそれぞれの長さを計算
	Dim xLen, yLen, zLen 
		ret = Abs(xmax - xmin)
		if ret = 0 then ret = 0.1
		xLen = ret
		ret = Abs(ymax - ymin)
		if ret = 0 then ret = 0.1
		yLen = ret
		ret = Abs(zmax - zmin)
		if ret = 0 then ret = 0.1
		zLen = ret
	 
	Logmessage "BBoox : " & xmin&", "&ymin&", "&zmin&", "&xmax&", "&ymax&", "&zmax
	
	' スライス用のGridを生成
	Dim oSliceGrid
	Set oSliceGrid = CreatePrim( "Grid", "MeshSurface" )
	GetBBox oSliceGrid, FALSE, sxmin, symin, szmin, sxmax, symax, szmax

	' スライス用のGridのサイズを計算して、選択オブジェクトのサイズより大きくなるようにする(2倍ぐらい?)
	Dim sXlen, sYlen, sZlen, sclX, sclY, sclZ
		ret = Abs(sxmax - sxmin)
		if ret = 0 then ret = xLen
		sXlen = ret
		ret = Abs(symax - symin)
		if ret = 0 then ret = yLen
		sYlen = ret
		ret = Abs(szmax - szmin)
		if ret = 0 then ret = zLen
		sZlen = ret
		 
		sclX = (xLen / sXlen) * 2
		sclY = (yLen / sYlen) * 2
		sclZ = (zLen / sZlen) * 2
	 
	Scale oSliceGrid ,sclX,sclY,sclZ, siRelative, siLocal, siObj, siXYZ, , , , , , , , 0
	' ブーリアンを安定化するためにGridを三角形化
	ApplyTopoOp "TriangulatePolygons", oSliceGrid, siUnspecified, siPersistentOperation
	
	' Gridの頂点をランダマイズで波打たせ〜
	Dim oP
	Set oP = ApplyOp("Randomize", oSliceGrid, 3, siPersistentOperation, , 0)
	Logmessage oP
	SetValue oP & ".amply", 0.01
	SetValue oP & ".amply", 1
	SetValue oP & ".amplz", 1

	' Gridを使って選択をブーリアン、法線を反転させ、ブーリアン
	ApplyTopoOp "BooleanDifference", oSel & ";" & oSliceGrid, 3, siPersistentOperation
	Set oDup = Duplicate( oSel, , 2, 1, 1, 0, 0, 1, 0, 1, , , , , , , , , , , 0 )
	FreezeModeling oDup
	ApplyTopoOp "Inverse", oSliceGrid, 3, siPersistentOperation
	Set oDup = Duplicate( oSel, , 2, 1, 1, 0, 0, 1, 0, 1, , , , , , , , , , , 0 )
	FreezeModeling oDup

next