コード例 #1
0
def create_dummy(object, type="mesh"):
    scale_multi = 1.5
    obj_namespace, obj_name = namespace_breaker(object)
    if not type=="nurbsCurve":
        dummy_conrtol = dummy_from_bb(object, obj_name, scale_multi)
    elif type == "error":
        temp_copy = cmds.duplicate(object, rc=True)
        if len(temp_copy)>1:
            cmds.delete(temp_copy[1::])
        loc = cmds.spaceLocator(n="dummy_locator_0#")[0]
        cmds.parentConstraint(loc, temp_copy[0], mo=False)
        cmds.delete(loc)
        refine_attrs(temp_copy[0])
        try:
            surface = cmds.Planar(temp_copy[0])
        except:
            surface = cmds.revolve(temp_copy[0])
        dummy_conrtol = dummy_from_bb(surface, obj_name, scale_multi)
        cmds.delete(surface)

    else:
        name = obj_name+"_dummy_control_00"
        copy_obj = cmds.duplicate(object, rc=True)
        if len(copy_obj)>1:
            cmds.delete(copy_obj[1::])
        loc = cmds.spaceLocator(n="dummy_locator_0#")[0]
        cmds.parentConstraint(loc, copy_obj[0], mo=False)
        cmds.delete(loc)
        refine_attrs(copy_obj[0])
        cmds.scale(scale_multi,scale_multi,scale_multi, copy_obj[0])
        cmds.makeIdentity(copy_obj[0], apply=True, t=True, r=True, s=True)
        name = cmds.rename(copy_obj[0], name)
        dummy_conrtol = name
        cmds.refresh()
    return dummy_conrtol
コード例 #2
0
def create(piv=[0, 0, 0],
           axis=[0, 0, -1],
           rad=1,
           dilate_ctrl='',
           prefix='eyeball'):
    # ------------------------
    # Generate Profile Curve

    # sphere
    eye_sphere = cmds.sphere(p=piv, ax=axis, r=rad, n=prefix + '_history')
    # curve from sphere
    eye_crv = cmds.duplicateCurve(eye_sphere[0] + '.v[0]')
    eye_crv[0] = cmds.rename(eye_crv[0], prefix + '_pfl01_crv')
    # rebuild curve 0-1
    cmds.rebuildCurve(eye_crv[0], rpo=1, end=1, kcp=1, kr=0, d=3, tol=0.01)

    # ------------------------
    # Extract Curve Segments

    # detach curve
    eye_crv_detach = cmds.detachCurve(eye_crv[0] + '.u[0.125]',
                                      eye_crv[0] + '.u[0.25]',
                                      rpo=0,
                                      ch=1)
    eye_crv_detach[0] = cmds.rename(eye_crv_detach[0], prefix + '_pl01_crv')
    eye_crv_detach[1] = cmds.rename(eye_crv_detach[1], prefix + '_ir01_crv')
    eye_crv_detach[2] = cmds.rename(eye_crv_detach[2], prefix + '_sc01_crv')
    eye_crv_detach[3] = cmds.rename(eye_crv_detach[3], prefix + '_cr01_dtc')
    # rebuild curve segments
    pupil_rebuild = cmds.rebuildCurve(eye_crv_detach[0],
                                      rpo=1,
                                      end=1,
                                      kep=1,
                                      kt=1,
                                      kr=0,
                                      s=2,
                                      d=3,
                                      tol=0.01)
    iris_rebuild = cmds.rebuildCurve(eye_crv_detach[1],
                                     rpo=1,
                                     end=1,
                                     kep=1,
                                     kt=1,
                                     kr=0,
                                     s=2,
                                     d=3,
                                     tol=0.01)
    sclera_rebuild = cmds.rebuildCurve(eye_crv_detach[2],
                                       rpo=1,
                                       end=1,
                                       kep=1,
                                       kt=1,
                                       kr=0,
                                       s=4,
                                       d=3,
                                       tol=0.01)
    pupil_rebuild[1] = cmds.rename(pupil_rebuild[1], prefix + '_pl01_rbc')
    iris_rebuild[1] = cmds.rename(iris_rebuild[1], prefix + '_ir01_rbc')
    sclera_rebuild[1] = cmds.rename(sclera_rebuild[1], prefix + '_sc01_rbc')

    # ------------------------
    # Generate Eye Surfaces

    # revolve
    pupil_revolve = cmds.revolve(eye_crv_detach[0],
                                 po=0,
                                 rn=0,
                                 ut=0,
                                 tol=0.01,
                                 degree=3,
                                 s=8,
                                 ulp=1,
                                 ax=[0, 0, 1])
    iris_revolve = cmds.revolve(eye_crv_detach[1],
                                po=0,
                                rn=0,
                                ut=0,
                                tol=0.01,
                                degree=3,
                                s=8,
                                ulp=1,
                                ax=[0, 0, 1])
    sclera_revolve = cmds.revolve(eye_crv_detach[2],
                                  po=0,
                                  rn=0,
                                  ut=0,
                                  tol=0.01,
                                  degree=3,
                                  s=8,
                                  ulp=1,
                                  ax=[0, 0, 1])
    # rename surfaces
    pupil_revolve[0] = cmds.rename(pupil_revolve[0], prefix + '_pl01_srf')
    pupil_revolve[1] = cmds.rename(pupil_revolve[1], prefix + '_pl01_rvl')
    iris_revolve[0] = cmds.rename(iris_revolve[0], prefix + '_ir01_srf')
    iris_revolve[1] = cmds.rename(iris_revolve[1], prefix + '_ir01_rvl')
    sclera_revolve[0] = cmds.rename(sclera_revolve[0], prefix + '_sc01_srf')
    sclera_revolve[1] = cmds.rename(sclera_revolve[1], prefix + '_sc01_rvl')
    # Connect Revolve Pivot
    cmds.connectAttr(eye_sphere[0] + '.t', pupil_revolve[1] + '.pivot', f=1)
    cmds.connectAttr(eye_sphere[0] + '.t', iris_revolve[1] + '.pivot', f=1)
    cmds.connectAttr(eye_sphere[0] + '.t', sclera_revolve[1] + '.pivot', f=1)

    # ------------------------
    # Connect Dilate Control

    if len(dilate_ctrl):

        # Verify Control
        if not cmds.objExists(dilate_ctrl):
            raise UserInputError('Object ' + dilate_ctrl + ' does not exist!')

        # Check Attributes Exist
        if not cmds.objExists(dilate_ctrl + '.iris'):
            cmds.addAttr(dilate_ctrl, ln='iris', min=0, max=4, dv=1)
            cmds.setAttr(dilate_ctrl + '.iris', k=1)
        if not cmds.objExists(dilate_ctrl + '.pupil'):
            cmds.addAttr(dilate_ctrl, ln='pupil', min=0, max=1, dv=0.5)
            cmds.setAttr(dilate_ctrl + '.pupil', k=1)

        # Connect Attributes
        iris_md = cmds.createNode('multDoubleLinear', n=prefix + '_irs01_mdl')
        pupil_md = cmds.createNode('multDoubleLinear', n=prefix + '_ppl01_mdl')
        cmds.connectAttr(dilate_ctrl + '.iris', iris_md + '.input1')
        cmds.setAttr(iris_md + '.input2', 0.25)
        cmds.connectAttr(iris_md + '.output',
                         eye_crv_detach[3] + '.parameter[1]')
        cmds.connectAttr(dilate_ctrl + '.pupil', pupil_md + '.input1')
        cmds.connectAttr(iris_md + '.output', pupil_md + '.input2')
        cmds.connectAttr(pupil_md + '.output',
                         eye_crv_detach[3] + '.parameter[0]')
