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
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
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')
def MEL_b159(self):#Display vertex normals size = float(self.ui.t004.text()) pm.polyOptions (displayNormal=True, point=True, sizeNormal=size)
def MEL_b158(self):#Display face normals size = float(self.ui.t004.text()) pm.polyOptions (displayNormal=True, facet=True, sizeNormal=size)
def toggle_tx_border(self, *args): if pm.polyOptions(q=True, displayMapBorder=True)[0]: pm.polyOptions(displayMapBorder=False) else: pm.polyOptions(displayMapBorder=True)