My collection of Python scripts for Maxon Cinema 4D (@aturtur). Almost every script is commented to make learning Python scripting in Cinema 4D faster and easier. You can find more of Cinema 4D related stuff on my blog e.g. Python Generators, Python Effectors, custom Xpresso setups and so on.
Latest version: 1.74 (Released 27.05.2023)
Changes in 1.74
- 27.04.2023 Bug fix: AR_MoGraphToNulls
- 25.05.2023 New script: AR_AlignNullToPolygon
- 25.05.2023 New script: AR_CameraFocusToNull
- 25.05.2023 Updated: AR_OpenRenderFolder, support for Variable Tokens
- 25.05.2023 Updated: AR_CycleCameras, support for object selection and Selection object
Changes in 1.73
- 24.05.2023 Bug fix: AR_PyTagKeepOnFloor
- 06.04.2023 New script: AR_MoGraphToNulls
- 03.04.2023 Bug fix: AR_NodeTexToMat
Older changes
- 01.04.2023 New script: AR_F@#kUpNodes (2023 April Fools' Day)
- 28.03.2023 New script: AR_MatOverride
- 03.03.2023 New scripts: AR_StabilizeCamera, AR_AverageLocator, AR_CycleCameras
- 27.02.2023 Updated: AR_ViewportColor, More presets, async GeDialog instead of modal
- 18.02.2023 Updated: AR_Folder, fixed adopt layer bug
- 10.01.2023 New scripts: AR_CameraPlane, AR_ExportUVTex, AR_KeysSetPosX, AR_KeysSetPosY, AR_KeysSetPosZ, AR_KeysSetRotB, AR_KeysSetRotH, AR_KeysSetRotP, AR_KeysSetSclX, AR_KeysSetSclY, AR_KeysSetSclZ
- 20.11.2022 Updated: AR_ExportMat, added progress bar
- 18.11.2022 Updated: AR_BakeCam, AR_BakePLA, AR_BakePSR, progress bar added, parallel processing
- 18.11.2022 Updated: AR_SelectDeepest, AR_SelectDown, AR_SelectNext, AR_SelectPrev, AR_SelectRoot, AR_SelectUp, better support for hotkeys
- 17.11.2022 Updated: AR_ExportC4D, AR_ExportOBJ, progress bar
- 17.11.2022 Updated: AR_Folder, fixed bug when user cancels picking a custom color
- 16.11.2022 Updated: AR_Dot, Added option to change the color
- 15.11.2022 Updated: AR_NodeAdd, fixed AOV port
- 10.11.2022 Updated: AR_BakeCamera and AR_AspectRatioGuide, support for Redshift Camera object (new in C4D 2023.1.0)
- 08.11.2022 Updated: AR_ViewportColor, dialog for presets. AR_RandomColors, option to colorize objects with a gradient
- 02.11.2022 New script: AR_ColorizeLayersWithGradient
- 01.11.2022 New script: AR_ExportMat
- 24.09.2022 Updated: AR_TglEnable, support for Insydium NeXus stuff, fixed script name
- 24.09.2022 Updated: AR_Dot, darker icon
- 16.09.2022 New script: AR_PyTagShowIfActiveCam
- 16.09.2022 Updated: AR_DynaMesh, added support for material
- 16.09.2022 Updated: AR_Folder, added support for Cinema 4D 2023
- 23.08.2022 New script: AR_ViewportColor
- 19.08.2022 Updated: AR_PyTagShowIfActive, added option to choose between "Selected" and " Active"
- 18.08.2022 Updated: AR_TagsSelect, if tag selection -> search and select that tag type
- 18.08.2022 Scripts comeback: AR_RemoveMissingTextureTags, AR_SelectSameColor
- 18.08.2022 Updated: AR_Dot, if object selection, create dot null after every selected object
- 19.05.2022 New script: AR_NodeTexToMat
- 06.05.2022 Updated: AR_NodeAdd, added Change Range node
- 03.05.2022 New script: AR_AbsRenderPaths
- 03.05.2022 Bug fix: AR_AspectRatioGuide
- 02.05.2022 Updated: AR_AspectRatioGuide
- 02.05.2022 Major bug fix: AR_OpenRenderFolder
- 02.05.2022 New scripts: AR_Dot, AR_PyTagShowGivenFrames
- 29.04.2022 New scripts: AR_KeysAlign, AR_KeysValueAdd, AR_KeysValueSub, AR_NodeResize
- 29.04.2022 Updated: AR_KeysMoveL, AR_KeysMoveL (saves custom step and sets it as default value), AR_BakePLA
- 26.04.2022 New script: AR_OpenProjectFolder
- 26.04.2022 Bug fixes: AR_TracksRemap, AR_OpenRenderFolder
- 25.04.2022 Minor fix: AR_OpenBugReportsFolder
- 25.04.2022 New scripts: AR_DeleteARPrefs, AR_SortABC, AR_SortRandom
- 22.04.2022 New script: AR_PyTagShowIfCorrectCam
- 21.04.2022 New scripts: AR_FlipIt, AR_PyTagAlignToSpline
- 20.04.2022 New script: AR_DynaMesh (requires C4D 26)
- 15.04.2022 Initial version of AR_Scripts for R25
In this section I go through how you install AR_Scripts to Cinema 4D. These scripts are written for Maxon Cinema 4D 2023.1.0 and Python 3.9.1. Scripts are tested using Microsoft Windows 11. All of the scripts should be compatible also with Mac OS. I'm not writing scripts anymore for older Cinema 4D versions.
Use these scripts with your own risk!
Download this repo and put AR_Scripts_#.##_R25 folder to following path:
C:\Users\<USER>\AppData\Roaming\MAXON\Maxon Cinema 4D RXX\library\scripts
/Applications/MAXON/CINEMA 4D RXX/library/scripts
Other way to find folder for installing scripts is to opening C4D and opening preferences (Ctrl+E / Cmd+E) and pressing 'Open Preferences Folder...' -button and navigating to library > scripts.
Some of the scripts will make a txt-files in the aturtur folder under the C4D's prefs folder to save the previous settings of the script.
C:\Users\<USER>\AppData\Roaming\MAXON\Maxon Cinema 4D RXX\prefs\aturtur
If/when you want to uninstall AR_Scripts completely, remove that folder too.
When you have installed AR_Scripts you have to reboot Cinema 4D if it is already running. On start up Cinema 4D will scan and load all of the scripts. Scripts are located under Extensions -> User Scripts -> AR_Scripts_#.##_R25. Scripts can be used with the commander (Shift+C) too.
You run the script by clicking it. Some of the scripts have multiple functions and you can use those with key modifiers (Alt / Ctrl / Shift) and different combinations. Some of the scripts requires a certain item selection or mode to be active. If you don't know what the script does you can either open the script in the script editor and read the description or search the info of the specific script on this page.
Default: Bakes selected camera(s) to world space.
Shift: Keeps render engine tags if any.
Default: Bakes object to Point Level Animation (PLA).
To bake spline object correctly, bake them first to alembic and then use this script to bake the alembic file to PLA spline object.
It's important that 'Intermediate Points' is set to 'Uniform'! The script does not support that the point number is changing over time.
Default: Bakes selected object(s) to PSR animation in the world space.
Shift: Bakes selected object(s) to PSR animation in the local space.
Default: Distributes selected keyframes evenly.
Shift: Distributes selected keyframes by given step (in frames).
Requires at least three (3) selected keyframes to correctly function. Use in dope sheet editor, does not work in f-curve editor.
Default: Aligns selected keyframes to the closest whole frame.
Use in dope sheet editor, does not work in f-curve editor.
Default: Move selected keyframe(s) to the left.
Shift: Set custom value as default (shared with AR_KeysMoveR).
Ctrl: Move selected keyframe(s) by the set value multiplied by 2 to the left.
Use in dope sheet editor, does not work in f-curve editor.
Default: Move selected keyframe(s) to the right.
Shift: Set custom value as default (shared with AR_KeysMoveL).
Ctrl: Move selected keyframe(s) by the set value multiplied by 2 to the right.
Use in dope sheet editor, does not work in f-curve editor.
Default: Scripts to set individually position, scale or rotation keyframe for wanted axis for selected object(s).
Default: Increases selected keyframe(s) value.
Shift: Set custom value as default (shared with AR_KeysValueSub).
Ctrl: Increases selected keyframe(s) value times 2.
Use in dope sheet editor, does not work in f-curve editor.
Default: Decreases selected keyframe(s) value.
Shift: Set custom value as default (shared with AR_KeysValueAdd).
Ctrl: Decreases selected keyframe(s) value times 2.
Use in dope sheet editor, does not work in f-curve editor.
Adds special track: Time for selected track(s) for time remapping.
Default: Time track is set to absolute.
Shift: time track is set to relative.
Use in dope sheet editor, does not work in f-curve editor.
Default: Sequences selected animation tracks.
Shift: Sequences selected animation tracks with a given gap (in frames).
Ctrl: Sequencing is reversed.
Shift+Ctrl: Reversed sequencing with a given gap.
Requires at least two (2) selected tracks to correctly function. Use in dope sheet editor, does not work in f-curve editor.
Default: Creates an aspect ratio guide for selected camera(s).
Requires at least one (1) selected camera object to correctly function.
Default: Creates Focus Distance object for selected camera(s).
Shift: Assigns also target tag to camera.
Default: Creates plane object that matches selected camera(s) field of view. Positioned to cameras focal point in Z-axis.
Supports perspective and parallel projections.
Default: Crops the canvas to Interactive Render Region.
Changes active render settings resolution and selected/active camera's sensor size (film gate) and possibly also film offsets.
Default: Cycles through available cameras.
Shift: Cycles cameras backwards.
Default: Resizes the canvas without changing the perspective.
Changes active render settings resolution and selected/active camera's sensor size or focal length and possibly also film offsets.
Default: Selects the active camera in the object manager.
Default: Stabilizes active camera view to selected object.
Designed to use with AR_AverageLocator.
Default: Exports selected spline objects to Adobe Illustrator-sequence.
Shift: Export selected spline objects to separated folders (separated sequences).
Preview range will determine the frame range that will be exported.
Default: Exports top level objects individually to C4D-file. Supports object selection.
Default: Exports selected material(s) to own file(s).
Note: Material names should NOT end with dot and number! Eg. "MyMaterial.1" rename that to "MyMaterial_1" or something different. Currently the script does not copy textures to the export location, use global paths!
Default: Exports top level objects individually to OBJ-file. Supports object selection.
Default: Exports UV texture for selected object.
Note: Uses colors from Bodypaint. Set these first!
Default: Creates a camera from fSpy JSON-file and Background object from a Image-file.
Default: Imports an image folder into materials.
Shift: Generates also plane objects for each material with correct proportion of the image.
Default: Merges OBJ-files from selected folder into the active document.
Default: Creates materials from Pixeur color palette file.
Default: Imports PSD-file's layers into separate materials.
Shift: Generates also plane-objects for each layer.
Default: Imports sound-file and places it to the current time.
Default: Consolidates different polygon selections together that uses same materials.
Note: Messes up material projections! Select object(s) and run the script.
Default: Overrides selected materials with the top of the list selected material.
Default: Merges materials that has the same name.
Case sensitive. Supports Cinema 4D's naming conventions. The first material in the material manager overrides the other ones (with the same name).
Default: Creates own materials for every object from existing materials. Supports object selection.
Default: Puts material to object if they have a same name.
Default: Creates a null object(s) which is aligned to selected polygon(s).
Default: Sets object's axis to world origin.
Currently does not support objects with exposed normal tags.
Default: Splits selected objects in half.
Default: Places the object on the floor.
Default: Remeshes selected object with ZRemesher.
Shift: Dialog to set different options. Options will be saved.
Note: Requires Cinema 4D S26 or newer!
Default: Flips selected object(s) (multiplies specific axis by -1).
Shift: Dialog to set different options, like space, which axis to flip and make a copy of the original object. Options will be saved.
Default: Creates a guide object from two selected objects, points or edge.
Default: Creates null(s) from selected point(s) that can control the original geometry.
Default: If point selection: Creates null(s) with constraint tag(s) (clamp) from selected point(s).
Default: If object selection: Creates null(s) with constraint tag(s) (PSR) from selected object(s).
Default: Replaces objects with instance of the first selected object.
Shift: Replace objects with instances of the last selected object.
Ctrl: Replace objects with copies of the first selected object.
Shift+Ctrl: Replace objects with copies of the last selected object.
Default: Converts selected object(s) to splines.
Shift: Keep the original object(s).
Creates null to current axis matrix.
Default: Selects the new null object and deselects the old selection.
Shift: Does not change the current selection.
Default: Creates a point cloud (polygon object with only points) from selected objects' positions.
Default: Splits the object into pieces by polygon selection tag(s).
Default: Swaps selected objects between each other (transformation).
Shift: Generates a dialog where you can pick specifically what properties to swap.
Ctrl: Swaps selected objects only in the object manager.
Requires just two (2) selected objects.
Default: Creates a vertex map tag for selected object(s).
Shift: Creates also linear falloff field to control the vertex map.
Default: Inverts selected Vertex Map tag's data.
Default: Selects MoGraph Effector(s) that use(s) selected Field object. Selects MoGraph Effector(s) that are used in selected Generator object.
Does not support subfields or tags!
Default: Selects MoGraph generator(s) that use(s) selected effector. Prints info also to console.
Default: Creates MoGraph to nulls setup.
Shift: User input for custom index.
Default: Creates MoGraph selection for every clone.
Shift: Shared tag for given IDs.
Ctrl: Individual tags for given IDs.
Default: Merges selected MoGraph Selection Tags into one tag.
Note: If you have nested MoGraph Generators, disable parent generators before running this script.
Default: Messes position of selected nodes (2023 April Fools' Day).
Works only with Redshift. Make sure the Redshift material is selected when using the script!
Default: Adds node between selected nodes.
Works only with Redshift. Make sure the Redshift material is selected when using the script!
Aligns selected graph nodes horizontally.
Default: The leftmost node rules. Pivot is in the middle.
Shift: The leftmost node rules. Pivot is in the top.
Ctrl: The leftmost node rules. Pivot is in the bottom.
Alt: The rightmost node rules. Pivot is in the middle.
Alt+Shift: The rightmost node rules. Pivot is in the top.
Alt+Ctrl: The rightmost node rules. Pivot is in the bottom.
Supports Xpresso and Redshift.
Notice: Make sure the Xpresso tag or the Redshift material is selected when using the script!
Aligns selected graph nodes vertically.
Default: The topmost node rules. Pivot is in the middle.
Shift: The topmost node rules. Pivot is in the left.
Ctrl: The topmost node rules. Pivot is in the right.
Alt: The lowest node rules. Pivot is in the middle.
Alt+Shift: The lowest node rules. Pivot is in the left.
Alt+Ctrl: The lowest node rules. Pivot is in the right.
Supports Xpresso and Redshift.
Notice: Make sure the Xpresso tag or the Redshift material is selected when using the script!
Default: Connects two selected nodes, if possible. Starting from the top.
Shift: Custom input to connect OUT and IN port.
Ctrl: Connects two selected nodes, if possible. Starting from the bottom.
Supports Xpresso and Redshift.
Notice: Make sure the Xpresso tag or the Redshift material is selected when using the script!
Default: Disconnect all connection(s) of selected node or connection(s) between selected nodes.
Supports Xpresso and Redshift.
Notice: Make sure the Xpresso tag or the Redshift material is selected when using the script!
Default: Distributes selected nodes horizontally.
Supports Xpresso and Redshift.
Notice: Make sure the Xpresso tag or the Redshift material is selected when using the script!
Default: Distributes selected nodes vertically.
Supports Xpresso and Redshift.
Notice: Make sure the Xpresso tag or the Redshift material is selected when using the script!
Default: Lines up selected graph nodes horizontally.
Shift: Lines up selected graph nodes horizontally with a custom gap.
Alt: Reversed direction.
Shift+Alt: Reversed direction with a custom gap.
Supports Xpresso and Redshift.
Notice: Make sure the Xpresso tag or the Redshift material is selected when using the script!
Default: Lines up selected graph nodes vertically.
Shift: Lines up selected graph nodes vartically with a custom gap.
Alt: Reversed direction.
Shift+Alt: Reversed direction with a custom gap.
Supports Xpresso and Redshift.
Notice: Make sure the Xpresso tag or the Redshift material is selected when using the script!
Default: Resizes selected nodes by given width and height values.
Supports Xpresso and Redshift.
Notice: Make sure the Xpresso tag or the Redshift material is selected when using the script!
Default: Creates individual scale, offset and rotate control nodes for Redshift texture and triplanar nodes.
Shift: Add only scale controller.
Ctrl: Add only offset controller.
Alt: Add only rotation controller.
Works only with Redshift.
Notice: Make sure the Redshift material is selected when using the script!
Default: Creates material node from selected texture nodes or connects selected texture nodes to selected materials.
Shift: Change settings.
Works only with Redshift.
Notice: Make sure the Redshift material is selected when using the script!
Creates a copy from object to the rest of the selected objects.
Default: Copy the first selected object.
Shift: Copy the last selected object.
Ctrl: Instance the first selected object.
Shift+Ctrl: Instance the last selected object.
Default: Selects the source object.
Supports Instance, Connect, MoInstance, MoSpline, Cloner and Matrix objects.
Default: Merges selection tags.
Supports object and tag selections.
Default: Gives a random display color to selected object(s).
Shift: Gives a random grayscale display color to selected object(s).
Ctrl: Colorize objects randomly based on a custom gradient.
Alt: Reset color.
Default: Removes empty selection tags from selected object(s) or from all objects if no selection.
Default: Removes missing texture tags. If selection, removes only from selected objects.
Default: Selects objects by visibility.
Default: Select children of selected object(s).
Shift: Keeps original selection.
Ctrl: Select children from custom level.
Alt: Select siblings from given level (ignore their children).
Default: Selects the object's cousins.
Ctrl: Selects the object's cousins and deselects the original selection.
Default: Select children of selected object(s) that are the most deep in hierarchy.
Shift: Keep the original selection.
Default: Goes down one hierarchy level.
Shift: Keeps the old selection.
Default: Selects the next object.
Shift: Keeps the old selection.
Default: Selects every even object.
Shift: Selects every odd object.
Ctrl: Selects every nth object.
Alt: Selects every nth object inverted.
Shift+Ctrl: Keep random n.
Default: Selects the previous object.
Shift: Keeps the old selection.
Default: Selects the root object of the object.
Shift: Keeps the old selection.
Default: Selects objects that has same display color as the selected object.
Default: Selects the object's siblings.
Ctrl: Selects the object's siblings and deselects the original selection.
Default: Selects the parent object.
Shift: Keeps the old selection.
Default: Sorts selected objects order alphabetically (descending) in the object manager.
Shift: Sorts selected objects order alphabetically (ascending) in the object manager.
Note: Objects has to be in the same level in the object manager.
Default: Randomizes selected objects order in the object manager.
Note: Objects has to be in the same level in the object manager.
Default: Clone selected tag(s) to selected object(s).
Default: Clones specific tags from first selected hierarchy to second selected hierarchy.
Hierarcies has to be indetical!
Default: Removes selected tag type from selected objects. If no object selection. Selected tag type will be removed from all objects.
Default: Selects tag(s) of selected object(s). If only tags selected, selects that type of tags from other objects. You can also restrict the tag search with object selection.
Shifts selected tag(s).
Default: Shifts selected tag(s) to the right.
Shift: Shifts selected tag(s) to the left.
Default: Adds a custom python tag for selected object(s) that works like C4D's Align To Spline tag but this one works also with deformed spline.
Default: Adds a custom python tag for selected object(s) that keeps the object on the floor.
Default: Adds a custom python tag for selected object(s) that toggles object's visibility by given frames.
There's some variables you can use: start and end for global start and end frames, prevstart and prevend for preview range start end end frames.
Set frame range with dash (-) and separate different frames and ranges with a comma (,).
Default: Adds a custom python tag for selected object(s) that shows the object only if it is active.
Default: Adds a custom python tag for selected object(s) that shows and hides camera if it is active or not.
Default: Adds a custom python tag for selected object(s) that shows and hides object based on assigned camera.
Default: Adds a custom python tag for selected object(s) that shows the object only when it is animated.
Default: Creates a null object which position is average of selected objects/points.
Extracts 2D tracks from selected motion tracker to null objects.
Default: Extracts only manual tracks.
Shift: Extracts only auto tracks.
Default: Converts relative render paths to absolute paths.
For example: Cinema 4D's native Render Queue does not work with relative render paths, so this scripts helps to convert render paths.
Default: Colorizes selected layers with custom gradient.
Default: Deletes aturtur folder inside prefs folder, where some of scripts saves user's custom settings.
Shift: Opens the folder location.
Default: Creates a dark null that has no name.
Default: Creates a folder null that keeps your project nice and tidy.
Default: Opens the bug reports folder.
Default: Opens the folder where the project file is saved.
Default: Opens the folder where the project is rendered.
The folder must exist already! Does not support all of the tokens!
Default: Prints info about selected objects, tags, materials, Xpresso nodes and Redshift nodes.
Default: Toggle selected generator object (enable / disable).
Shift: Toggle next found parent generator object from the default list.
Ctrl: Toggle the root generator object.
Alt: Toggle all parent generators from common list.
Alt+Shift: Force disable.
Alt+Ctrl: Force enable.
Shift+Ctrl: Toggle from custom list.
Alt+Ctrl+Shift: Open textfile to modify custom. You can use hashtag '#' separating comments. Put each generator to separate line!
Highly recommended to assign this script to a keyboard shortcut!
Default: Creates a viewport for animation reference.
Shift: Create only background.
Ctrl: Delete existing setup.
The script requires and enables 'Full Animation Redraw' in Preferences/View.
Default: Toggle opacity of safeframes in viewport.
Shift: Set a custom value and color.
Note: The color pickers in modal dialogs are currently broken in C4D R25, hopefully Maxon will fix this bug someday...
Default: Toggle ground grid visibility in the active viewport.
Shift: Toggle in all viewports.
Default: Opens a dialog where you can select a preset to change viewport color. Alt+Ctrl+Shift: Open textfile to modify custom. Use hashtag '#' separating preset name. Put each color code to separate line!
More information here: Shelf tool script for Cinema 4D Version: 1.0.4 Latest update: Alt+Ctrl+Shift keymodifier opens the asset document (for modification purpose)
If you find these scripts useful, consider to supporting the project and keeping it up and running: Tip jar.
If you have any script ideas, you can DM me at Twitter.