Skip to content

Instantly share code, notes, and snippets.

@redglasses67
Last active March 3, 2024 18:19
Show Gist options
  • Save redglasses67/8ba1ce2d6b10d2762dc64c1cbbd3cea1 to your computer and use it in GitHub Desktop.
Save redglasses67/8ba1ce2d6b10d2762dc64c1cbbd3cea1 to your computer and use it in GitHub Desktop.
Maya で float 値をビューポート上に注釈として表示する
import maya.cmds as mc
import maya.mel as mel
def displayFloatAttrAnnotation(offsetY=0):
selList = mc.ls(sl=True)
if len(selList) == 0:
mc.warning("Please select any object...")
return
channelBox = mel.eval('global string $gChannelBoxName; $temp=$gChannelBoxName;')
selAttrList = mc.channelBox(channelBox, q=True, selectedMainAttributes=True)
if selAttrList is None:
mc.warning("Please select any attribute in ChannelBox.")
return
selObj = selList[0]
selAttr = selAttrList[0]
displayAttrName = "{}_{}".format(selObj, selAttr)
defaultFloatAttrAnnName = "FloatAttrAnnotationNode"
floatAttrAnnName = "{}_{}".format(defaultFloatAttrAnnName, displayAttrName)
oldFloatAttrAnn = mc.ls("*{}*".format(floatAttrAnnName))
if len(oldFloatAttrAnn) > 0:
mc.delete(oldFloatAttrAnn)
pt = mc.particle(name=floatAttrAnnName, position=[0, 0, 0], conserve=True)
ptShape = pt[1]
mc.setAttr("{}.particleRenderType".format(ptShape), 2)
mc.addAttr(ptShape, longName=displayAttrName, attributeType="float", keyable=True)
mel.eval('addAttr -is true -ln "pointSize" -at long -min 1 -max 60 -dv 2 {};'.format(ptShape))
mel.eval('addAttr -is true -ln "selectedOnly" -at bool -dv false {};'.format(ptShape))
mel.eval('addAttr -is true -dt "string" -ln "attributeName" {};'.format(ptShape))
mc.setAttr("{}.attributeName".format(ptShape), displayAttrName, type="string")
mc.connectAttr("{}.{}".format(selObj, selAttr), "{}.{}".format(ptShape, displayAttrName), force=True)
mc.pointConstraint(selObj, floatAttrAnnName, offset=[0, offsetY, 0])
#displayFloatAttrAnnotation()
displayFloatAttrAnnotation(0.5)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment