Fulldome production and linear storytelling

Hello dear vvvv community,

I am participating in the Full Dome Production Masterclass from the NODE Institute, and now I’m entering the uncharted territory of linear storytelling and pre-rendered content. The final output will be a 2-minute pre-rendered video (4096x4096, 30 fps).

What I have so far is a 3D to FishEye projection pipeline (based on the Cubemap to Equirectangular pipeline in VL.Fuse) and a core visual idea that needs to be transformed into a short AV composition.

As I move into the compositing phase, I’d appreciate your advice on linear production workflow in vvvv.

What would be the recommended approach for pre-rendered content? From my understanding, two approaches exist:

1. Real-time rendering

If the patch runs at a stable 30 fps, there’s no need to wait for frames to complete, so any real-time recording approach works in this case.

2. Non-real-time rendering

According to the Gray Book, a combination of a per-frame texture writer and an incremental MainLoop guarantees the sequence of frames, regardless of how long each frame takes to render. The timing of all clock-dependent nodes is also correctly advanced, which is beneficial.

Is it possible to achieve the same incremental frame-by-frame approach while using VL.ScreenRecorder for video output instead of individual texture files?

UPD: I ran some quick real-time tests, and it appears the real-time approach won’t work in my case (at least on my machine). I was only able to record 2048x2048 video with few noticeable jitters, while FPS remained stable during recording.


Timeline-based parameter control:

What is your approach to timeline-based parameter control in vvvv? I know there are timeline-specific tools like VL.Kairos and VL.Interpolators.Addons designed for this purpose, but it’s hard to understand the differences between them at first glance.

Audio synchronization:

Also, I’m currently unclear on how to synchronize audio playback with timeline clock/time. For example, in Unity, you just drop audio onto the timeline and you’re set. Is it possible to achieve something similar in vvvv?


General

Last but not least:
Any recommendations for working with dome projection content?
Render techniques, workflows, or anything vvvv-specific that you’d like to share?

Any insights or workflows you could share would be greatly appreciated!

Thank you!🙏

just wanted to make you aware of this thread: VL.Domemaster

+1 to how to handle non-realtime audio…
it would seem the answer would/could be to bake the response (ie. from meters) live and then playback to write frames… the VL.Interpolator.Addons timeliner patch says it can bake keys, but I haven’t the slightest idea how to make that happen, although positionToTime seems like a relevant part.

I think the simplest thing I’d want, maybe it exists but I don’t know the name, is an equivalent to the “mtr” node in MaxMSP. (although it would be a little more complicated since Max is only realtime, so it would need some time to frame equivalency). …maybe i’ll try to build one if something isn’t already avail. :)

(Maybe kairos timeline also has a possiblity, but … umm.. is the timeline example patch gone?)

Thanks for your answers.

I was too optimistic about the course timeline and the amount of work required for a final project. For now, I am following the very basic workflow with VL.Interpolator.Addons, where everything is bound to the timeline itself. But yeah, the idea of recording the real-time data to the timeline sounds appealing, and I will definitely try this approach in the future.

What is a bit unclear for me now is how to advance the timeline in sync with a render loop/offline render. The most time-consuming operation, as I understand, is writing texture to the disk. My current recording pipeline looks like this:

  • incremental/desired FPS in MainLoop and Timeline settings is set to 2 FPS
  • start recording also starts timeline
  • each frame update triggers texture writing

This approach is kinda work, but I am curious if it is possible to advance the timeline based on the vvvv main loop: at the beginning of each frame, the timeline seek position is calculated based on the current frame or time from the start.