コード例 #3
0
def revolve(*args, **kwargs):
    res = cmds.revolve(*args, **kwargs)
    if not kwargs.get('query', kwargs.get('q', False)):
        res = _factories.maybeConvert(res, _general.PyNode)
    return res
コード例 #4
0
def createDomeGrid():
  import maya.cmds as cmds
  import maya.mel as mel
  
  #---------------------------------------------------------------------------
  # Variables
  #---------------------------------------------------------------------------
  
  #Reference Grid Meshes
  #domeGridSurface = 'domeGridSurface'
  domeGridSurface = 'domeGridSurface'
  domeGridlineSurface = 'domeGridlineSurface'
  
  #Set the diameter of the dome shape
  startingDomeDiameter = 360
  
  #---------------------------------------------------------------------------
  # Remove any existing domeGrid elements
  #---------------------------------------------------------------------------
  
  #---------------------------------------------------------------------------
  #Remove old geometry and paint effects nodes
  #---------------------------------------------------------------------------
  
  if cmds.objExists('domeGrid'): 
    print('Removing existing Domemaster3D object: domeGrid')
    cmds.select( 'domeGrid', replace=True)
    cmds.delete()

  if cmds.objExists('MeshGroup'): 
    print('Removing existing Domemaster3D object: MeshGroup')
    cmds.select( 'MeshGroup', replace=True)
    cmds.delete() 
  
  if cmds.objExists(domeGridSurface): 
    print('Removing existing Domemaster3D object: ' + domeGridSurface)
    cmds.select( domeGridSurface, replace=True)
    cmds.delete()
  
  if cmds.objExists('domeGridToon'): 
    print('Removing existing Domemaster3D object: domeGridToon')
    cmds.select( 'domeGridToon', replace=True)
    cmds.delete()
    
  if cmds.objExists('domeGrid_displayModeExpr'): 
    print('Removing existing Domemaster3D object: domeGrid_displayModeExpr')
    cmds.select( 'domeGrid_displayModeExpr', replace=True)
    cmds.delete()
  
  #--------------------------------------------------------------------------
  #Remove old dome Grid surface materials
  #---------------------------------------------------------------------------
  
  if cmds.objExists('domeGridLinesSurfaceShader'): 
    print('Removing existing Domemaster3D object: domeGridLinesSurfaceShader')
    cmds.select( 'domeGridLinesSurfaceShader', replace=True)
    cmds.delete()
  
  if cmds.objExists('domeGridLinesSurfaceShaderSG'): 
    print('Removing existing Domemaster3D object: domeGridLinesSurfaceShaderSG')
    cmds.select( 'domeGridLinesSurfaceShaderSG', replace=True)
    cmds.delete()
  
  if cmds.objExists('domeGridSurfaceShaderSG'): 
    print('Removing existing Domemaster3D object: domeGridSurfaceShaderSG')
    cmds.select( 'domeGridSurfaceShaderSG', replace=True)
    cmds.delete()
    
  if cmds.objExists('domeGridSurfaceShader'): 
    print('Removing existing Domemaster3D object: domeGridSurfaceShader')
    cmds.select( 'domeGridSurfaceShader', replace=True)
    cmds.delete()
  
  #--------------------------------------------------------------------------
  #Protect any existing surface shaders from the paint effects node
  #---------------------------------------------------------------------------
    
  if cmds.objExists('surfaceShader1SG'): 
    print('Renaming existing  object: surfaceShader1SG')
    cmds.rename( 'surfaceShader1SG', 'aSurfaceShader1SG' )
    
  if cmds.objExists('surfaceShader1'): 
    print('Renaming existing  object: surfaceShader1')
    cmds.rename( 'surfaceShader1', 'aSurfaceShader1' )
  
  #--------------------------------------------------------------------------
  # Make the dome mesh
  #--------------------------------------------------------------------------
  
  #-----------------------------------------------------------------------------
  #Create a hybrid NURBS/Polygon Paint effects Toon Surface
  #-----------------------------------------------------------------------------

  startingCurveRadius = 1.0
  
  #startingToonThickness = 0.1
    
  #Create the base curve with a 90 degree arc
  domeRadiusCurveName = cmds.circle(name='domeGridSurfaceCurve', c=(0, 0, 0), nr=(0, 0, 1), sw=90, r=startingCurveRadius, d=3, ut=0, tol=0.01, s=10, ch=1)

  #Get the curve's shape node name
  domeCurveShape = getObjectShapeNode(domeRadiusCurveName[0])

  #Setup the NURBS to Poly conversion prefs
  #nurbsToPolygonsPref -q -f;
  cmds.nurbsToPolygonsPref(format=3, uType=3, uNumber=1, vType=3, vNumber=1)

  """
  #MEL Code to debug NURBS to polygon conversion:
  int $f = `nurbsToPolygonsPref -q -f`;
  int $ut = `nurbsToPolygonsPref -q -ut`;
  int $un = `nurbsToPolygonsPref -q -un`;
  int $vt = `nurbsToPolygonsPref -q -vt`;
  int $vn = `nurbsToPolygonsPref -q -vn`;
  print ($f + " " + $ut + " " + $un+ " " + $vt+ " " + $vn);
  """

  #Revolve the base 90 degree arc curve into a NURBS dome shape
  domeRadiusSurfaceName = cmds.revolve(domeCurveShape, name='domeGridSurface', ch=1, po=0, rn=0, ssw=0, esw=360, ut=0, tol=0.01, degree=3, s=40, ulp=1, ax=(0, 1, 0), polygon=1)

  domeSurfaceShape = getObjectShapeNode(domeRadiusSurfaceName[0]);

  print "\nDome Preview elements:"
  print domeRadiusSurfaceName
  print "Dome Preview shape node:"
  print domeSurfaceShape
  print "\n"

  #Find out the preview curve's makeNurbCircle node name
  makeCurveShapeName = domeCurveShape
  makeCurveObject = cmds.listConnections( makeCurveShapeName[0]+'.create', type='makeNurbCircle')
  makeCurveNodeName = makeCurveObject[0]
  print("The NURBS circle creation node is: ")
  print(makeCurveNodeName)

  #-----------------------------------------------------------------------------
  #Make the NURBS Curve able to be moved without effecting the revolves
  #-----------------------------------------------------------------------------
      
  #Find out the name of the "makeNurbCircle" node that is used to create the domeGridPreviewCurve shape
  makeRevolveObjects= cmds.listConnections(  makeCurveShapeName[0]+'.worldSpace', type='revolve')
  makeRevolveNodeName = makeRevolveObjects[0];
  print("The circle creation node is: ")
  print(makeRevolveNodeName)

  #Reconnect the curve to the revolve node using local space
  #This replaces the curve's previous .worldSpace connection that inhibited the
  #ability to move the curve without effecting the revolve
  cmds.connectAttr( makeCurveShapeName[0]+".local", makeRevolveNodeName+".inputCurve",  f=True);

  #Put the domeSurface "PreviewShape" inside the domeGrid group
  #Have the revolved shape aligned relative to the domeGrid
  #cmds.parent(domeRadiusSurfaceName[0], domeRadiusTransform)

  #Parent the NURBS revolve curve to the domeGrid
  #cmds.parent(domeRadiusCurveName[0], domeRadiusTransform)
  
  #Create the base sphere with a 1 unit scale
  #domeGridName = cmds.polySphere( name=domeGridSurface, radius = 1, subdivisionsX=36, subdivisionsY=20, axis=(0, 1, 0),  createUVs=2, constructionHistory=True )
  
  #Chop the polysphere into a hemispherical dome
  #domeGridTransform = domeGridName[0]
  #domeGridShape = getObjectShapeNode( domeGridName[0] )
  #cmds.select( domeGridTransform+'.f[0:323]', domeGridTransform+'.f[648:683]', replace=True )
  #cmds.delete()
  
  domeGridTransform = domeRadiusSurfaceName[0];
  
  #Make the curve an intermediate shape
  cmds.setAttr(domeCurveShape[0]+'.intermediateObject', 1)

  #Tell the domeGridSurface to move with the domeGrid group node
  cmds.setAttr(domeGridTransform+'.inheritsTransform', 1)
  
 
  # ---------------------------------------------------------------------------
  # Create the PaintFX Toon stroke outlines
  # --------------------------------------------------------------------------
  
  cmds.select( domeGridTransform, replace=True )
  
  #Assign the paint effects toon outlines
  mel.eval('assignNewPfxToon;')
  
  #rename the toon shader
  domeToonShader = 'domeGridToon'
  domeToonShaderShape = 'domeGridToonShape'
  cmds.rename( 'pfxToon1', domeToonShader )
  
  #Define the new toon shader controls
  cmds.setAttr( domeToonShaderShape+'.profileLines', 0 )
  cmds.setAttr( domeToonShaderShape+'.borderLines', 0 )
  cmds.setAttr( domeToonShaderShape+'.creaseLineWidth', 15 )
  cmds.setAttr( domeToonShaderShape+'.creaseColor', 1, 1, 0, type='double3' )
  cmds.setAttr( domeToonShaderShape+'.hardCreasesOnly', 0 )
  cmds.setAttr( domeToonShaderShape+'.creaseBreakAngle', 0 )
  cmds.setAttr( domeToonShaderShape+'.creaseAngleMin', 0 )
  cmds.setAttr( domeToonShaderShape+'.creaseAngleMax', 0 )
  cmds.setAttr( domeToonShaderShape+'.meshVertexColorMode', 1 )
  cmds.setAttr( domeToonShaderShape+'.meshQuadOutput', 1 )
  cmds.setAttr( domeToonShaderShape+'.meshHardEdges', 1 )
  
  #Create a polygon paint effects stroke output
  cmds.select( domeToonShader, replace=True );
  mel.eval('doPaintEffectsToPoly( 1,1,1,1,100000);')
  
  #Make a local space mesh connection to fix the grouped node double translation issue
  #connectAttr -f domeGridToonShape.outMainMesh MainShape.inMesh;
  #Result: Connected domeGridToonShape.outMainMesh to MainShape.inMesh. // 
  cmds.connectAttr( domeToonShaderShape+'.outMainMesh', 'MainShape.inMesh', force=True)
  
  if cmds.objExists('MeshGroup'): 
    print('Unlinking the Toon shader\'s inheritsTransform attribute')
    cmds.setAttr( 'MeshGroup.inheritsTransform', 0)
  
  # --------------------------------------------------------------------------
  #Adjust the grid lines shader
  #---------------------------------------------------------------------------
  
  #domeGridlineShadingGroup = cmds.sets( renderable=True, noSurfaceShader=True, empty=True, name='domeGridLinesSurfaceShaderSG' )
  domeGridlineMaterial = 'domeGridLinesSurfaceShader'
  domeGridlineShadingGroup  = 'domeGridLinesSurfaceShaderSG'
  
  #Rename the default gridlines shader
  cmds.rename( 'surfaceShader1', domeGridlineMaterial )
  cmds.rename( 'surfaceShader1SG', domeGridlineShadingGroup )
  
  #Standard Yellow Color
  #cmds.setAttr( 'surfaceShader1.outColor', 1, 1, 0, type='double3')
  
  #Super Bright Yellow Color for Physical Sky Compatibility
  #cmds.setAttr(domeGridlineMaterial+'.outColor', 15, 15, 0, type='double3')
  cmds.setAttr(domeGridlineMaterial+'.outColor', 1, 1, 0, type='double3')
    
  #---------------------------------------------------------------------------
  #Adjust the grid surface shader
  #---------------------------------------------------------------------------
  
  #Create the dome Grid surface shader + shading group
  domeGridShadingGroup = cmds.sets( renderable=True, noSurfaceShader=True, empty=True, name='domeSurfaceShaderSG' )
  domeGridMaterial = cmds.shadingNode( 'surfaceShader', name='domeGridSurfaceShader', asShader=True) 
  
  #Make the surface shader black
  cmds.setAttr( domeGridMaterial+'.outColor', 0, 0, 0, type='double3')
  #Set the polygon surface to be transparent
  cmds.setAttr( domeGridMaterial+'.outTransparency', 1, 1, 1, type='double3')
  
  #Connect the surface shader to the shading group and the polygon surface
  cmds.connectAttr(domeGridMaterial+'.outColor', domeGridShadingGroup+'.surfaceShader')
  cmds.select(domeGridSurface)
  cmds.hyperShade(assign=domeGridShadingGroup)

  #---------------------------------------------------------------------------
  #Group the domeGrid surfaces under a node called "domeGrid"
  #---------------------------------------------------------------------------
  #cmds.group( 'domeGridSurface', 'domeGridToon', 'MeshGroup', name='domeGrid' )
  cmds.group( domeRadiusCurveName[0], domeRadiusSurfaceName[0], 'domeGridToon', 'MeshGroup', name='domeGrid' )
       
  #---------------------------------------------------------------------------
  # Add Extra Attrs to the domeGrid shape
  #---------------------------------------------------------------------------
  baseNodeName = 'domeGrid'
    
  #---------------------------------------------------------------------------  
  #Add a Field of View control to the domeGrid's transform node
  #---------------------------------------------------------------------------
  attrName = 'fieldOfView'
  
  #Check if the attribute exists on the domeGrid node
  #if(mel.attributeExists(attrName, baseNodeName) == 0):
  
  # 180 degree default = 180
  # 360 degree default = 360
  cmds.addAttr(baseNodeName, longName=attrName, attributeType="double", min=0.1, max=360, defaultValue=360 , keyable=True)
  print('Adding custom Attributes ' + baseNodeName + '.' + attrName)
  
  #---------------------------------------------------------------------------  
  #Add a Field of View expression
  #---------------------------------------------------------------------------
  
  #Connect the domeGrid dome radius control to the sphere's makeNurbCircle radius attribute
  expressionBuilderString = makeCurveNodeName + ".sweep = " + (baseNodeName+'.'+attrName) + "/2;"
  gridFOVRadiusExpressionName = 'domeGrid_FOVExpr'
  
  print "DomeGrid FOV Extra Attribute Expressions:"
  print expressionBuilderString

  cmds.expression( name=gridFOVRadiusExpressionName, string=expressionBuilderString, object=baseNodeName, alwaysEvaluate=True, unitConversion=all)
  
  #Connect the domeGrid dome radius control to the sphere's makeNurbCircle radius attribute:
  #cmds.connectAttr( (baseNodeName+'.'+attrName), makeCurveObject[0]+'.sweep', force=True)
    

  #---------------------------------------------------------------------------  
  #Add a dome Radius control to the domeGrid's transform node
  #---------------------------------------------------------------------------
  attrName = 'Dome_Radius'

  #Check if the attribute exists on the domeGrid node
  #if(mel.attributeExists(attrName, baseNodeName) == 0):
  cmds.addAttr(baseNodeName, longName=attrName, attributeType="double", min=0.1, max=1000000, hasSoftMaxValue=True, softMaxValue=360, defaultValue=startingDomeDiameter , keyable=True)
  print('Adding custom Attributes ' + baseNodeName + '.' + attrName)
  
  #Connect the domeGrid dome radius control to the sphere's makeNurbCircle radius attribute:
  cmds.connectAttr( (baseNodeName+'.'+attrName), makeCurveObject[0]+'.radius', force=True)

  #---------------------------------------------------------------------------  
  #Add a Dome Height Spans control to the domeGrid's transform node
  #---------------------------------------------------------------------------
  attrName = 'Dome_Spans'

  #Check if the attribute exists on the domeGrid node
  #if(mel.attributeExists(attrName, baseNodeName) == 0):
  
  #  180 degree dome default value = 12
  #  360 degree dome default value = 24
  cmds.addAttr(baseNodeName, longName=attrName, attributeType="double", min=4, max=120, hasSoftMaxValue=True, softMaxValue=40, defaultValue=24 , keyable=True)
  print('Adding custom Attributes ' + baseNodeName + '.' + attrName)
  
  #Connect the domeGrid dome radius control to the sphere's makeNurbCircle sections attribute:
  cmds.connectAttr( (baseNodeName+'.'+attrName), makeCurveObject[0]+'.sections', force=True)
    
  #---------------------------------------------------------------------------  
  #Add a Dome Width Sections control to the domeGrid's transform node
  #---------------------------------------------------------------------------
  attrName = 'Dome_Sections'

  #Check if the attribute exists on the domeGrid node
  #if(mel.attributeExists(attrName, baseNodeName) == 0):
  cmds.addAttr(baseNodeName, longName=attrName, attributeType="double", min=4, max=240, hasSoftMaxValue=True, softMaxValue=120, defaultValue=42 , keyable=True)
  print('Adding custom Attributes ' + baseNodeName + '.' + attrName)
  
  #Connect the domeGrid dome radius control to the sphere's revolve sections attribute:
  cmds.connectAttr( (baseNodeName+'.'+attrName), makeRevolveNodeName+'.sections', force=True)
  
  #---------------------------------------------------------------------------
  #Add a Display Mode control to the domeGrid's transform node
  #---------------------------------------------------------------------------
  attrName = 'displayMode'
  #if(mel.attributeExists(attrName, baseNodeName) == 0):
  cmds.addAttr(baseNodeName, longName=attrName, attributeType="enum", en="Off:Wireframe:Shaded:Wireframe on Shaded", defaultValue=2, keyable=True)
  print('Adding custom Attributes ' + baseNodeName + '.' + attrName)
  
  #---------------------------------------------------------------------------
  #Add a Double Sided Rendering control to the domeGrid's transform node
  #---------------------------------------------------------------------------
  attrName = 'doubleSidedShading'
  #if(mel.attributeExists(attrName, baseNodeName) == 0):
  cmds.addAttr(baseNodeName, longName=attrName, attributeType="enum", en="Double Sided:Show Frontfaces:Show Backfaces", defaultValue=2, min=0, keyable=True)
  print('Adding custom Attributes ' + baseNodeName + '.' + attrName)
  
  #---------------------------------------------------------------------------
  #Add a Grid Line Thickness control to the domeGrid's transform node
  #---------------------------------------------------------------------------
  attrName = 'gridLineThickness'

  #This is the default starting value for the grid line strokes
  initialGridLineThickness = 0.05
  #previous setting 0.035

  #Check if the attribute exists on the domeGrid node
  #if(mel.attributeExists(attrName, baseNodeName) == 0):
  cmds.addAttr(baseNodeName, longName=attrName, attributeType="double", min=0.001, max=50, hasSoftMaxValue=True, softMaxValue=2, defaultValue=initialGridLineThickness, keyable=True)
  print('Adding custom Attributes ' + baseNodeName + '.' + attrName)
  
  #Connect the domeGrid Grid Line Thickness to the toon shader line width attribute:
  cmds.connectAttr( (baseNodeName+'.'+attrName), domeToonShaderShape+'.lineWidth', force=True)

  #---------------------------------------------------------------------------
  #Add a Grid Line Color control to the domeGrid's transform node - Default color 1,1,0 = Yellow
  #---------------------------------------------------------------------------
  attrName = 'gridLineColor'
  attrRName = "gridLineColorR";
  attrGName = "gridLineColorG";
  attrBName = "gridLineColorB";
  #if(mel.attributeExists(attrName, baseNodeName) == 0):
  cmds.addAttr(baseNodeName, longName=attrName, attributeType="float3", usedAsColor=True, keyable=True)
  
  # Super Bright Yellow Color
  # cmds.addAttr(baseNodeName, parent=attrName, longName=attrRName, attributeType="float", keyable=True, defaultValue=15)
  # cmds.addAttr(baseNodeName, parent=attrName, longName=attrGName, attributeType="float", keyable=True, defaultValue=15)
  # cmds.addAttr(baseNodeName, parent=attrName, longName=attrBName, attributeType="float", keyable=True, defaultValue=0)

  #Normal Yellow Color
  cmds.addAttr(baseNodeName, parent=attrName, longName=attrRName, attributeType="float", keyable=True, defaultValue=1)
  cmds.addAttr(baseNodeName, parent=attrName, longName=attrGName, attributeType="float", keyable=True, defaultValue=1)
  cmds.addAttr(baseNodeName, parent=attrName, longName=attrBName, attributeType="float", keyable=True, defaultValue=0)
  print('Adding custom Attributes ' + baseNodeName + '.' + attrName)
  
  #Connect the Grid Line Color swatch to the surface shader
  cmds.connectAttr( (baseNodeName+'.'+attrName), domeGridlineMaterial+'.outColor', force=True)
  #---------------------------------------------------------------------------
  #Add a Grid Line Transparency control to the domeGrid's transform node - Default value 0.25
  #---------------------------------------------------------------------------
  attrName = 'gridLineTransparency'
  cmds.addAttr(baseNodeName, longName=attrName, attributeType="double", keyable=True, defaultValue=0.0, min=0, max=1)
  
  #Connect the Grid Line transparency swatch to the surface shader
  cmds.connectAttr( (baseNodeName+'.'+attrName), domeGridlineMaterial+'.outTransparencyR', force=True)
  cmds.connectAttr( (baseNodeName+'.'+attrName), domeGridlineMaterial+'.outTransparencyG', force=True)
  cmds.connectAttr( (baseNodeName+'.'+attrName), domeGridlineMaterial+'.outTransparencyB', force=True)

  #---------------------------------------------------------------------------
  #Add a Grid Surface Color control to the domeGrid's transform node - Default color 0,0,0 = Black
  #---------------------------------------------------------------------------
  attrName = 'gridSurfaceColor'
  attrRName = "gridSurfaceColorR";
  attrGName = "gridSurfaceColorG";
  attrBName = "gridSurfaceColorB";
  #if(mel.attributeExists(attrName, baseNodeName) == 0):
  cmds.addAttr(baseNodeName, longName=attrName, attributeType="float3", usedAsColor=True, keyable=True)
  cmds.addAttr(baseNodeName, parent=attrName, longName=attrRName, attributeType="float", keyable=True, defaultValue=0)
  cmds.addAttr(baseNodeName, parent=attrName, longName=attrGName, attributeType="float", keyable=True, defaultValue=0)
  cmds.addAttr(baseNodeName, parent=attrName, longName=attrBName, attributeType="float", keyable=True, defaultValue=0)
  print('Adding custom Attributes ' + baseNodeName + '.' + attrName)
  
  
  #Connect the Grid Surface Color swatch to the surface shader
  cmds.connectAttr( (baseNodeName+'.'+attrName), domeGridMaterial+'.outColor', force=True)
  #---------------------------------------------------------------------------
  #Add a Grid Surface Transparency control to the domeGrid's transform node - Default value 0.25
  #---------------------------------------------------------------------------
  attrName = 'gridSurfaceTransparency'
  cmds.addAttr(baseNodeName, longName=attrName, attributeType="double", keyable=True, defaultValue=.5, min=0, max=1)
  
  #Connect the Grid Surface transparency swatch to the surface shader
  cmds.connectAttr( (baseNodeName+'.'+attrName), domeGridMaterial+'.outTransparencyR', force=True)
  cmds.connectAttr( (baseNodeName+'.'+attrName), domeGridMaterial+'.outTransparencyG', force=True)
  cmds.connectAttr( (baseNodeName+'.'+attrName), domeGridMaterial+'.outTransparencyB', force=True)


  #---------------------------------------------------------------------------  
  #Add a display mode expression to the domeGrid's transform node
  #---------------------------------------------------------------------------
  
  domeRadiusTransform =  "domeGrid"
  domeSurfaceShape = "domeGridSurface"
  domeSurfaceShapeNode = getObjectShapeNode(domeSurfaceShape)
  
  
  exprName = ""
  previewAttrName = "displayMode"
  #The expression name is domeGrid_displayModeExpr
  exprName = domeRadiusTransform + "_" + previewAttrName + "Expr"
 
  PreviewShapeExpr = ""

  PreviewShapeExpr += "// Custom " + previewAttrName + " Preview Shape Expressions\n\n"
  PreviewShapeExpr += "if (  " + domeRadiusTransform + "." + previewAttrName + " == 0){\n"
  PreviewShapeExpr += "  //Off Mode\n"
  PreviewShapeExpr += "  " + domeSurfaceShape + ".overrideDisplayType = 2;\n"
  PreviewShapeExpr += "  " + domeRadiusTransform + ".overrideEnabled = 1;\n"
  PreviewShapeExpr += "  " + domeRadiusTransform + ".overrideShading = 0;\n"
  PreviewShapeExpr += "  " + domeRadiusTransform + ".visibility = 0;\n"
  PreviewShapeExpr += "  MeshGroup.visibility = 0;\n"
  PreviewShapeExpr += "} else if (" + domeRadiusTransform + "." + previewAttrName + " == 1 ){\n"
  PreviewShapeExpr += "  //Wireframe Mode\n"
  PreviewShapeExpr += "  " + domeRadiusTransform + ".overrideEnabled = 1;\n"
  PreviewShapeExpr += "  " + domeRadiusTransform + ".overrideShading = 0;\n"
  PreviewShapeExpr += "  " + domeRadiusTransform + ".visibility = 1;\n"
  PreviewShapeExpr += "  MeshGroup.visibility = 0;\n"
  PreviewShapeExpr += "} else if (" + domeRadiusTransform + "." + previewAttrName + " == 2 ){\n"
  PreviewShapeExpr += "  //Shaded Mode\n"
  PreviewShapeExpr += "  string $currentPanel = \"modelPanel4\";\n"
  PreviewShapeExpr += "  if ( `modelEditor -exists currentPanel` )\n"
  PreviewShapeExpr += "  modelEditor -edit -wireframeOnShaded 0 currentPanel;\n"
  PreviewShapeExpr += "  string $currentPanel = \"StereoPanel\";\n"
  PreviewShapeExpr += "  if ( `modelEditor -exists currentPanel` )\n"
  PreviewShapeExpr += "  modelEditor -edit -wireframeOnShaded 0 currentPanel;\n"
  PreviewShapeExpr += "  " + domeSurfaceShape + ".overrideDisplayType = 2;\n"
  PreviewShapeExpr += "  " + domeRadiusTransform + ".overrideEnabled = 1;\n"
  PreviewShapeExpr += "  " + domeRadiusTransform + ".overrideShading = 1;\n"
  PreviewShapeExpr += "  " + domeRadiusTransform + ".visibility = 1;\n"
  PreviewShapeExpr += "  MeshGroup.visibility = 1;\n"
  PreviewShapeExpr += "} else if (" + domeRadiusTransform + "." + previewAttrName + " == 3 ){\n"
  PreviewShapeExpr += "  //Wireframe on Shaded Mode\n"
  PreviewShapeExpr += "  string $currentPanel = \"modelPanel4\";\n"
  PreviewShapeExpr += "  if ( `modelEditor -exists currentPanel` )\n"
  PreviewShapeExpr += "  modelEditor -edit -wireframeOnShaded 1 currentPanel;\n"
  PreviewShapeExpr += "  string $currentPanel = \"StereoPanel\";\n"
  PreviewShapeExpr += "  if ( `modelEditor -exists currentPanel` )\n"
  PreviewShapeExpr += "  modelEditor -edit -wireframeOnShaded 1 currentPanel;\n"
  PreviewShapeExpr += "  " + domeSurfaceShape + ".overrideDisplayType = 2;\n"
  PreviewShapeExpr += "  " + domeRadiusTransform + ".overrideEnabled = 1;\n"
  PreviewShapeExpr += "  " + domeRadiusTransform + ".overrideShading = 1;\n"
  PreviewShapeExpr += "  " + domeRadiusTransform + ".visibility = 1;\n"
  PreviewShapeExpr += "  MeshGroup.visibility = 1;\n"
  PreviewShapeExpr += "}\n"
  PreviewShapeExpr += "\n"
  PreviewShapeExpr += "\n"

  #---------------------------------------------------------------------------  
  #Add a Double Sided Shading expression to the domeGrid's transform node
  #---------------------------------------------------------------------------

  previewAttrName = "doubleSidedShading";

  PreviewShapeExpr += "// Custom Double Sided Shading Expressions\n\n"
  PreviewShapeExpr += "if (" + previewAttrName + " == 0 ){\n"
  PreviewShapeExpr += "  print(\"Double Sided Shading Enabled\\n\");\n"
  PreviewShapeExpr += "  setAttr \"" + domeSurfaceShape + ".doubleSided\" 1; \n"
  PreviewShapeExpr += "  setAttr \"" + domeSurfaceShape + ".opposite\" 0; \n"
  PreviewShapeExpr += "} else if (" + previewAttrName + " == 1 ){\n"
  PreviewShapeExpr += "  print(\"Backface Shading Enabled\\n\");\n"
  PreviewShapeExpr += "  setAttr \"" + domeSurfaceShape + ".doubleSided\" 0; \n"
  PreviewShapeExpr += "  setAttr \"" + domeSurfaceShape + ".opposite\" 0; \n"
  PreviewShapeExpr += "} else if (" + previewAttrName + " == 2 ){\n"
  PreviewShapeExpr += "  print(\"Frontface Shading Enabled\\n\");\n"
  PreviewShapeExpr += "  setAttr \"" + domeSurfaceShape + ".doubleSided\" 0; \n"
  PreviewShapeExpr += "  setAttr \"" + domeSurfaceShape + ".opposite\" 1; \n"
  PreviewShapeExpr += "}\n"

  print "DomeGrid Extra Attribute Expressions:"
  print PreviewShapeExpr

  cmds.expression( name=exprName, string=PreviewShapeExpr, object='domeGrid', alwaysEvaluate=True, unitConversion=all)

  #Force a first value into the double sided shading attribute
  cmds.setAttr( (domeRadiusTransform+".doubleSidedShading"), 0)
  
  #---------------------------------------------------------------------------  
  # Select the domeGrid node in the Attribute Editor
  #---------------------------------------------------------------------------  
  mel.eval ( ' showEditorExact("' + domeRadiusTransform + '") ' )
