下面这个是在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