Esempio n. 1
0
def bake_shape_to_vertex_normals(source_obj, dest_obj):
    '''
    Stores blend shape information into the vertex normals between 2 objects.
    Given 2 objects with the same topology, gather all vertex offsets and bake the vector into the vertex normal

    Args:
        source_obj (PyNode): Maya scene object that is the blend shape target
        dest_obj (PyNode): Original maya scene object
    '''
    source_vert_list = [
        Vector(pm.xform(x, q=True, t=True, ws=True)) for x in source_obj.vtx
    ]
    dest_vert_list = [
        Vector(pm.xform(x, q=True, t=True, ws=True)) for x in dest_obj.vtx
    ]

    rgb_vector_list, longest_length = v1_shared.shared_utils.bake_vertex_color_data(
        source_vert_list, dest_vert_list, False)

    for i, vtx in enumerate(dest_obj.vtx):
        r = Vector(list(rgb_vector_list[i])).length3D() / longest_length
        pm.polyColorPerVertex(vtx, rgb=[r, 0, 0])
        pm.polyNormalPerVertex(vtx, xyz=list(rgb_vector_list[i]))

    print(longest_length / 10)

    pm.polyOptions(dest_obj, cs=True)
def border_size(*args):
    """
    Change normal size
    """
    # get value from slider
    border_thick = border_slider.getValue()

    # Show Border edge
    pm.polyOptions(db=True)
    pm.polyOptions(sb=border_thick)
def border_size(*args):
    '''
    Change normal size
    '''
    # get value from slider
    border_thick = border_slider.getValue()

    # Show Border edge
    pm.polyOptions(db=True)
    pm.polyOptions(sb=border_thick)
def disableVertexColorDisplay(**kwargs):

    bOnRefs = kwargs.pop("onReferences", kwargs.pop("onRefs", True))

    if "meshes" not in kwargs:
        sMeshList = lsNodes(sl=True, dag=True, ni=True, type="mesh",
                            not_referencedNodes=not bOnRefs, nodeNames=True)
        if not sMeshList:
            logMsg("No meshes found in selection !" , warning=True)
            return False
    else:
        sMeshList = kwargs.pop("meshes")
        if not sMeshList:
            return False

    pm.polyOptions(sMeshList, colorShadedDisplay=False)

    return True
Esempio n. 5
0
def toggleLighting():
    """Toggle between vertex colors and scene lighting"""

    currentPanel = pm.getPanel( withFocus=True )
    if pm.getPanel( typeOf=currentPanel ) == 'modelPanel':

        displayLights = pm.modelEditor( currentPanel, query=True, displayLights=True )

        if displayLights != 'all':
            pm.polyOptions( cs=0 )
            pm.modelEditor( currentPanel, edit=True, displayLights='all' )
            msg = 'ON (scene lights)'
        else:
            pm.polyOptions( cs=1, cm='ambientDiffuse' )
            pm.modelEditor( currentPanel, edit=True, displayLights='default' )
            pm.modelEditor( currentPanel, edit=True, displayLights='none' )
            msg = 'OFF (vertex colors)'

        return 'Lighting: %s' % msg
Esempio n. 6
0
def uvmp_split_edges_at_UVs(*args, **kwargs):
    '''
    automaticaly split edges wherever there is a uv border
    '''

    sel = pm.ls(sl=True)
    if sel and pm.nodeType(sel[0]) == 'transform':
        polyObject = sel[0]
        pm.polyOptions(displayBorder=True, ao=True, sb=3)

        # get the open border uvs
        pm.select(polyObject.map, replace=True)
        pm.polySelectConstraint(t=0x0010, sh=0, bo=1, m=2)
        pm.polySelectConstraint(sh=0, bo=0, m=0)

        borderUVs = pm.ls(sl=True)
        borderEdges = pm.polyListComponentConversion(borderUVs,
                                                     toEdge=True,
                                                     internal=True)
        borderEdges = pm.filterExpand(borderEdges, sm=32, ex=True)
        for edge in borderEdges:
            if len(pm.PyNode(edge).connectedFaces()) < 2:
                print edge
                borderEdges.remove(edge)
            else:
                edgeUVs = pm.polyListComponentConversion(edge, toUV=True)
                edgeUVs = pm.filterExpand(edgeUVs, sm=35, ex=True)
                if not len(edgeUVs) > 2:
                    borderEdges.remove(edge)

        print borderEdges
        pm.select(borderEdges, replace=True)
        pm.mel.eval('DetachEdgeComponent;')

        pm.delete(sel, constructionHistory=True)
        pm.select(sel, replace=True)
    else:
        lcUtility.Utility.lc_print('Please select an object', mode='warning')
Esempio n. 7
0
	def MEL_b159(self):#Display vertex normals
		size = float(self.ui.t004.text())
		pm.polyOptions (displayNormal=True, point=True, sizeNormal=size)
Esempio n. 8
0
	def MEL_b158(self):#Display face normals
		size = float(self.ui.t004.text())
		pm.polyOptions (displayNormal=True, facet=True, sizeNormal=size)
Esempio n. 9
0
 def toggle_tx_border(self, *args):
     if pm.polyOptions(q=True, displayMapBorder=True)[0]:
         pm.polyOptions(displayMapBorder=False)
     else:
         pm.polyOptions(displayMapBorder=True)