コード例 #5
0
ファイル: eyeball.py プロジェクト: RiggingDojoAdmin/glTools
def create(piv=[0,0,0],axis=[0,0,-1],rad=1,dilate_ctrl='',prefix='eyeball'):
	
	#------------------------
	# Generate Profile Curve
	
	# sphere
	eye_sphere = mc.sphere(p=piv,ax=axis,r=rad,n=prefix+'_history')
	# curve from sphere
	eye_crv = mc.duplicateCurve(eye_sphere[0]+'.v[0]')
	eye_crv[0] = mc.rename(eye_crv[0],prefix+'_pfl01_crv')
	# rebuild curve 0-1
	mc.rebuildCurve(eye_crv[0],rpo=1,end=1,kcp=1,kr=0,d=3,tol=0.01)
	
	#------------------------
	# Extract Curve Segments
	
	# detach curve
	eye_crv_detach = mc.detachCurve(eye_crv[0]+'.u[0.125]',eye_crv[0]+'.u[0.25]',rpo=0,ch=1)
	eye_crv_detach[0] = mc.rename(eye_crv_detach[0],prefix+'_pl01_crv')
	eye_crv_detach[1] = mc.rename(eye_crv_detach[1],prefix+'_ir01_crv')
	eye_crv_detach[2] = mc.rename(eye_crv_detach[2],prefix+'_sc01_crv')
	eye_crv_detach[3] = mc.rename(eye_crv_detach[3],prefix+'_cr01_dtc')
	# rebuild curve segments
	pupil_rebuild = mc.rebuildCurve(eye_crv_detach[0],rpo=1,end=1,kep=1,kt=1,kr=0,s=2,d=3,tol=0.01)
	iris_rebuild = mc.rebuildCurve(eye_crv_detach[1],rpo=1,end=1,kep=1,kt=1,kr=0,s=2,d=3,tol=0.01)
	sclera_rebuild = mc.rebuildCurve(eye_crv_detach[2],rpo=1,end=1,kep=1,kt=1,kr=0,s=4,d=3,tol=0.01)
	pupil_rebuild[1] = mc.rename(pupil_rebuild[1],prefix+'_pl01_rbc')
	iris_rebuild[1] = mc.rename(iris_rebuild[1],prefix+'_ir01_rbc')
	sclera_rebuild[1] = mc.rename(sclera_rebuild[1],prefix+'_sc01_rbc')
	
	#------------------------
	# Generate Eye Surfaces
	
	# revolve
	pupil_revolve = mc.revolve(eye_crv_detach[0],po=0,rn=0,ut=0,tol=0.01,degree=3,s=8,ulp=1,ax=[0,0,1])
	iris_revolve = mc.revolve(eye_crv_detach[1],po=0,rn=0,ut=0,tol=0.01,degree=3,s=8,ulp=1,ax=[0,0,1])
	sclera_revolve = mc.revolve(eye_crv_detach[2],po=0,rn=0,ut=0,tol=0.01,degree=3,s=8,ulp=1,ax=[0,0,1])
	# rename surfaces
	pupil_revolve[0] = mc.rename(pupil_revolve[0],prefix+'_pl01_srf')
	pupil_revolve[1] = mc.rename(pupil_revolve[1],prefix+'_pl01_rvl')
	iris_revolve[0] = mc.rename(iris_revolve[0],prefix+'_ir01_srf')
	iris_revolve[1] = mc.rename(iris_revolve[1],prefix+'_ir01_rvl')
	sclera_revolve[0] = mc.rename(sclera_revolve[0],prefix+'_sc01_srf')
	sclera_revolve[1] = mc.rename(sclera_revolve[1],prefix+'_sc01_rvl')
	# Connect Revolve Pivot
	mc.connectAttr(eye_sphere[0]+'.t',pupil_revolve[1]+'.pivot',f=1)
	mc.connectAttr(eye_sphere[0]+'.t',iris_revolve[1]+'.pivot',f=1)
	mc.connectAttr(eye_sphere[0]+'.t',sclera_revolve[1]+'.pivot',f=1)
	
	#------------------------
	# Connect Dilate Control
	
	if len(dilate_ctrl):
		
		# Verify Control
		if not mc.objExists(dilate_ctrl):
			raise UserInputError('Object ' + dilate_ctrl + ' does not exist!')
		
		# Check Attributes Exist
		if not mc.objExists(dilate_ctrl+'.iris'):
			mc.addAttr(dilate_ctrl,ln='iris',min=0,max=4,dv=1)
			mc.setAttr(dilate_ctrl+'.iris',k=1)
		if not mc.objExists(dilate_ctrl+'.pupil'):
			mc.addAttr(dilate_ctrl,ln='pupil',min=0,max=1,dv=0.5)
			mc.setAttr(dilate_ctrl+'.pupil',k=1)
		
		# Connect Attributes
		iris_md = mc.createNode('multDoubleLinear',n=prefix+'_irs01_mdl')
		pupil_md = mc.createNode('multDoubleLinear',n=prefix+'_ppl01_mdl')
		mc.connectAttr(dilate_ctrl+'.iris',iris_md+'.input1')
		mc.setAttr(iris_md+'.input2',0.25)
		mc.connectAttr(iris_md+'.output',eye_crv_detach[3]+'.parameter[1]')
		mc.connectAttr(dilate_ctrl+'.pupil',pupil_md+'.input1')
		mc.connectAttr(iris_md+'.output',pupil_md+'.input2')
		mc.connectAttr(pupil_md+'.output',eye_crv_detach[3]+'.parameter[0]')
