Skip to content

Instantly share code, notes, and snippets.

@CodePint
Created February 5, 2021 13:57
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 CodePint/759ec18df731a9c3a36f1050665d61fd to your computer and use it in GitHub Desktop.
Save CodePint/759ec18df731a9c3a36f1050665d61fd to your computer and use it in GitHub Desktop.
import maya.cmds as cmds
import random
# Original article and code
# https://medium.com/take-a-bite-of-bits-and-bytes/intro-to-python-scripting-for-maya-e02ba87175b5
# https://github.com/Cheryl-Lao/BitsAndBytes/blob/master/hatCreatorV1.py
def create(cone=None, pompom=None):
# create the objects
cone, pompom = cone or {}, pompom or {}
cone['object'], cone['node'] = cmds.polyCone()
pompom['object'], pompom['node'] = cmds.polySphere(r=0.25)
# position the objects
cmds.move(0, 1.05, 0)
# configure the material and colour for the objects
configure(cone['object'], cone.get('material', 'blinn'), cone.get('colour'))
configure(pompom['object'], pompom.get('material', 'lambert'), pompom.get('colour'))
# merge the objects into a single shape
cmds.polyUnite(cone['object'], pompom['object'], n='hat')
def configure(object, material, colour=None):
# confgure object material
cmds.shadingNode(material, name=material+'Shader', asShader=True)
cmds.sets(name=material+'MaterialGroup', renderable=True, empty=True)
# initialize colour from randomly generated values if not present
colour = colour or [random.random() for _ in range(3)]
# configure object colour
cmds.surfaceShaderList(material+'Shader', add=material+'MaterialGroup')
cmds.setAttr(material+'Shader.color', *colour, type='double3')
cmds.sets(object, e=True, forceElement=material+'MaterialGroup')
# from tutorials.hats import hat_creator
# reload(hat_creator)
# hat_creator.create()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment