i went through my old notes on this
and forgot i used another maxscript
which baked the modifier stack into keyframes
not that this will help you, but in case
swOOOOOp wants it
here it is.
/*
bakes the vertices from the modifierstack to a keyframed editablepoly
*/
fn bake obj progBar =
(
undo on
(
try
(
local start = animationRange.start as integer
local end = animationRange.end as integer/160
local vertSels = #()
local vertPos = #()
local startT = timeStamp()
if classof obj.modifiers[1] != Edit_Mesh then modPanel.addModToSelection (edit_mesh())
if obj.selectedVerts.count == 0 then polyop.setVertSelection obj #all
local progUpStep = 50.0/((end-start) as float)
local progUp = 0
for t1 = start to end do
(
local curVerts = #()
local curVertsPos = #()
at time t1
(
for i in obj.selectedVerts do
(
local vert = i.index
local pos = obj.verts[i.index].pos
append curVertsPos pos
append curVerts vert
)
)
append vertSels curVerts
append vertPos curVertsPos
progUp += progUpStep
progBar.value = progUp
)
for m = 1 to obj.modifiers.count do deleteModifier obj 1
animate on
(
for t2 = start to (end-1) do
(
local oldPos = #()
at time t2
(
for i in vertSels[t2+1] do append oldPos (polyop.getVert obj i)
polyop.setVert obj vertSels[t2+1] vertPos[t2+1]
)
if t2 > 1 then
(
at time (t2-1)
(
polyop.setVert obj vertSels[t2+1] oldPos
)
)
progUp += progUpStep
progBar.value = progUp
)
)
local endT = timeStamp()
print("Time: " + ((endT-startT)/100) as string + "ms")
--progressEnd()
)
catch("Something went wrong")
)
)
function sel_filter obj = selection.count == 1 and classOf selection[1].baseobject == Editable_Poly
try(destroyDialog mainRollout ) catch()
rollout mainRollout "Bake!"
(
label descLabel1 "Bake vertices pos"
label descLabel2 "from modifier stack:"
pickbutton pickButton "object: " width:80 filter:sel_filter
button bakeButton "Bake!" width:80 enabled:false
progressbar progBar color:green
local bakeObj = undefined
on pickButton picked obj do
(
bakeButton.enabled = true
pickButton.text = obj.name
bakeObj = obj
)
on bakeButton pressed do
(
bake bakeObj progBar
)
)
createDialog mainRollout 125 130
clearListener()
.
Edited
8 Years Ago by
budbundy