C4D as Live Presentation Tool


Happy new year, everyone. I’m wanting to use c4d as a live visualization tool to convey some concepts. I want to do it ‘live’ not rendered. I would voice-record while playing a c4d file and record the session using screen recording app. The idea is to use c4d as if it were Flash or Unity. No rendering. The “presentation” wouldn’t be playable outside c4d and that’s ok for this. The new viewport features can make things sexy looking
and live dynamics combined w/xpresso are promising. One of the most essential things for such an endeavor is eluding me: how I can use expresso to control playback. I want to be able to stop/play the timeline with buttons or hotkeys
loop different segments of the timeline… and bounce to specific frames. Programs like Flash, Muse, Director do this kind of thing. I see that the expresso node for ‘Time’ has no inputs
one can operate on the output of time
but not drive the input. I don’t see how I can manipulate the playback in a non-linear fashion. Can anyone point me towards any way to programmatically control the timeline during playback?



This might help you.


This does give me hope! The major elements look to be present: the ability to programmatically set desired start and end frame programmatically for an interactive branch. Looping of segments is there too.

Looks like I may need to wade into Python.


Payable plugins might help or not:



might be others around.

Check this also: https://www.youtube.com/watch?v=jhaQqMcFYRQ



Good stuff, Bullit. Some of this helps w/my goals, but I don’t see any pre-built tools with explicit timeline control. May need to cook it up myself.


There is also https://www.4dpublish.com/ that allow you to put c4d scene in a pdf an allow you to do way more stuff.

Here a script for play beetwen two frames (here set at the timeline range)

import c4d
def main():
    # Backup original time
    originalTime = doc.GetTime()
    # Loop through all frames of active document
    fps = doc.GetFps()
    startFrame = doc.GetMinTime().GetFrame(fps)
    EndFrame = doc.GetMaxTime().GetFrame(fps)
    for frame in xrange(startFrame, EndFrame+1):
        # Set current frame
        time = c4d.BaseTime(frame, fps)
        # Animate document at current frame
        doc.ExecutePasses(None, True, True, True, c4d.BUILDFLAGS_INTERNALRENDERER)
    # Restore to original time
    doc.ExecutePasses(None, True, True, True, c4d.BUILDFLAGS_INTERNALRENDERER)
if __name__=='__main__':


Yes. 4dPublish rocks in a number of ways, including getting interactive content into a PDF. There are options to export specific spans that can be triggered by buttons upon export. I’m just looking for that same kind of timeline control while within c4d. I’ll check out your code here. Huge thanks for this!


Just a quick note about c4d as a presentation tool. As I explore it’s really a testament to progress Maxon has made w/the new core and the addition of viewport AO and reflections. The new media engine certainly factors in as well.

Consider that during runtime (no rendering) you can have the following features:
-Live video playing on any plane
-Doodle on the screen
-Live Animation
-Live Dynamics–including where you can drag objects around and cause live attract/repulse, collisions, etc.
-Animate camera moves, switch cameras

I did some tests where I had simulations playing simultaneously w/video and screen AO/reflections. Playback was outstanding. Yes you do get aliasing and no the AO/ScreenSpace Reflections aren’t perfect. But I think this could be quite useful.


Another tool that is a player in all this is the Interaction Tag. With it you can seamlessly puppet objects and even trigger Python scripts.