예제 #1
0
 def SetTcbValue(self, tcb_value_list):
     getKeyIndex = rt.getkeyindex
     getNodeType = rt.classOf
     bipedGetKey = rt.biped.getKey
     boneGetKey = rt.getKey
     isBipedType = self.m_biped_type_name_class.bip_class
     this_time = rt.sliderTime
     getCtrl = rt.getPropertyController
     is_tcb_type = self.m_rotation_tcb_name
     for node in rt.selection:
         if node.name.endswith('Footsteps'):
             continue
         ctrl = node.controller
         if str(getNodeType(node)) == isBipedType:
             if ctrl.rootNode == node:
                 index = getKeyIndex(ctrl.vertical.controller, this_time)
                 self.SetKeyTcb(ctrl.vertical.controller, bipedGetKey,
                                index, tcb_value_list)
                 index = getKeyIndex(ctrl.horizontal.controller, this_time)
                 self.SetKeyTcb(ctrl.horizontal.controller, bipedGetKey,
                                index, tcb_value_list)
                 index = getKeyIndex(ctrl.turning.controller, this_time)
                 self.SetKeyTcb(ctrl.turning.controller, bipedGetKey, index,
                                tcb_value_list)
             else:
                 index = getKeyIndex(ctrl, this_time)
                 self.SetKeyTcb(ctrl, bipedGetKey, index, tcb_value_list)
         else:
             rot_ctrl = getCtrl(node.track, self.m_rotation_name)
             if str(getNodeType(rot_ctrl)) == is_tcb_type:
                 index = getKeyIndex(rot_ctrl, this_time)
                 self.SetKeyTcb(rot_ctrl, boneGetKey, index, tcb_value_list)
     rt.redrawViews()
def create_cylinder():
    """
    Create a cylinder node with predetermined radius and height values.
    """
    rt.Cylinder(radius=10, height=30)
    # force a viewport update for the node to appear
    rt.redrawViews()
예제 #3
0
    def closeEvent(self, event):
        mxs.WorkingPivot.SetTM(mxs.matrix3(1))

        try:
            mxs.unregisterRedrawViewsCallback(self.debugView)
        except:
            pass
        mxs.redrawViews()
예제 #4
0
 def SelectNameSet(self):
     name = self.select_set_list_qcombobox.currentText()
     #print(name)
     rt.clearSelection()
     if not self.IsSelectSetNewName(name):
         set_tiem = rt.selectionSets[name]
         rt.select(set_tiem)
     rt.redrawViews()
예제 #5
0
 def SetKeyTcb(self, ctrl, getKeyType, index, tcb_value_list):
     if index == 0:
         return False
     key = getKeyType(ctrl, index)
     tension, continuity, bias = tcb_value_list
     key.tension = tension
     key.continuity = continuity
     key.bias = bias
     rt.redrawViews()
예제 #6
0
 def selectMode(self, target_node):
     if not rt.IsValidNode(self.m_biped_class.m_com):
         return self.ReStart()
     modifiers = QtWidgets.QApplication.keyboardModifiers()
     if modifiers == QtCore.Qt.ControlModifier:
         rt.selectMore(target_node)
     elif modifiers == QtCore.Qt.AltModifier:
         rt.deselect(target_node)
     else:
         rt.select(target_node)
     rt.redrawViews()
예제 #7
0
 def select(self, name='', index=0):
     node = self.GetNode(name, index)
     result = rt.IsValidNode(node)
     modifiers = QtWidgets.QApplication.keyboardModifiers()
     if node is not None and result:
         if modifiers == QtCore.Qt.ControlModifier:
             rt.selectMore(node)
         elif modifiers == QtCore.Qt.AltModifier:
             rt.deselect(node)
         else:
             rt.select(node)
     rt.redrawViews()
     return result
예제 #8
0
 def SetIK(self, ik_type):
     ''' set seletion nodes ik
     ik_type = Plant, Sliding, Free
     '''
     setIK = ik_type
     getNodeType = rt.classOf
     isBipedType = self.m_biped_type_name_class.bip_class
     for node in rt.selection:
         if node.name.endswith('Footsteps'):
             continue
         if str(getNodeType(node)) == isBipedType:
             setIK(node)
     rt.redrawViews()
예제 #9
0
 def SetKey(self, nodes):
     getNodeType = rt.classOf
     isBipedType = self.m_biped_type_name_class.bip_class
     this_time = rt.currentTime
     biepdAddKey = rt.biped.addNewKey
     boneAddKey = rt.addNewKey
     for node in nodes:
         if node.name.endswith('Footsteps'):
             continue
         ctrl = node.controller
         if str(getNodeType(node)) == isBipedType:
             if ctrl.rootNode == node:
                 biepdAddKey(ctrl.vertical.controller, this_time)
                 biepdAddKey(ctrl.horizontal.controller, this_time)
                 biepdAddKey(ctrl.turning.controller, this_time)
             else:
                 biepdAddKey(ctrl, this_time)
         else:
             boneAddKey(ctrl, this_time)
     rt.redrawViews()