コード例 #6
0
ファイル: wr.py プロジェクト: adervish/Ring-Builder
def nurbs_ring():
	print "Hello world"
	
	ring_diameter = 19
	ring_height = 3
	ring_thickness = 1
	divit_diameter = 1.5
	divit_depth = .5
	
	cmds.nurbsSquare( d=2, nr=(1, 0, 0), c=(0, 0, ring_diameter/2 + ring_thickness), sl1=ring_thickness, sl2=ring_height, name='ring',  constructionHistory=0 )
	cmds.revolve( 'topring', ax=(0, 1, 0), p=(0, 0, 0) )
	cmds.revolve( 'bottomring', ax=(0, 1, 0), p=(0, 0, 0) )
	cmds.revolve( 'rightring', ax=(0, 1, 0), p=(0, 0, 0) )
	cmds.revolve( 'leftring', ax=(0, 1, 0), p=(0, 0, 0) )
	
	cmds.nurbsSquare( d=2, nr=(1, 0, 0), c=(0, 0, 0), sl2=divit_diameter/2, sl1=divit_depth, name='bit',  constructionHistory=0 )
	cmds.revolve( 'topbit', ax=(0, 0, 1), p=(0, 0, 0) )
	cmds.revolve( 'bottombit', ax=(0, 0, 1), p=(0, 0, 0) )
	cmds.revolve( 'rightbit', ax=(0, 0, 1), p=(0, 0, 0) )
	cmds.revolve( 'leftbit', ax=(0, 0, 1), p=(0, 0, 0) )
コード例 #7
0
def revolve():
    #revolve the first (hopefully only) curve made
    cmds.revolve('curve1', ax=(1, 0, 0), p=(0, 0, 0))