def create_ctrl_null(self): doc = documents.GetActiveDocument() null = c4d.BaseObject(c4d.Onull) # Create new null doc.InsertObject(null) c4d.EventAdd() null.SetName("{0} Morph Controller Group".format(self.skeleton_name)) self.morph_controller = null
def randomNullsColor(self, parentName, randomCol=1, rigColor1=0, rigColor2=0): doc = documents.GetActiveDocument() try: if randomCol == 1: rigColor1 = self.get_random_color() # c4d.Vector(0,2,0) rigColor2 = self.get_random_color() # c4d.Vector(1,0,0) self.IKMobjList = [] parentOb = parentName for o in self.selchildren(parentOb, parentOb.GetNext()): o[c4d.ID_BASEOBJECT_USECOLOR] = 2 o[c4d.ID_BASEOBJECT_COLOR] = rigColor1 if 'HAND' in o.GetName() or \ 'Pelvis' in o.GetName() or \ 'Platform' in o.GetName() or \ 'Head' in o.GetName(): o[c4d.ID_BASEOBJECT_USECOLOR] = 2 # o[c4d.ID_CA_JOINT_OBJECT_ICONCOL] = 1 o[c4d.ID_BASEOBJECT_COLOR] = rigColor2 except: pass c4d.EventAdd()
def addConstraint(self, slave, master, mode="Parent"): doc = documents.GetActiveDocument() slaveObj = doc.SearchObject(slave) masterObj = doc.SearchObject(master) self.removeConstraintTags(slaveObj) if mode == "Parent": constraintTAG = c4d.BaseTag(1019364) constraintTAG[c4d.EXPRESSION_ENABLE] = True constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_PSR_MAINTAIN] = True constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_PSR] = True constraintTAG[10005] = True constraintTAG[10007] = True constraintTAG[10001] = masterObj PriorityDataInitial = c4d.PriorityData() PriorityDataInitial.SetPriorityValue( c4d.PRIORITYVALUE_MODE, c4d.CYCLE_EXPRESSION ) PriorityDataInitial.SetPriorityValue(c4d.PRIORITYVALUE_PRIORITY, 0) PriorityDataInitial.SetPriorityValue(c4d.PRIORITYVALUE_CAMERADEPENDENT, 0) constraintTAG[c4d.EXPRESSION_PRIORITY] = PriorityDataInitial try: slaveObj.InsertTag(constraintTAG) except: print("constr skip") pass
def main(): doc = documents.GetActiveDocument() fileSaver = c4d.BaseObject(c4d.Onull) fileSaver.InsertBefore(doc.GetFirstObject()) fileSaver.SetName("FileSaver") isOutputFbxFile = c4d.GetCustomDataTypeDefault( c4d.DTYPE_BOOL) # Create default container isOutputFbxFile[c4d.DESC_NAME] = "isOutputFbxFile" isOutputFbxFileElement = fileSaver.AddUserData(isOutputFbxFile) fileSaver[isOutputFbxFileElement] = True isSaveOriginFile = c4d.GetCustomDataTypeDefault( c4d.DTYPE_BOOL) # Create default container isSaveOriginFile[c4d.DESC_NAME] = "isSaveOriginFile" isSaveOriginFileElement = fileSaver.AddUserData(isSaveOriginFile) fileSaver[isSaveOriginFileElement] = True saveOutPath = c4d.GetCustomDataTypeDefault( c4d.DTYPE_FILENAME) # Create default container saveOutPath[c4d.DESC_NAME] = "SaveOutPath" fileSaver.AddUserData(saveOutPath) c4d.EventAdd()
def dazRotationsFix( self, jointToFix, jointToAim, oppositeJoint, rotValue=0, allToZero=False ): doc = documents.GetActiveDocument() mainJoint = doc.SearchObject(jointToFix) goalJoint = doc.SearchObject(jointToAim) self.dazRotFix(goalJoint, "AIM", mainJoint, rotValue) jointOposite = doc.SearchObject(oppositeJoint) c4d.DrawViews( c4d.DRAWFLAGS_ONLY_ACTIVE_VIEW | c4d.DRAWFLAGS_NO_THREAD | c4d.DRAWFLAGS_STATICBREAK ) rx = mainJoint[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_X] ry = mainJoint[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_Y] rz = mainJoint[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_Z] jointOposite[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_X] = rx * -1 if allToZero == True: jointOposite[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_Y] = 0 jointOposite[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_Z] = 0 tempNull = doc.SearchObject("TempNull") tempNull.Remove() caca = mainJoint.GetFirstTag() caca.Remove() c4d.EventAdd()
def sceneToZero(self): doc = documents.GetActiveDocument() obj = doc.GetFirstObject() scene = ObjectIterator(obj) baseObjs = [] errorDetected = False for obj in scene: if scene.depth == 0: if obj.GetType() == 5100: baseObjs.append(obj) if obj.GetType() == 1007455: objSub = obj objMesh = obj.GetDown() c4d.CallCommand(100004767, 100004767) # Deselect All objSub.SetBit(c4d.BIT_ACTIVE) c4d.CallCommand(100004773) # Expand Object Group objSub.Remove() c4d.EventAdd() if objMesh: if objMesh.GetType() == 5100: baseObjs.append(objMesh) if len(baseObjs) > 0: if errorDetected == False: getLowestY = self.rasterizeObj(self.sceneLowestYobj()) self.moveAllToZero(baseObjs, getLowestY) c4d.DrawViews( c4d.DRAWFLAGS_ONLY_ACTIVE_VIEW | c4d.DRAWFLAGS_NO_THREAD | c4d.DRAWFLAGS_STATICBREAK ) c4d.EventAdd()
def moveToObj(self, source, target): doc = documents.GetActiveDocument() dazName = get_daz_name() parentGuidesName = dazName + "__IKM-Guides" if doc.SearchObject(parentGuidesName) == None: newNull = c4d.BaseObject(c4d.Onull) newNull.SetName(parentGuidesName) doc.InsertObject(newNull) guidesParent = doc.SearchObject(parentGuidesName) newNull = c4d.BaseObject(c4d.Onull) newNull.SetName(source) doc.InsertObject(newNull) newNull[c4d.NULLOBJECT_DISPLAY] = 11 newNull[c4d.NULLOBJECT_RADIUS] = 1 newNull[c4d.NULLOBJECT_ORIENTATION] = 1 sourceObj = newNull targetObj = doc.SearchObject(target) sourceObj.SetMg(targetObj.GetMg()) mg = sourceObj.GetMg() sourceObj.InsertUnder(guidesParent) sourceObj.SetMg(mg) c4d.EventAdd()
def moveAllToZero(self, baseObjs, posY): c4d.EventAdd() c4d.DrawViews( c4d.DRAWFLAGS_ONLY_ACTIVE_VIEW | c4d.DRAWFLAGS_NO_THREAD | c4d.DRAWFLAGS_STATICBREAK ) c4d.EventAdd() doc = documents.GetActiveDocument() baseObjs = [] obj = doc.GetFirstObject() scene = ObjectIterator(obj) for obj in scene: if obj.GetUp() == None: baseObjs.append(obj) newNull = c4d.BaseObject(c4d.Onull) # Create new cube doc.InsertObject(newNull) newNull[c4d.ID_BASEOBJECT_REL_POSITION, c4d.VECTOR_Y] = posY c4d.EventAdd() for obj in baseObjs: if obj.GetUp() == None: mg = obj.GetMg() obj.InsertUnder(newNull) obj.SetMg(mg) c4d.EventAdd() newNull[c4d.ID_BASEOBJECT_REL_POSITION, c4d.VECTOR_Y] = 0 dzc4d.deselect_all() # Deselect All newNull.SetBit(c4d.BIT_ACTIVE) c4d.CallCommand(100004773, 100004773) # Expand Object Group newNull.Remove() c4d.EventAdd()
def fixConstraint(jointName): doc = documents.GetActiveDocument() obj = doc.SearchObject(jointName) if obj: tag = obj.GetFirstTag() tag[c4d.ID_CA_CONSTRAINT_TAG_PSR_MAINTAIN] = True c4d.EventAdd()
def run(self): doc = documents.GetActiveDocument() doc.StartUndo() sel = doc.GetSelection() if sel is None: return False c4d.StatusSetSpin() timestart = c4d.GeGetMilliSeconds() c4d.StopAllThreads() # loop through all objects for op in sel: print op.GetName() # and do something with op # op.Message(c4d.MSG_UPDATE) c4d.StatusClear() # tell C4D to update internal state c4d.EventAdd() doc.EndUndo() timeend = int(c4d.GeGetMilliSeconds() - timestart) timemsg = u"MakeAwesomeButton: finished in " + str( timeend) + " milliseconds" print(timemsg) return True
def aimObj(slave, master, mode="", searchObj=1): doc = documents.GetActiveDocument() if searchObj == 1: slaveObj = doc.SearchObject(slave) masterObj = doc.SearchObject(master) else: slaveObj = slave masterObj = master mg = slaveObj.GetMg() constraintTAG = c4d.BaseTag(1019364) if mode == "ROTATION": constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_PSR] = True constraintTAG[10005] = False constraintTAG[10006] = False constraintTAG[10001] = masterObj if mode == "AIM": constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_AIM_MAINTAIN] = False constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_AIM] = True constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_AIM_CONSTRAIN_X] = True constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_AIM_CONSTRAIN_Y] = True constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_AIM_CONSTRAIN_Z] = True constraintTAG[20004] = 0 # Axis X- constraintTAG[20001] = masterObj slaveObj.InsertTag(constraintTAG) c4d.EventAdd() c4d.DrawViews( c4d.DRAWFLAGS_ONLY_ACTIVE_VIEW | c4d.DRAWFLAGS_NO_THREAD | c4d.DRAWFLAGS_STATICBREAK ) constraintTAG.Remove()
def addLipsMaterial(self): doc = documents.GetActiveDocument() obj = doc.GetFirstObject() scene = ObjectIterator(obj) objTags = TagIterator(obj) for ob in scene: objTags = TagIterator(ob) if objTags: for tag in objTags: matSel = tag[c4d.TEXTURETAG_RESTRICTION] if matSel == "Lips": try: old_mat = tag[c4d.TEXTURETAG_MATERIAL] doc.SetActiveMaterial(old_mat) c4d.CallCommand(300001022, 300001022) # Copy c4d.CallCommand(300001023, 300001023) # Paste newMat = doc.GetFirstMaterial() newMat[c4d.ID_BASELIST_NAME] = "Lips" tag[c4d.TEXTURETAG_MATERIAL] = newMat except: pass c4d.EventAdd()
def initialDisplaySettings(self): doc = documents.GetActiveDocument() dazName = self.getDazMesh() if dazName: dazName = dazName.GetName().replace(".Shape", "") dazName = dazName + "_" def hideJoint(obj, value): obj[c4d.ID_CA_JOINT_OBJECT_BONE_DISPLAY] = value obj[c4d.ID_CA_JOINT_OBJECT_JOINT_DISPLAY] = value def hideJoints(jName, value): jointParent = doc.SearchObject(dazName + jName) if jointParent: listObjs = ObjectIterator(jointParent) for obj in listObjs: hideJoint(obj, value) objPelvis = doc.SearchObject(dazName + "jPelvis") hideJoint(objPelvis, 0) hideJoints("jSpine", 0) hideJoints("jUpLeg", 0) hideJoints("jUpLeg___R", 0) hideJoints("jHand", 2) # Show hideJoints("jHand___R", 2) # Show c4d.EventAdd()
def lockAllModels(self): doc = documents.GetActiveDocument() obj = doc.GetFirstObject() scene = ObjectIterator(obj) for obj in scene: if (obj.GetType() == 5100) or (obj.GetType() == 1007455): lockLayer = ikmaxUtils().layerSettings(obj, 1, 1)
def parentTo(self, childName, parentName): doc = documents.GetActiveDocument() child = doc.SearchObject(childName) parent = doc.SearchObject(parentName) mg = child.GetMg() child.InsertUnder(parent) child.SetMg(mg)
def getDazMesh(self): doc = documents.GetActiveDocument() obj = doc.SearchObject("hip") if obj: dazRigName = obj.GetUp().GetName() dazMeshObj = doc.SearchObject(dazRigName + ".Shape") return dazMeshObj return None
def get_daz_name(): doc = documents.GetActiveDocument() obj = doc.SearchObject("hip") if obj: dazRigName = obj.GetUp().GetName() dazMeshObj = doc.SearchObject(dazRigName + ".Shape") return dazMeshObj.GetName().replace(".Shape", "") return ""
def check_if_valid(self): """ Checks if Scene Contains Genesis Skeleton. """ doc = documents.GetActiveDocument() obj = doc.SearchObject("hip") if obj: return True
def preAutoIK(self): doc = documents.GetActiveDocument() obj = doc.SearchObject("hip") if obj: doc = documents.GetActiveDocument() if not doc.SearchObject("lThighTwist"): if self.checkIfPosedResetPose(False) == False: forceTpose().dazFix_All_To_T_Pose() if doc.SearchObject("lThighTwist"): if self.checkIfPosedResetPose(False) == False: self.dazManualRotationFixTpose() c4d.DrawViews( c4d.DRAWFLAGS_ONLY_ACTIVE_VIEW | c4d.DRAWFLAGS_NO_THREAD | c4d.DRAWFLAGS_STATICBREAK ) c4d.EventAdd()
def registerTargets(self): doc = documents.GetActiveDocument() allObjects = doc.GetObjects() self.registeredHeadTargetsRotation = [] self.registeredHeadTargetsTranslation = [] self.registeredMarkerTargets = [] self.registeredBlendShapeTargets = [] for i in allObjects: self.testObjectForRegister(i)
def unhideProps(self): doc = documents.GetActiveDocument() obj = doc.SearchObject("hip") ObjectIterator(obj) for o in ObjectIterator(obj): if o.GetType() == 5100 or o.GetType() == 5140: o[c4d.ID_BASEOBJECT_VISIBILITY_EDITOR] = 0 o[c4d.ID_BASEOBJECT_VISIBILITY_RENDER] = 0 c4d.EventAdd()
def main(): # ********************************************************* # SET UP SECTION suffix = "-source.c4d" # last part of source C4D file name # ********************************************************* nFiles = 0 c4d.CallCommand(12305, 12305) # Show Console... c4d.CallCommand(13957) # Clear console currDoc = c4d.documents.GetActiveDocument() rootDir = c4d.storage.LoadDialog(c4d.FILESELECTTYPE_SCENES, "Please choose a folder", c4d.FILESELECT_DIRECTORY) #dirList=os.listdir(path) level1Dirs = getSubdirs(rootDir) for level1Dir in level1Dirs: #print(level1Dir) destPath = os.path.join(rootDir, level1Dir) xFiles = getFiles(destPath) for xFileName in xFiles: xFilePath = os.path.join(rootDir, level1Dir, xFileName) filename, file_extension = os.path.splitext(xFilePath) #print (xFilePath) if xFileName.lower().endswith(suffix): print "Converting file " + str(xFileName) print "" load = documents.LoadFile(xFilePath) if not load: print("File" + str(xFilePath) + " not loaded") newDoc = documents.GetActiveDocument() c4d.CallCommand(12253, 12253) # Render All Materials c4d.CallCommand(12091, 12091) # Gouraud Shading c4d.CallCommand(12149, 12149) # Frame Default c4d.EventAdd() nFiles += 1 #newDoc.SaveDocument() c4d.CallCommand(12098) # Save c4d.documents.KillDocument(newDoc) print "Files refreshed: " + str(nFiles) print " " print "*** Good job! All files have been refreshed. ***"
def main(): # 获取文件路径与文件名 doc = documents.GetActiveDocument() name = doc.GetDocumentName() originPath = doc.GetDocumentPath() originFilePath = os.path.join(originPath, name) originFilePath = os.path.normpath(originFilePath) if doc.SearchObject("FileSaver"): fileSaver = doc.SearchObject("FileSaver") else: print "You need to run 'createSaveOutUserData.py' first" return isOutputFbx = fileSaver[c4d.ID_USERDATA, 1] isSavingOriginFile = fileSaver[c4d.ID_USERDATA, 2] filepath = fileSaver[c4d.ID_USERDATA, 3] if isOutputFbx: if len(filepath) == 0: print "You need to specify the file path" return filepath = os.path.normpath(filepath) filepath = "/".join(filepath.split("\\")[:-1]) # 将文件后缀改为.fbx if name[-3:] != "fbx": if len(name.split(".")) == 1: name = name + ".fbx" else: index = -1 while name[index] != '.': index -= 1 name = name[:(index + 1)] + "fbx" print "convert filetype to .fbx" filepath = os.path.join(filepath, name) filepath = os.path.normpath(filepath) # 导出模型到原文件路径 if documents.SaveDocument(doc, filepath, c4d.SAVEDOCUMENTFLAGS_DONTADDTORECENTLIST, 1026370): print "export document to: " + filepath else: print "export failed" if isSavingOriginFile: if documents.SaveDocument(doc, originFilePath, c4d.SAVEDOCUMENTFLAGS_DONTADDTORECENTLIST, c4d.FORMAT_C4DEXPORT): print "save origin file to: " + originFilePath else: print "save origin file failed" c4d.EventAdd()
def findIK(): """Hard Coded Find of IK Replace with User Data""" doc = documents.GetActiveDocument() obj = doc.GetFirstObject() scene = ObjectIterator(obj) ikfound = 0 for obj in scene: if "Foot_PlatformBase" in obj.GetName(): ikfound = 1 return ikfound
def dazFix_All_To_T_Pose(self): # Genesis2 doc = documents.GetActiveDocument() if doc.SearchObject("lShldr"): self.dazRotationsFix("lShldr", "lForeArm", "rShldr", 1.571) if doc.SearchObject("lForeArm"): self.dazRotationsFix("lForeArm", "lHand", "rForeArm", 1.571) # All Genesis..Maybe... if doc.SearchObject("lFoot"): self.dazRotationsFix("lFoot", "lToe", "rFoot")
def ikGoalsZeroRot(self): def ikZeroRot(jointObj): tag = jointObj.GetFirstTag() goalObj = tag[10001] ry = jointObj[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_Y] tag[10001] = None jointObj[c4d.ID_BASEOBJECT_FROZEN_ROTATION, c4d.VECTOR_Y] = ry jointObj[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_Y] = 0 c4d.EventAdd() c4d.DrawViews( c4d.DRAWFLAGS_ONLY_ACTIVE_VIEW | c4d.DRAWFLAGS_NO_THREAD | c4d.DRAWFLAGS_STATICBREAK ) c4d.EventAdd() goalObj[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_X] = 0 goalObj[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_Y] = 0 goalObj[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_Z] = 0 goalObj[c4d.ID_BASEOBJECT_FROZEN_ROTATION, c4d.VECTOR_X] = 0 goalObj[c4d.ID_BASEOBJECT_FROZEN_ROTATION, c4d.VECTOR_Y] = 0 goalObj[c4d.ID_BASEOBJECT_FROZEN_ROTATION, c4d.VECTOR_Z] = 0 tag[c4d.ID_CA_CONSTRAINT_TAG_PSR_MAINTAIN] = True c4d.EventAdd() tag[10001] = goalObj c4d.EventAdd() c4d.DrawViews( c4d.DRAWFLAGS_ONLY_ACTIVE_VIEW | c4d.DRAWFLAGS_NO_THREAD | c4d.DRAWFLAGS_STATICBREAK ) c4d.EventAdd() doc = documents.GetActiveDocument() dazName = get_daz_name() + "_" jointObj = doc.SearchObject(dazName + "jHand") ikZeroRot(jointObj) jointObj = doc.SearchObject(dazName + "jHand___R") ikZeroRot(jointObj) jointObj = doc.SearchObject(dazName + "jUpLeg.Pole___R") jointObj[c4d.ID_BASEOBJECT_FROZEN_ROTATION, c4d.VECTOR_X] = 0 jointObj = doc.SearchObject(dazName + "jArm.Pole___R") jointObj[c4d.ID_BASEOBJECT_FROZEN_ROTATION, c4d.VECTOR_X] = 0 c4d.EventAdd()
def changeSkinType(self): doc = documents.GetActiveDocument() obj = doc.GetFirstObject() scene = ObjectIterator(obj) baseObjs = [] for obj in scene: if obj.GetType() == 1019363: obj[c4d.ID_CA_SKIN_OBJECT_TYPE] = 1 c4d.EventAdd()
def hideRig(self): doc = documents.GetActiveDocument() obj = doc.SearchObject("hip") dazRig = obj.GetUp() guideNulls = self.iterateObjChilds(dazRig) for obj in guideNulls: obj()[c4d.ID_BASEOBJECT_VISIBILITY_RENDER] = 1 obj()[c4d.ID_BASEOBJECT_VISIBILITY_EDITOR] = 1 dazRig()[c4d.ID_BASEOBJECT_VISIBILITY_RENDER] = 1 dazRig()[c4d.ID_BASEOBJECT_VISIBILITY_EDITOR] = 1 c4d.EventAdd()
def extend3Dline(self, nameA, nameB, actObjName, offset=1): doc = documents.GetActiveDocument() dazName = self.getDazMesh().GetName() meshName = dazName + "_" meshName = meshName.replace(".Shape", "") actObj = doc.SearchObject(meshName + actObjName) Aobj = doc.SearchObject(meshName + nameA) # Direction line Start Bobj = doc.SearchObject(meshName + nameB) # Direction line End targetObj = c4d.BaseObject(c4d.Onull) targetObj.SetName("TARGET") doc.InsertObject(targetObj) targetObjExtend = c4d.BaseObject(c4d.Onull) targetObjExtend.SetName("TARGET_Extend") doc.InsertObject(targetObjExtend) targetObj.SetMg(Aobj.GetMg()) targetObjExtend.InsertUnder(targetObj) constraintTAG = c4d.BaseTag(1019364) constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_AIM] = True constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_AIM_MAINTAIN] = False constraintTAG[20004] = 2 constraintTAG[20001] = Bobj targetObj.InsertTag(constraintTAG) caca = targetObj.GetFirstTag() c4d.DrawViews( c4d.DRAWFLAGS_ONLY_ACTIVE_VIEW | c4d.DRAWFLAGS_NO_THREAD | c4d.DRAWFLAGS_STATICBREAK ) caca.Remove() targetMg = None try: targetObjExtend.SetMg(Bobj.GetMg()) objDistance = targetObjExtend[c4d.ID_BASEOBJECT_REL_POSITION, c4d.VECTOR_Z] targetObj.SetAbsPos(Bobj.GetAbsPos()) targetObjExtend[c4d.ID_BASEOBJECT_REL_POSITION, c4d.VECTOR_Z] = ( objDistance * offset ) targetObjExtend[c4d.NULLOBJECT_DISPLAY] = 9 targetMg = targetObjExtend.GetMg() actObj.SetMg(targetObjExtend.GetMg()) except: print("skip extend") targetObj.Remove() c4d.EventAdd() return targetMg
def getMinY(self, obj): doc = documents.GetActiveDocument() if obj.GetType() == 5100: mg = obj.GetMg() minPos = c4d.Vector(obj.GetPoint(0) * mg).y minId = None for i in range(obj.GetPointCount()): bufferMin = c4d.Vector(obj.GetPoint(i) * mg).y minPos = min(minPos, bufferMin) if minPos == bufferMin: minId = i return minPos