예제 #10
0
    def SetSliderTimeNextKeyFrame(self, node):
        current_time = rt.currentTime
        ctrl = node.controller

        def getNextTime(current_time, key_list):
            getKey = current_time
            for key in key_list:
                if current_time < key:
                    getKey = key
                    break
            return getKey

        if ctrl.rootNode == node:
            key_list = [x.time for x in ctrl.vertical.controller.keys]
            key_list += [x.time for x in ctrl.horizontal.controller.keys]
            key_list += [x.time for x in ctrl.turning.controller.keys]
            rt.sliderTime = getNextTime(current_time, sorted(key_list))
        else:
            key_list = [x.time for x in ctrl.controller.keys]
            rt.sliderTime = getNextTime(current_time, sorted(key_list))
        rt.redrawViews()
예제 #11
0
 def SetIKFreeKey(self):
     self.SetIK(rt.biped.setFreeKey)
     rt.redrawViews()
def create_cylinder():
    """
    Create a cylinder node with predetermined radius and height values.
    """
    rt.Cylinder(radius=10, height=30)
    rt.redrawViews()
예제 #13
0
    def _createThumbnail(self, assetName, selectionOnly=True, viewFit=True):
        # ssResolution = 1000

        thumbPath = os.path.join(self.directory, assetName,
                                 "%s_thumb.jpg" % assetName)
        SSpath = os.path.join(self.directory, assetName,
                              "%s_s.jpg" % assetName)
        WFpath = os.path.join(self.directory, assetName,
                              "%s_w.jpg" % assetName)

        if selectionOnly:
            rt.IsolateSelection.EnterIsolateSelectionMode()
            rt.redrawViews()

        # selection = rt.execute("selection as array")
        selection = self._getSelection(asMaxArray=True)
        rt.clearSelection()

        originalState = rt.viewport.GetRenderLevel()
        oWidth = 1600
        oHeight = 1600

        rt.viewport.SetRenderLevel(rt.Name("smoothhighlights"))
        rt.redrawViews()
        grabShaded = rt.gw.getViewportDib()
        rt.viewport.SetRenderLevel(rt.Name("wireframe"))
        rt.redrawViews()
        grabWire = rt.gw.getViewportDib()
        # rt.redrawViews()

        ratio = float(grabShaded.width) / float(grabShaded.height)

        if ratio < 1.0:
            new_width = oHeight * ratio
            new_height = oHeight
        elif ratio > 1.0:
            new_width = oWidth
            new_height = oWidth / ratio
        else:
            new_width = oWidth
            new_height = oWidth

        resizeFrameShaded = rt.bitmap(new_width,
                                      new_height,
                                      color=rt.color(0, 0, 0))
        rt.copy(grabShaded, resizeFrameShaded)

        resizeFrameWire = rt.bitmap(new_width,
                                    new_height,
                                    color=rt.color(0, 0, 0))
        rt.copy(grabWire, resizeFrameWire)

        ssFrame = rt.bitmap(oWidth, oHeight, color=rt.color(0, 0, 0))
        wfFrame = rt.bitmap(oWidth, oHeight, color=rt.color(0, 0, 0))

        xOffset = (oWidth - resizeFrameShaded.width) / 2
        yOffset = (oHeight - resizeFrameShaded.height) / 2

        rt.pasteBitmap(resizeFrameShaded, ssFrame, rt.point2(0, 0),
                       rt.point2(xOffset, yOffset))
        rt.pasteBitmap(resizeFrameWire, wfFrame, rt.point2(0, 0),
                       rt.point2(xOffset, yOffset))

        # rt.display(ssFrame)
        # rt.display(wfFrame)

        thumbFrame = rt.bitmap(200, 200, color=rt.color(0, 0, 0))
        rt.copy(ssFrame, thumbFrame)

        rt.display(thumbFrame)

        thumbFrame.filename = thumbPath
        rt.save(thumbFrame)
        rt.close(thumbFrame)

        ssFrame.filename = SSpath
        rt.save(ssFrame)
        rt.close(ssFrame)

        wfFrame.filename = WFpath
        rt.save(wfFrame)
        rt.close(wfFrame)

        # switch to original view
        rt.viewport.SetRenderLevel(originalState)

        rt.IsolateSelection.ExitIsolateSelectionMode()
        rt.redrawViews()

        return thumbPath, SSpath, WFpath
