Skip to content

Instantly share code, notes, and snippets.

@paulwinex
Created October 11, 2022 17:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save paulwinex/ce8dbffbc8b00b2b8d0a05874d457a50 to your computer and use it in GitHub Desktop.
Save paulwinex/ce8dbffbc8b00b2b8d0a05874d457a50 to your computer and use it in GitHub Desktop.
from pymel.core import *
def separate_by_shaders(obj):
shaders = []
for sg in obj.getShape().outputs(type='shadingEngine'):
shaders.extend(sg.surfaceShader.inputs())
shaders = list(set(shaders))
for shader in shaders:
members = get_shader_members(shader)
if members:
select(members)
mel.DetachComponent()
select(obj)
objs = polySeparate(ch=0)
return objs
def get_shader_members(mat):
sg = listConnections(mat+'.outColor')
if sg:
members = sets(sg[0], q=True )
return members
def separate_by_shader_selected():
obj = selected()[0]
separate_by_shaders(obj)
# separate_by_shader_selected()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment