Created
May 5, 2017 06:08
-
-
Save Hoikohroh/b0c76c9f32d4250df46f8ffe2873fc48 to your computer and use it in GitHub Desktop.
Maxscript:Slice_Axis
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Slice Axis | |
2017/5/5 | |
description | |
add SliceModifier and GUI | |
if button pressed , the SliceModifier's sliceplane rotate. | |
*/ | |
function AddSliceMod obj =( | |
local sliceMod = sliceModifier() | |
sliceMod.name = "Slice Axis" | |
addModifier obj sliceMod | |
sliceMod | |
) | |
function AddCutomAttr mod = ( | |
local setAxis = attributes "setAxis"( | |
rollout params "SlicePlane Axis"( | |
radiobuttons coordinate labels:#("Local","World") | |
-- radiobuttons coordinate labels:#("Local","World","WorkingPivot") | |
group "Axis"( | |
button x_axis_btn "x" across:3 | |
button y_axis_btn "y" | |
button z_axis_btn "z" | |
) | |
on x_axis_btn pressed do ( | |
local tmpAngle = (quat 90[0,1,0]) | |
local tmp = selection [1] | |
local tmpMod = modPanel.getCurrentObject() | |
if classof(tmpMod) == SliceModifier do( | |
local tmpPos = tmpMod.slice_plane.position | |
if coordinate.state == 2 then( | |
tmpMod.slice_plane.rotation = (quat 0[0,0,1]) | |
local modTM = getModContextTM tmp tmpMod | |
local offsetTM = rotate tmp.transform tmpAngle | |
tmpMod.slice_plane.rotation = ((inverse modTM) * (offsetTM)) as quat | |
tmpMod.slice_plane.position = tmpPos | |
)else( | |
tmpMod.slice_plane.rotation = (quat 0[0,0,1]) | |
tmpMod.slice_plane.rotation = tmpAngle | |
local modTM = getModContextTM tmp tmpMod | |
local offsetTM = xformMat (inverse modTM) tmp.transform | |
offsetTM = rotate offsetTM (inverse tmpAngle) | |
tmpMod.slice_plane.rotation = offsetTM as quat | |
tmpMod.slice_plane.position = tmpPos | |
) | |
) | |
) | |
on y_axis_btn pressed do ( | |
local tmpAngle = (quat 90[1,0,0]) | |
local tmp = selection [1] | |
local tmpMod = modPanel.getCurrentObject() | |
if classof(tmpMod) == SliceModifier do( | |
local tmpPos = tmpMod.slice_plane.position | |
if coordinate.state == 2 then( | |
tmpMod.slice_plane.rotation = (quat 0[0,0,1]) | |
local modTM = getModContextTM tmp tmpMod | |
local offsetTM = rotate tmp.transform tmpAngle | |
tmpMod.slice_plane.rotation = ((inverse modTM) * (offsetTM)) as quat | |
tmpMod.slice_plane.position = tmpPos | |
)else( | |
tmpMod.slice_plane.rotation = (quat 0[0,0,1]) | |
tmpMod.slice_plane.rotation = tmpAngle | |
local modTM = getModContextTM tmp tmpMod | |
local offsetTM = xformMat (inverse modTM) tmp.transform | |
offsetTM = rotate offsetTM (inverse tmpAngle) | |
tmpMod.slice_plane.rotation = offsetTM as quat | |
tmpMod.slice_plane.position = tmpPos | |
) | |
) | |
) | |
on z_axis_btn pressed do ( | |
local tmpAngle = (quat 0[0,0,1]) | |
local tmp = selection [1] | |
local tmpMod = modPanel.getCurrentObject() | |
if classof(tmpMod) == SliceModifier do( | |
local tmpPos = tmpMod.slice_plane.position | |
if coordinate.state == 2 then( | |
tmpMod.slice_plane.rotation = (quat 0[0,0,1]) | |
local modTM = getModContextTM tmp tmpMod | |
local offsetTM = rotate tmp.transform tmpAngle | |
tmpMod.slice_plane.rotation = ((inverse modTM) * (offsetTM)) as quat | |
tmpMod.slice_plane.position = tmpPos | |
)else( | |
tmpMod.slice_plane.rotation = (quat 0[0,0,1]) | |
tmpMod.slice_plane.rotation = tmpAngle | |
local modTM = getModContextTM tmp tmpMod | |
local offsetTM = xformMat (inverse modTM) tmp.transform | |
offsetTM = rotate offsetTM (inverse tmpAngle) | |
tmpMod.slice_plane.rotation = offsetTM as quat | |
tmpMod.slice_plane.position = tmpPos | |
) | |
) | |
) | |
) | |
) | |
custAttributes.add mod setAxis | |
) | |
if validModifier $ sliceModifier do( | |
tmpMod = AddSliceMod $ | |
AddCutomAttr tmpMod | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment