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 DummyObject(obj, doc): dummyObject = obj.GetClone() # Initialize a camera object RemoveTags(dummyObject) dummyObject.SetName("Dummy " + obj.GetName()) # Set name doc.InsertObject(dummyObject) # Insert dummyObject to document MoveToLast(dummyObject, doc) # Move new camera in the object hierarchy pythontag = c4d.BaseTag(c4d.Tpython) # Initialize python tag dummyObject.InsertTag(pythontag) # Insert python tag to object prioritydata = c4d.PriorityData() # Initialize a priority data prioritydata.SetPriorityValue( c4d.PRIORITYVALUE_MODE, c4d.CYCLE_GENERATORS) # Set priority to 'Generators' prioritydata.SetPriorityValue( c4d.PRIORITYVALUE_PRIORITY, 449) # Set priority value to last possible value prioritydata.SetPriorityValue(c4d.PRIORITYVALUE_CAMERADEPENDENT, False) # Set camera dependent to false pythontag[c4d.EXPRESSION_PRIORITY] = prioritydata # Set priority data pythontag[c4d.TPYTHON_FRAME] = True # Set frame dependet to true link1 = CreateUserDataLink(pythontag, "Object", obj) # Create user data link pythontag[c4d.TPYTHON_CODE] = ("import c4d\n" "def main():\n" "\tcam = op[c4d.ID_USERDATA,1]\n" "\tmat = cam.GetMg()\n" "\tobj = op.GetObject()\n" "\tobj.SetMg(mat)") return dummyObject
def new_rig(object): doc.AddUndo(c4d.UNDOTYPE_CHANGE, object) #create a Python tag and attach it to the first joint pythontag = c4d.BaseTag(c4d.Tpython) object.InsertTag(pythontag) doc.AddUndo(c4d.UNDOTYPE_NEW, pythontag) #set the Python code inside the tag pythontag[c4d.TPYTHON_CODE] = pythontagcode priority = c4d.PriorityData() priority.SetPriorityValue(c4d.PRIORITYVALUE_PRIORITY, 1) pythontag[c4d.EXPRESSION_PRIORITY] = priority
def new_rig(obj, cachetype): #create a Python tag and attach it to the selected tag's object pythontag = c4d.BaseTag(c4d.Tpython) #set the Python code inside the tag pythontag[ c4d.TPYTHON_CODE] = copyright + pythontagcode + pythontagcode_dict[ cachetype] #add userdata to the Python tag userdata = c4d.GetCustomDataTypeDefault(c4d.DTYPE_REAL) userdata[c4d.DESC_NAME] = "Frame" pythontag.AddUserData(userdata) pythontag[c4d.ID_USERDATA, 1] = 0.0 #add an animation track to the userdata we just created track = c4d.CTrack( pythontag, c4d.DescID(c4d.DescLevel(c4d.ID_USERDATA, c4d.DTYPE_SUBCONTAINER, 0), c4d.DescLevel(1, c4d.DTYPE_REAL, 0))) pythontag.InsertTrackSorted(track) #get the curve of our new track (we'll attach keyframes to this curve) curve = track.GetCurve() #make some keyframes, setting their time, value and curve key1 = c4d.CKey() key1.SetTime(curve, doc.GetMinTime()) key1.SetValue(curve, doc.GetMinTime().Get() * doc.GetFps()) key1.SetTimeRight(curve, c4d.BaseTime(0.5)) key2 = c4d.CKey() key2.SetTime(curve, doc.GetMaxTime()) key2.SetValue(curve, doc.GetMaxTime().Get() * doc.GetFps()) key2.SetTimeLeft(curve, c4d.BaseTime(-0.5)) #add the keyframes to the curve curve.InsertKey(key1) curve.InsertKey(key2) #set the Python tag's priority priority = c4d.PriorityData() priority.SetPriorityValue(c4d.PRIORITYVALUE_MODE, c4d.CYCLE_GENERATORS) priority.SetPriorityValue(c4d.PRIORITYVALUE_PRIORITY, -1) pythontag[c4d.EXPRESSION_PRIORITY] = priority #add the Python tag to the selected object, and add an undo doc.StartUndo() obj.InsertTag(pythontag) doc.AddUndo(c4d.UNDOTYPE_NEW, pythontag) doc.EndUndo() c4d.EventAdd(c4d.EVENT_FORCEREDRAW) print "Cache retimer successfully added to " + obj.GetName() + "!"
def addConstraint(slaveObj, masterObj, mode="Parent"): 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 slaveObj.InsertTag(constraintTAG)
def constraintObj(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 == "": constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_PSR] = True constraintTAG[10001] = masterObj if mode == "UPVECTOR": constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_UP] = True constraintTAG[40004] = 4 constraintTAG[40005] = 3 constraintTAG[40001] = masterObj 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] = True constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_AIM_MAINTAIN] = True constraintTAG[20004] = 5 constraintTAG[20001] = masterObj if mode == "PARENT": nullSlave = c4d.BaseObject(c4d.Onull) nullSlave.SetName("nullSlave") nullSlave.SetMg(slaveObj.GetMg()) doc.InsertObject(nullSlave) nullParent = c4d.BaseObject(c4d.Onull) nullParent.SetName("nullParent") nullParent.SetMg(masterObj.GetMg()) slaveMg = nullSlave.GetMg() doc.InsertObject(nullParent) nullSlave.InsertUnder(nullParent) nullSlave.SetMg(slaveMg) constraintTAG[c4d.EXPRESSION_ENABLE] = True constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_PARENT_MAINTAIN] = False constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_PARENT_FROZEN] = False constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_PARENT] = True constraintTAG[30001] = masterObj constraintTAG[30009, 1000] = c4d.Vector( nullSlave.GetRelPos()[0], nullSlave.GetRelPos()[1], nullSlave.GetRelPos()[2], ) constraintTAG[30009, 1002] = c4d.Vector( nullSlave.GetRelRot()[0], nullSlave.GetRelRot()[1], nullSlave.GetRelRot()[2], ) PriorityDataInitial = c4d.PriorityData() PriorityDataInitial.SetPriorityValue( c4d.PRIORITYVALUE_MODE, c4d.CYCLE_GENERATORS ) PriorityDataInitial.SetPriorityValue(c4d.PRIORITYVALUE_PRIORITY, 0) PriorityDataInitial.SetPriorityValue( c4d.PRIORITYVALUE_CAMERADEPENDENT, 0 ) constraintTAG[c4d.EXPRESSION_PRIORITY] = PriorityDataInitial try: nullParent.Remove() except: pass slaveObj.InsertTag(constraintTAG) c4d.EventAdd()
def DummyCamera(obj, doc): dummyCamera = c4d.BaseObject(c4d.Ocamera) # Initialize a camera object dummyCamera.SetName("Dummy " + obj.GetName()) # Set name doc.InsertObject(dummyCamera) # Insert dummyCamera to document MoveToLast(dummyCamera, doc) # Move new camera in the object hierarchy pythontag = c4d.BaseTag(c4d.Tpython) # Initialize python tag dummyCamera.InsertTag(pythontag) # Insert python tag to object prioritydata = c4d.PriorityData() # Initialize a priority data prioritydata.SetPriorityValue( c4d.PRIORITYVALUE_MODE, c4d.CYCLE_GENERATORS) # Set priority to 'Generators' prioritydata.SetPriorityValue( c4d.PRIORITYVALUE_PRIORITY, 449) # Set priority value to last possible value prioritydata.SetPriorityValue(c4d.PRIORITYVALUE_CAMERADEPENDENT, False) # Set camera dependent to false pythontag[c4d.EXPRESSION_PRIORITY] = prioritydata # Set priority data pythontag[c4d.TPYTHON_FRAME] = True # Set frame dependet to true link1 = CreateUserDataLink(pythontag, "Object", obj) # Create user data link pythontag[c4d.TPYTHON_CODE] = ( "import c4d\n" "def main():\n" "\tcam = op[c4d.ID_USERDATA,1]\n" "\tmat = cam.GetMg()\n" "\tobj = op.GetObject()\n" "\tobj.SetMg(mat)\n" " \n" "\t# Basic\n" "\tobj[c4d.ID_BASEOBJECT_VISIBILITY_EDITOR] = cam[c4d.ID_BASEOBJECT_VISIBILITY_EDITOR]\n" "\tobj[c4d.ID_BASEOBJECT_VISIBILITY_RENDER] = cam[c4d.ID_BASEOBJECT_VISIBILITY_RENDER]\n" "\tobj[c4d.ID_BASEOBJECT_USECOLOR] = cam[c4d.ID_BASEOBJECT_USECOLOR]\n" "\tobj[c4d.ID_BASEOBJECT_COLOR] = cam[c4d.ID_BASEOBJECT_COLOR]\n" " \n" "\t# Object\n" "\tobj[c4d.CAMERA_PROJECTION] = cam[c4d.CAMERA_PROJECTION]\n" "\tobj[c4d.CAMERA_FOCUS] = cam[c4d.CAMERA_FOCUS]\n" "\tobj[c4d.CAMERAOBJECT_APERTURE] = cam[c4d.CAMERAOBJECT_APERTURE]\n" "\tobj[c4d.CAMERAOBJECT_FOV] = cam[c4d.CAMERAOBJECT_FOV]\n" "\tobj[c4d.CAMERAOBJECT_FOV_VERTICAL] = cam[c4d.CAMERAOBJECT_FOV_VERTICAL]\n" "\tobj[c4d.CAMERAOBJECT_FILM_OFFSET_X] = cam[c4d.CAMERAOBJECT_FILM_OFFSET_X]\n" "\tobj[c4d.CAMERAOBJECT_FILM_OFFSET_Y] = cam[c4d.CAMERAOBJECT_FILM_OFFSET_Y]\n" "\tobj[c4d.CAMERAOBJECT_TARGETDISTANCE] = cam[c4d.CAMERAOBJECT_TARGETDISTANCE]\n" "\tobj[c4d.CAMERAOBJECT_TARGETOBJECT] = cam[c4d.CAMERAOBJECT_TARGETOBJECT]\n" "\tobj[c4d.CAMERAOBJECT_WHITE_BALANCE_TEMPERATURE] = cam[c4d.CAMERAOBJECT_WHITE_BALANCE_TEMPERATURE]\n" "\tobj[c4d.CAMERAOBJECT_WHITE_BALANCE_LIGHTS_ONLY] = cam[c4d.CAMERAOBJECT_WHITE_BALANCE_LIGHTS_ONLY]\n" "\tobj[c4d.CAMERAOBJECT_AFX] = cam[c4d.CAMERAOBJECT_AFX]\n" " \n" "\t# Physical\n" "\tobj[c4d.CAMERAOBJECT_MOVIECAMERA] = cam[c4d.CAMERAOBJECT_MOVIECAMERA]\n" "\tobj[c4d.CAMERAOBJECT_FNUMBER_VALUE] = cam[c4d.CAMERAOBJECT_FNUMBER_VALUE]\n" "\tobj[c4d.CAMERAOBJECT_EXPOSURE] = cam[c4d.CAMERAOBJECT_EXPOSURE]\n" "\tobj[c4d.CAMERAOBJECT_ISO_VALUE] = cam[c4d.CAMERAOBJECT_ISO_VALUE]\n" "\tobj[c4d.CAMERAOBJECT_GAIN_VALUE] = cam[c4d.CAMERAOBJECT_GAIN_VALUE]\n" "\tobj[c4d.CAMERAOBJECT_SHUTTER_SPEED_VALUE] = cam[c4d.CAMERAOBJECT_SHUTTER_SPEED_VALUE]\n" "\tobj[c4d.CAMERAOBJECT_SHUTTER_ANGLE] = cam[c4d.CAMERAOBJECT_SHUTTER_ANGLE]\n" "\tobj[c4d.CAMERAOBJECT_SHUTTER_OFFSET] = cam[c4d.CAMERAOBJECT_SHUTTER_OFFSET]\n" "\tobj[c4d.CAMERAOBJECT_SHUTTER_EFFICIENCY] = cam[c4d.CAMERAOBJECT_SHUTTER_EFFICIENCY]\n" "\tobj[c4d.CAMERAOBJECT_LENS_DISTORTION_QUAD] = cam[c4d.CAMERAOBJECT_LENS_DISTORTION_QUAD]\n" "\tobj[c4d.CAMERAOBJECT_LENS_DISTORTION_CUBIC] = cam[c4d.CAMERAOBJECT_LENS_DISTORTION_CUBIC]\n" "\tobj[c4d.CAMERAOBJECT_VIGNETTING_INTENSITY] = cam[c4d.CAMERAOBJECT_VIGNETTING_INTENSITY]\n" "\tobj[c4d.CAMERAOBJECT_VIGNETTING_OFFSET] = cam[c4d.CAMERAOBJECT_VIGNETTING_OFFSET]\n" "\tobj[c4d.CAMERAOBJECT_CHROMATIC_ABERRATION_STRENGTH] = cam[c4d.CAMERAOBJECT_CHROMATIC_ABERRATION_STRENGTH]\n" "\tobj[c4d.CAMERAOBJECT_APERTURE_SHAPE] = cam[c4d.CAMERAOBJECT_APERTURE_SHAPE]\n" "\tobj[c4d.CAMERAOBJECT_APERTURE_BLADES] = cam[c4d.CAMERAOBJECT_APERTURE_BLADES]\n" "\tobj[c4d.CAMERAOBJECT_APERTURE_ANGLE] = cam[c4d.CAMERAOBJECT_APERTURE_ANGLE]\n" "\tobj[c4d.CAMERAOBJECT_APERTURE_BIAS] = cam[c4d.CAMERAOBJECT_APERTURE_BIAS]\n" "\tobj[c4d.CAMERAOBJECT_APERTURE_ANISOTROPY] = cam[c4d.CAMERAOBJECT_APERTURE_ANISOTROPY]\n" "\tobj[c4d.CAMERAOBJECT_APERTURE_SHADER] = cam[c4d.CAMERAOBJECT_APERTURE_SHADER]\n" " \n" "\t# Details\n" "\tobj[c4d.CAMERAOBJECT_NEAR_CLIPPING_ENABLE] = cam[c4d.CAMERAOBJECT_NEAR_CLIPPING_ENABLE]\n" "\tobj[c4d.CAMERAOBJECT_NEAR_CLIPPING] = cam[c4d.CAMERAOBJECT_NEAR_CLIPPING]\n" "\tobj[c4d.CAMERAOBJECT_FAR_CLIPPING_ENABLE] = cam[c4d.CAMERAOBJECT_FAR_CLIPPING_ENABLE]\n" "\tobj[c4d.CAMERAOBJECT_FAR_CLIPPING] = cam[c4d.CAMERAOBJECT_FAR_CLIPPING]\n" "\tobj[c4d.CAMERAOBJECT_SHOW] = cam[c4d.CAMERAOBJECT_SHOW]\n" "\tobj[c4d.CAMERAOBJECT_FRONTBLUR] = cam[c4d.CAMERAOBJECT_FRONTBLUR]\n" "\tobj[c4d.CAMERAOBJECT_FRONTSTART] = cam[c4d.CAMERAOBJECT_FRONTSTART]\n" "\tobj[c4d.CAMERAOBJECT_FRONTEND] = cam[c4d.CAMERAOBJECT_FRONTEND]\n" "\tobj[c4d.CAMERAOBJECT_REARBLUR] = cam[c4d.CAMERAOBJECT_REARBLUR]\n" "\tobj[c4d.CAMERAOBJECT_REARSTART] = cam[c4d.CAMERAOBJECT_REARSTART]\n" "\tobj[c4d.CAMERAOBJECT_REAREND] = cam[c4d.CAMERAOBJECT_REAREND]\n" " \n" "\t# Composition\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_ENABLE] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_ENABLE]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GRID_ENABLE] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GRID_ENABLE]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_DIAGONAL_ENABLE] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_DIAGONAL_ENABLE]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_TRIANGLES_ENABLE] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_TRIANGLES_ENABLE]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSECTION_ENABLE] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSECTION_ENABLE]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSPIRAL_ENABLE] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSPIRAL_ENABLE]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_CROSSHAIR_ENABLE] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_CROSSHAIR_ENABLE]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GRID_CELLS] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GRID_CELLS]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GRID_COLOR] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GRID_COLOR]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_DIAGONAL_MIRROR] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_DIAGONAL_MIRROR]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_DIAGONAL_COLOR] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_DIAGONAL_COLOR]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_TRIANGLES_MODE] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_TRIANGLES_MODE]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_TRIANGLES_MIRROR] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_TRIANGLES_MIRROR]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_TRIANGLES_FLIP] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_TRIANGLES_FLIP]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_TRIANGLES_COLOR] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_TRIANGLES_COLOR]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSECTION_I] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSECTION_I]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSECTION_TOP] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSECTION_TOP]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSECTION_RIGHT] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSECTION_RIGHT]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSECTION_BOTTOM] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSECTION_BOTTOM]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSECTION_LEFT] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSECTION_LEFT]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSECTION_COLOR] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSECTION_COLOR]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSPIRAL_MIRROR_H] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSPIRAL_MIRROR_H]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSPIRAL_MIRROR_V] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSPIRAL_MIRROR_V]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSPIRAL_FLIP] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSPIRAL_FLIP]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSPIRAL_ALIGN_V] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSPIRAL_ALIGN_V]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSPIRAL_COLOR] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_GOLDENSPIRAL_COLOR]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_CROSSHAIR_SCALE] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_CROSSHAIR_SCALE]\n" "\tobj[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_CROSSHAIR_COLOR] = cam[c4d.CAMERAOBJECT_LAYOUTHELP_DRAW_CROSSHAIR_COLOR]\n" " \n" "\t# Stereoscopic\n" "\tobj[c4d.CAMERAOBJECT_STEREO_MODE] = cam[c4d.CAMERAOBJECT_STEREO_MODE]\n" "\tobj[c4d.CAMERAOBJECT_STEREO_EYESEPARATION] = cam[c4d.CAMERAOBJECT_STEREO_EYESEPARATION]\n" "\tobj[c4d.CAMERAOBJECT_STEREO_PLACEMENT] = cam[c4d.CAMERAOBJECT_STEREO_PLACEMENT]\n" "\tobj[c4d.CAMERAOBJECT_STEREO_SHOW_ALL] = cam[c4d.CAMERAOBJECT_STEREO_SHOW_ALL]\n" "\tobj[c4d.CAMERAOBJECT_STEREO_ZERO_PARALLAX] = cam[c4d.CAMERAOBJECT_STEREO_ZERO_PARALLAX]\n" "\tobj[c4d.CAMERAOBJECT_STEREO_AUTO_PLANES] = cam[c4d.CAMERAOBJECT_STEREO_AUTO_PLANES]\n" "\tobj[c4d.CAMERAOBJECT_STEREO_NEAR_PLANE] = cam[c4d.CAMERAOBJECT_STEREO_NEAR_PLANE]\n" "\tobj[c4d.CAMERAOBJECT_STEREO_FAR_PLANE] = cam[c4d.CAMERAOBJECT_STEREO_FAR_PLANE]\n" "\tobj[c4d.CAMERAOBJECT_STEREO_SHOW_FLOATING_FRAME] = cam[c4d.CAMERAOBJECT_STEREO_SHOW_FLOATING_FRAME]\n" " \n" "\t# Stereoscopic (w Spherical)\n" "\tobj[c4d.CAMERAOBJECT_SPC_STEREO_LAYOUT] = cam[c4d.CAMERAOBJECT_SPC_STEREO_LAYOUT]\n" "\tobj[c4d.CAMERAOBJECT_SPC_STEREO_EYESEPARATION] = cam[c4d.CAMERAOBJECT_SPC_STEREO_EYESEPARATION]\n" "\tobj[c4d.CAMERAOBJECT_SPC_STEREO_NECK_DIST] = cam[c4d.CAMERAOBJECT_SPC_STEREO_NECK_DIST]\n" "\tobj[c4d.CAMERAOBJECT_SPC_STEREO_FOCAL] = cam[c4d.CAMERAOBJECT_SPC_STEREO_FOCAL]\n" "\tobj[c4d.CAMERAOBJECT_SPC_STEREO_N_POLE_MODE] = cam[c4d.CAMERAOBJECT_SPC_STEREO_N_POLE_MODE]\n" "\tobj[c4d.CAMERAOBJECT_SPC_STEREO_N_POLE_ANGLE] = cam[c4d.CAMERAOBJECT_SPC_STEREO_N_POLE_ANGLE]\n" "\tobj[c4d.CAMERAOBJECT_SPC_STEREO_N_POLE_EXP] = cam[c4d.CAMERAOBJECT_SPC_STEREO_N_POLE_EXP]\n" "\tobj[c4d.CAMERAOBJECT_SPC_STEREO_S_POLE_MODE] = cam[c4d.CAMERAOBJECT_SPC_STEREO_S_POLE_MODE]\n" "\tobj[c4d.CAMERAOBJECT_SPC_STEREO_S_POLE_ANGLE] = cam[c4d.CAMERAOBJECT_SPC_STEREO_S_POLE_ANGLE]\n" "\tobj[c4d.CAMERAOBJECT_SPC_STEREO_S_POLE_EXP] = cam[c4d.CAMERAOBJECT_SPC_STEREO_S_POLE_EXP]\n" " \n" "\t# Spherical\n" "\tobj[c4d.CAMERAOBJECT_SPC_ENABLE] = cam[c4d.CAMERAOBJECT_SPC_ENABLE]\n" "\tobj[c4d.CAMERAOBJECT_SPC_GIZMO] = cam[c4d.CAMERAOBJECT_SPC_GIZMO]\n" "\tobj[c4d.CAMERAOBJECT_SPC_PROJECTION_MAPPING] = cam[c4d.CAMERAOBJECT_SPC_PROJECTION_MAPPING]\n" "\tobj[c4d.CAMERAOBJECT_SPC_FIT_FRAME] = cam[c4d.CAMERAOBJECT_SPC_FIT_FRAME]\n" "\tobj[c4d.CAMERAOBJECT_SPC_FULL_RANGE_ENABLE] = cam[c4d.CAMERAOBJECT_SPC_FULL_RANGE_ENABLE]\n" "\tobj[c4d.CAMERAOBJECT_SPC_LONG_MIN] = cam[c4d.CAMERAOBJECT_SPC_LONG_MIN]\n" "\tobj[c4d.CAMERAOBJECT_SPC_LONG_MAX] = cam[c4d.CAMERAOBJECT_SPC_LONG_MAX]\n" "\tobj[c4d.CAMERAOBJECT_SPC_LAT_MIN] = cam[c4d.CAMERAOBJECT_SPC_LAT_MIN]\n" "\tobj[c4d.CAMERAOBJECT_SPC_LAT_MAX] = cam[c4d.CAMERAOBJECT_SPC_LAT_MAX]\n" "\tobj[c4d.CAMERAOBJECT_SPC_DOME_LAT] = cam[c4d.CAMERAOBJECT_SPC_DOME_LAT]" ) # Python tag script return dummyCamera
def DummyObject(obj, doc): dummyObject = MakeEditable(obj) # Get clone from original object RemoveTags(dummyObject) # Remove tags of the object # Clean if dummyObject.GetCTracks() != None: for cTrack in dummyObject.GetCTracks(): cTrack.Remove() # Remove unnecessary tracks ResetPSR(dummyObject) # Reset PSR children = dummyObject.GetChildren() # Remove children for c in children: c.Remove() dummyObject.SetName("Dummy "+obj.GetName()) # Set name doc.InsertObject(dummyObject) # Insert dummyObject to document MoveToLast(dummyObject, doc) # Move new Object in the object hierarchy xpressoTag = c4d.BaseTag(c4d.Texpresso) # Initialize a xpresso tag dummyObject.InsertTag(xpressoTag) prioritydata = c4d.PriorityData() # Initialize a priority data prioritydata.SetPriorityValue(c4d.PRIORITYVALUE_MODE, c4d.CYCLE_GENERATORS) # Set priority to 'Generators' prioritydata.SetPriorityValue(c4d.PRIORITYVALUE_PRIORITY, 449) # Set priority value to last possible value prioritydata.SetPriorityValue(c4d.PRIORITYVALUE_CAMERADEPENDENT, False) # Set Object dependent to false xpressoTag[c4d.EXPRESSION_PRIORITY] = prioritydata # Set priority data link1 = CreateUserDataLink(dummyObject, "Source", obj) # Create user data link link2 = CreateUserDataLink(dummyObject, "Dummy", dummyObject) # Create user data link nodemaster = xpressoTag.GetNodeMaster() # Get node master # Create nodes objectNodeA = nodemaster.CreateNode(nodemaster.GetRoot(), 400001000, None, x=0, y=100) objectNodeB = nodemaster.CreateNode(nodemaster.GetRoot(), 400001000, None, x=300, y=0) pythonNode = nodemaster.CreateNode(nodemaster.GetRoot(), 1022471, None, x=100, y=250) pointNodeA = nodemaster.CreateNode(nodemaster.GetRoot(), 400001112, None, x=300, y=150) pointNodeB = nodemaster.CreateNode(nodemaster.GetRoot(), 400001112, None, x=600, y=150) iterationNode = nodemaster.CreateNode(nodemaster.GetRoot(), 400001131, None, x=350, y=300) # Modify python node pythonNode.RemoveUnusedPorts() # Remove default ports pyInPort = pythonNode.AddPort(c4d.GV_PORT_INPUT, 4013, c4d.GV_PORT_FLAG_IS_VISIBLE) # Add input link port pyInPort.SetName("Input1") # Set port's name pyOutPortA = pythonNode.AddPort(c4d.GV_PORT_OUTPUT, 4012, c4d.GV_PORT_FLAG_IS_VISIBLE) # Add output link port pyOutPortA.SetName("Output1") # Set port's name pyOutPortB = pythonNode.AddPort(c4d.GV_PORT_OUTPUT, 4000, c4d.GV_PORT_FLAG_IS_VISIBLE) # Add output integer port pyOutPortB.SetName("Output2") # Set port's name pythonNode[c4d.GV_PYTHON_CODE] = ("import c4d\n" "def main():\n" "\tglobal Output1\n" "\tglobal Output2\n" "\tif Input1.GetType() not in [5100, 5101]:" "\t\tcache = Input1.GetCache()\n" "\telse:\n" "\t\tcache = Input1\n" "\tpntCnt = len(cache.GetAllPoints())\n" "\tOutput1 = cache\n" "\tOutput2 = int(pntCnt)-1") # Python node's code # Modify object node A objectNodeA[c4d.GV_OBJECT_OBJECT_ID] = dummyObject objPortA = objectNodeA.AddPort(c4d.GV_PORT_OUTPUT, # Add 'user data link' output port to node c4d.DescID(c4d.DescLevel(c4d.ID_USERDATA, c4d.DTYPE_SUBCONTAINER, 0),c4d.DescLevel(1)), message=True) # Modify object node B objectNodeB[c4d.GV_OBJECT_OBJECT_ID] = dummyObject objPortB = objectNodeB.AddPort(c4d.GV_PORT_OUTPUT, # Add 'user data link' output port to node c4d.DescID(c4d.DescLevel(c4d.ID_USERDATA, c4d.DTYPE_SUBCONTAINER, 0),c4d.DescLevel(2)), message=True) # Modify point nodes pointNodeA[c4d.GV_POINT_USE_DEFORMED] = True pointNodeB[c4d.GV_POINT_USE_DEFORMED] = True pointNodeB.AddPort(c4d.GV_PORT_INPUT, 2002, c4d.GV_PORT_FLAG_IS_VISIBLE) # Add input point position port # Connecting ports objPortA.Connect(pyInPort) objPortB.Connect(pointNodeB.GetInPort(0)) pyOutPortA.Connect(pointNodeA.GetInPort(0)) pyOutPortB.Connect(iterationNode.GetInPort(1)) iterationNode.GetOutPort(0).Connect(pointNodeA.GetInPort(1)) iterationNode.GetOutPort(0).Connect(pointNodeB.GetInPort(1)) pointNodeA.GetOutPort(1).Connect(pointNodeB.GetInPort(2)) c4d.modules.graphview.RedrawMaster(nodemaster) # Refresh xpresso return dummyObject