Skip to content

Instantly share code, notes, and snippets.

@JokerMartini
Last active September 18, 2023 09:04
Show Gist options
  • Save JokerMartini/4705d4d14a40a0081e32 to your computer and use it in GitHub Desktop.
Save JokerMartini/4705d4d14a40a0081e32 to your computer and use it in GitHub Desktop.
Maxscript: Create an empty mesh node in 3ds Max using maxscript
epoly = convertToPoly (editable_mesh name:(uniquename "EPoly"))
fn stealMesh node:undefined =
(
if isvalidNode node do
(
local mods = #()
for m = 1 to node.modifiers.count do
(
append mods node.modifiers[m].enabled
node.modifiers[m].enabled = false
)
-- clean mesh
epoly = convertToPoly (editable_mesh name:(uniquename "EPoly"))
epoly.transform = node.transform
epoly.scale.controller = ScaleXYZ()
epoly.scale.controller.value = [1,1,1]
-- inject mesh
meshInstance = instance node
polyOp.attach epoly meshInstance
-- fix transform
ctrl = classof node.scale.controller
node.scale.controller = ScaleXYZ()
node.transform = epoly.transform
node.scale.controller = ctrl()
node.ObjectOffsetPos = [0,0,0]
node.ObjectOffsetRot = quat 0 0 0 1
node.ObjectOffsetScale = [1,1,1]
node.baseObject = copy epoly.baseObject
for m = 1 to mods.count do
(
if mods[m] do node.modifiers[m].enabled = true
)
delete epoly
gc()
)
)
fn resetMeshes nodes:#() =
(
max create mode
InstanceMgr.MakeObjectsUnique nodes #individual
for n in nodes do
(
stealMesh node:n
)
)
resetMeshes nodes:selection()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment