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()
def closeEvent(self, event): mxs.WorkingPivot.SetTM(mxs.matrix3(1)) try: mxs.unregisterRedrawViewsCallback(self.debugView) except: pass mxs.redrawViews()
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()
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()
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()
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
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()
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()
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()
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()
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
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()
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()
def SetIKSlidingKey(self): self.SetIK(rt.biped.setSlidingKey) rt.redrawViews()
def SetIKPlantedKey(self): self.SetIK(rt.biped.setPlantedKey) rt.redrawViews()