Updated
This commit is contained in:
47
Scripts/Modeling/Edit/LDMT/ldmt_fixReverse.py
Normal file
47
Scripts/Modeling/Edit/LDMT/ldmt_fixReverse.py
Normal file
@ -0,0 +1,47 @@
|
||||
import maya.cmds as cmds
|
||||
|
||||
def fixReverse():
|
||||
cmds.undoInfo(ock = 1)
|
||||
sel = cmds.ls(sl=1)
|
||||
selAll = cmds.filterExpand(sel,sm=12)
|
||||
if selAll == None:
|
||||
cmds.warning("Nothing Selected!")
|
||||
return
|
||||
for sel_child in selAll:
|
||||
cmds.select(sel_child)
|
||||
fixReverseDo(sel_child)
|
||||
cmds.select(sel,r=1)
|
||||
cmds.undoInfo(cck = 1)
|
||||
|
||||
def dotProduct(vecA,vecB):
|
||||
return vecA[0]*vecB[0] + vecA[1]*vecB[1] + vecA[2]*vecB[2]
|
||||
|
||||
def fixReverseDo(sel_child):
|
||||
selShape = sel_child
|
||||
if len(selShape) == 0:
|
||||
print("Nothing Selected!")
|
||||
else:
|
||||
node_CPOM = cmds.createNode('closestPointOnMesh')
|
||||
selShape_worldMesh = selShape + '.worldMesh[0]'
|
||||
selShape_worldMatrix = selShape + '.worldMatrix[0]'
|
||||
node_CPOM_inMesh = node_CPOM + '.inMesh'
|
||||
node_CPOM_inPosition = node_CPOM + '.inPosition'
|
||||
node_CPOM_inputMatrix = node_CPOM + ".inputMatrix"
|
||||
node_CPOM_result_normal = node_CPOM + ".result.normal"
|
||||
node_CPOM_outPosition = node_CPOM + ".position"
|
||||
persp_translate = "persp.translate"
|
||||
|
||||
cmds.connectAttr(selShape_worldMesh, node_CPOM_inMesh ,force=1)
|
||||
cmds.connectAttr(persp_translate, node_CPOM_inPosition ,force=1)
|
||||
cmds.connectAttr(selShape_worldMatrix, node_CPOM_inputMatrix ,force=1)
|
||||
|
||||
vec_persp_pos = cmds.getAttr(persp_translate)
|
||||
vec_closestPoint_pos = cmds.getAttr(node_CPOM_outPosition)
|
||||
vec_closestPoint_normal = cmds.getAttr(node_CPOM_result_normal)
|
||||
vec_persp_closestPoint = [vec_persp_pos[0][0] - vec_closestPoint_pos[0][0],
|
||||
vec_persp_pos[0][1] - vec_closestPoint_pos[0][1],
|
||||
vec_persp_pos[0][2] - vec_closestPoint_pos[0][2]]
|
||||
dotProductResult = dotProduct(vec_persp_closestPoint,vec_closestPoint_normal[0])
|
||||
if dotProductResult<0:
|
||||
cmds.polyNormal(selShape,normalMode=0,userNormalMode=1,ch=1)
|
||||
cmds.delete(node_CPOM)
|
Reference in New Issue
Block a user