Пример #1
0
    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
Пример #2
0
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
Пример #3
0
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
Пример #4
0
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() + "!"
Пример #5
0
        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)
Пример #6
0
        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()
Пример #7
0
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
Пример #8
0
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