Added option to chose between “auto retopologizing mode” (as first update) or to
pick custom retopologized flatened object.
BTW I not have time to test this update. Tell me if you have some problem with it.
(
try(destroyDialog ::bgaRoll)catch()
rollout bgaRoll "MarvelousTool b2"
(
local master, flat, newObj, mat
local checkboard = standard name:"PreviewMat" diffuseMap:(checker name:"checkboard") showinviewport:on
fn filterGeo obj = isKindOf obj GeometryClass and canConvertTo obj Editable_Mesh
label lbl1 " S E T U P" pos:[5,5] width:140 height:16 style_sunkenedge:on
pickbutton pb_master "Pick Master Object" pos:[5,25] width:140 filter:filterGeo
pickbutton pb_flat "Pick Flat Object" pos:[5,50] width:140 filter:filterGeo
checkbox cb_auto "Auto Retopology Mode" pos:[5,75] width:140 checked:on
spinner spn_quad "Quad Size[%]: " pos:[5,95] fieldwidth:55 range:[.1,1e2,4] scale:1e-2
pickbutton pb_retopo "Pick Retopologized Object" pos:[5,115] width:140 enabled:off filter:filterGeo
spinner spn_warp "Warp Offset: " pos:[6,140] fieldwidth:55 range:[.001,1e2,.001]
button btn_do "Do the Job!" pos:[5,160] width:140
label lbl2 " M O R P H" pos:[5,185] width:140 height:16 style_sunkenedge:on
slider sl_morph "" pos:[11,205] width:140 ticks:0
label lbl3 " P R E V I E W" pos:[5,233] width:140 height:16 style_sunkenedge:on
spinner spn_size "Checker Size: " pos:[5,253] fieldwidth:55 range:[.01,1e3,5]
checkbutton cbtn_mat "Checker Preview" pos:[5,273] width:140 highlightColor:[50,50,50]
on cb_auto changed state do
(
spn_quad.enabled = state
pb_retopo.enabled = not state
)
on pb_master picked obj do (if isValidNode obj do (master = obj ; pb_master.text = master.name))
on pb_flat picked obj do
(
if isValidNode obj do
(
flat = obj ; mat = obj.mat ; pb_flat.text = flat.name
if isValidNode newObj do newObj.center = flat.center
)
)
on pb_retopo picked obj do
(
if isValidNode obj do
(
newObj = obj ; pb_master.text = newObj.name
if isValidNode flat do newObj.center = flat.center
)
)
on btn_do pressed do
(
if isValidNode master and isValidNode flat do
(
sl_morph.value = 0
if (mMody = flat.modifiers["Morphy"]) != null do WM3_MC_SetValue mMody 1 0.0
if flat.modifiers.count > 0 and flat.modifiers[1].name == "Morphy" do deletemodifier flat 1
if isValidNode newObj and cb_auto.checked == true do (delete newObj ; newObj = null)
max modify mode
if cb_auto.checked do
(
newObj = copy flat ; newObj.name = (flat.name+"_clone")
addModifier newObj (Quadify_Mesh name:"Quadify" quadsize:spn_quad.value)
)
if not isValidNode newObj then messageBox "You forgot to pick Retopologized Object" title:"Warning" beep:off else
(
addModifier newObj (Skin_Wrap name:"Wrapy" engine:0 falloff:spn_warp.value meshList:#(flat))
addModifier flat (Morpher name:"Morphy") ; modPanel.setCurrentObject flat.modifiers["Morphy"]
WM3_MC_BuildFromNode flat.modifiers["Morphy"] 1 master ; flat.xray = on ; select newObj
)
)
)
on spn_quad buttonDown do if isValidNode newObj do
(
sl_morph.value = 0
WM3_MC_SetValue flat.modifiers["Morphy"] 1 0.0
newObj.modifiers["Wrapy"].enabled = off
flagForeground newObj on
)
on spn_quad buttonUp do if isValidNode newObj do
(
newObj.modifiers["Wrapy"].enabled = on
newObj.modifiers["Wrapy"].reset()
flagForeground newObj off
)
on spn_quad changed val do if isValidNode newObj do
(
if (qMody = newObj.modifiers["Quadify"]) != null do qMody.quadsize = val
)
on spn_warp buttonDown do if isValidNode newObj do flagForeground newObj on
on spn_warp buttonUp do if isValidNode newObj do flagForeground newObj off
on spn_warp changed val do if isValidNode newObj do
(
if (wMody = newObj.modifiers["Wrapy"]) != null do wMody.offset = val
)
on sl_morph buttonDown do if isValidNode flat do flagForeground flat on
on sl_morph buttonUp do if isValidNode flat do flagForeground flat off
on sl_morph changed val do if isValidNode flat do
(
if (mMody = flat.modifiers["Morphy"]) != null do WM3_MC_SetValue mMody 1 val
)
on cbtn_mat changed state do if isValidNode newObj do
(
if not state then newObj.mat = mat else
(
checkboard.diffusemap.coords.U_Tiling = checkboard.diffusemap.coords.V_Tiling = spn_size.value
newObj.mat = checkboard
)
)
on spn_size changed val do if isValidNode newObj and cbtn_mat.checked do
(
checkboard.diffusemap.coords.U_Tiling = checkboard.diffusemap.coords.V_Tiling = val
)
)
createDialog bgaRoll 150 300 style:#(#style_titlebar, #style_sysmenu, #style_toolwindow) ; ok
)