예제 #14
0
    def old_recreate(self):
        with pymxs.undo(True):

            if len(self.result) > 0:
                self.newNodes = []
                self.dict = {}
                temp = mxs.Array()
                lastNode = None
                index = 0

                rootNode = mxs.point()
                rootNode.size = 2
                rootNode.showlinks = True
                rootNode.Box = True
                rootNode.cross = False
                rootNode.axistripod = False
                rootNode.centermarker = False
                mxs.join(temp, rootNode)

            def create_constraints(node, nNode):

                # Position
                sub = mxs.getSubAnim(nNode, 3)
                secsub = mxs.getSubAnim(sub, 1)
                secsub.controller = mxs.Position_List()
                posCtrl = mxs.Position_Constraint()
                thirdsub = mxs.getSubAnim(secsub, 2)
                thirdsub.controller = posCtrl
                posConstraintInterface = posCtrl.constraints
                posConstraintInterface.appendTarget(node, 100)

                # Rotation
                sub = mxs.getSubAnim(nNode, 3)
                secsub = mxs.getSubAnim(sub, 2)
                secsub.controller = mxs.rotation_list()
                posCtrl = mxs.Orientation_Constraint()
                thirdsub = mxs.getSubAnim(secsub, 2)
                thirdsub.controller = posCtrl
                posConstraintInterface = posCtrl.constraints
                posConstraintInterface.appendTarget(node, 100)

            for i in self.result:
                # Create new nodes and add them to list and dict
                nNode = mxs.point()
                nNode.showlinks = True
                nNode.size = 2
                nNode.transform = i.transform
                nNode.name = i.name
                nNode.wireColor = i.wireColor
                self.dict[i] = nNode
                self.newNodes.append(i)

                # Create parent connections
                if mxs.isValidNode(i.parent):
                    nNode.parent = self.dict[i.parent]

                else:
                    nNode.parent = rootNode

                # Create Constraints
                create_constraints(i, nNode)

                # final part
                mxs.join(temp, nNode)
                lastNode = nNode
                index += 1

            mxs.select(temp)

        mxs.redrawViews()
예제 #15
0
    def recreate(self):
        defaultSize = 2
        bones = mxs.Array()

        if len(self.result) > 0:
            self.newNodes = []
            self.dict = {}
            temp = mxs.Array()
            lastNode = None
            index = 0

            rootNode = mxs.BoneSys.createBone(mxs.point3(0, 0, 0),
                                              mxs.point3(0, 1, 0),
                                              mxs.point3(0, 1, 0))
            rootNode.transform = mxs.Matrix3(1)
            rootNode.size = 2
            rootNode.name = "rootBone"
            mxs.join(temp, rootNode)

        def new_create_constraints(node, nNode):

            posList = mxs.position_list()  # Create Pos_List
            const = mxs.Position_Constraint()  # Create  Pos_Constraint
            const.appendTarget(nNode, 100)  # Add target to Constraint
            secsub = mxs.setPropertyController(node.controller, "Position",
                                               posList)  # Add PosList to node
            mxs.setPropertyController(secsub, 'Available', const)

            posList = mxs.rotation_list()  # Create Pos_List
            const = mxs.Orientation_Constraint()  # Create  Pos_Constraint
            const.appendTarget(nNode, 100)  # Add target to Constraint
            secsub = mxs.setPropertyController(node.controller, "Rotation",
                                               posList)  # Add PosList to node
            mxs.setPropertyController(secsub, 'Available', const)

        def create_constraints(nNode, node):
            # Position
            posList = mxs.position_list()  # Create Pos_List
            const = mxs.Position_Constraint()  # Create  Pos_Constraint
            const.appendTarget(nNode, 100)  # Add target to Constraint
            secsub = mxs.setPropertyController(node.controller, "Position",
                                               posList)  # Add PosList to node
            mxs.setPropertyController(secsub, 'Available', const)

            # Rotation
            posList = mxs.rotation_list()  # Create Pos_List
            const = mxs.Orientation_Constraint()  # Create  Pos_Constraint
            const.appendTarget(nNode, 100)  # Add target to Constraint
            secsub = mxs.setPropertyController(node.controller, "Rotation",
                                               posList)  # Add PosList to node
            mxs.setPropertyController(secsub, 'Available', const)

        for obj in self.result:
            endPos = mxs.point3(0, 0, 0)

            if obj.children.count > 0:
                endPos = obj.children[0].transform.pos

            else:
                endPos = (mxs.transmatrix(mxs.point3(defaultSize, 0, 0)) *
                          obj.transform).pos

            zPos = (mxs.transmatrix(mxs.point3(0, 0, 1)) * obj.transform).pos
            d = mxs.BoneSys.createBone(obj.transform.pos, endPos, zPos)
            d.transform = obj.transform
            d.name = obj.name
            d.wirecolor = obj.wirecolor
            mxs.join(bones, d)
            self.dict[obj] = d
            self.newNodes.append(obj)

            # Create parent connections
            if mxs.isValidNode(obj.parent):
                d.parent = self.dict[obj.parent]

            else:
                d.parent = rootNode

            create_constraints(obj, d)

        mxs.select(bones)
        mxs.selectmore(rootNode)
        mxs.redrawViews()
예제 #16
0
 def SetIKSlidingKey(self):
     self.SetIK(rt.biped.setSlidingKey)
     rt.redrawViews()
예제 #17
0
 def SetIKPlantedKey(self):
     self.SetIK(rt.biped.setPlantedKey)
     rt.redrawViews()