Max出點緩存工具——Point Cache

下面這個是在Max中給模型出點緩存的工具,基本使用方式是:選擇導出的路徑,然後選擇導出的變形器,然後設置幀數範圍,最後點擊bake deformation就行,用的是Maxscript。


try destroyDialog ::PointCacheTool catch()
rollout PointCacheTool "PC Tool V1.0" 
(
	
	edittext PCPath "Path"
	button _SaveFolder "Choose Save Folder" width:110
	on _SaveFolder pressed do 
	(
	
		FolderPath=getSavePath caption:"Choose Point Cache Folder" initialDir:maxfilepath
		if folderpath != undefined do
		PCpath.text= folderPath
		
	)
	Button _SelectPerModifier "Select Deformer" width:110
	
	on _SelectPerModifier pressed do 
	(
		
		try destroyDialog ::test_dialog catch()
	
rollout test_dialog "Select" width:200 height:220
(
	
local modifierClasses = #()
local objectSets = #()

fn collectmodifierClasses =
(
for obj in objects do 
(
for objMod in obj.modifiers do
(
local modIndex = findItem modifierClasses (classOf objMod as string)
if modIndex == 0 then
(
append modifierClasses (classOf objMod as string)
append objectSets #(obj)
)
else append objectSets[modIndex] obj -- otherwise append it to the corresponding object set
)
)
)

fn selectObjectsByMod modStr =
select objectSets[findItem modifierClasses modStr]

listbox modifiersToSelect "Modifiers:"

on test_dialog open do
(
collectmodifierClasses()
modifiersToSelect.items = sort (for item in modifierClasses collect item as string)
)

on modifiersToSelect doubleClicked item do
(
selectObjectsByMod modifiersToSelect.items[item]
	DestroyDialog (test_dialog)
)

)
createDialog test_dialog
		
		
	)
	
	Label devider3 ""
	-- Baking Point Cache Files
	Button _BakePC "<Bake Deformation>" width:110
	progressbar Bake_prog color:red
	on _BakePC pressed do 
	(
		if PCpath.text=="" then 
			messagebox "Please select output folder to save point cache files"
		else 		
		if $==undefined then
		messagebox"Please Select the baked objects"
		else
		(
			 for i = 1 to selection.count do
			(
			A= selection as array
			OBJname = A[i].name + ".xml"
			FilePathName= PCpath.text
			PointCacheName= FilePathName +@"\"+ OBJname
			addmodifier A[i] (Point_Cache ())
			A[i].modifiers[#Point_Cache].filename=PointCacheName
			cacheOps.recordcache A[i].modifiers[#point_cache] 
			Bake_prog.value = 100.*i/A.count

				)
					Messagebox "Point Cache files Has been Generated"
				
			)
	)
	
	Label devider1 "________________________"

	dropdownlist PBType  Items:#("Original Range","Custom Start","Custom Range")
	spinner Start "Start Frame:" range:[-10000,10000,0] type:#integer enabled:false
	Spinner End "End Frame:" range:[-10000,10000,100] type:#integer enabled:false
	
	on PBType selected j do
	(
		
		if j == 1 then
			(	Start.enabled = false
				End.enabled = false
			)
			else
			if j == 2 then
			( Start.enabled = true
				End.enabled = false
			)
			else
			(
				Start.enabled = true
				End.enabled = true
			)
		print (PBtype.selection-1)
	
	)
			
)
createdialog PointCacheTool
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章