Project Manager toolbox

Project Manager toolbox screenshot

The project manager widget

This toolbox allows scheduling and organizing multiple simulations, animate the simulations parameters and let them run automatically

The project manager is composed of three parts :

  • Global controls, at the top

  • Job tree view, on the left, showing the jobs hierarchy

  • Jobs parameters, on the right, showing parameters for currently selected jobs

Quick changelog for Job Queue users

Here’s a very quick list of changes if you intend to use the Project Manager as you did with the Job Queue :

  • Jobs are organized in a tree structure now

  • Only jobs that are “queued” will be .. queued and rendered

  • Scene files dragged into the toolbox won’t be read upon dropping. This means bad scene files won’t be checked before they are processed. Make sure they are correct beforehand.

Organizing jobs

Adding / removing

Adding jobs is done by pressing Add button either in global controls or by right clicking in the tree view area. If a job is already selected, the new job will be placed as a child of the selected job in the hierarchy.

If a scene is opened in Ocean, the job will contain all the edits you’ve made since the last time you saved. Otherwise it will be empty.

Jobs can also be added by dragging scene files from the file system explorer and dropping them in the tree view.

Clicking on Delete will erase currently selected jobs


Jobs can be moved around by dragging an dropping them. You can do that for one or multiple jobs of same depth in hierarchy.

Selecting multiple jobs can be done in multiple ways, (as in most file explorers) :

  • ctrl + click to select individually

  • shift + click to select a range

  • alternating cltr + click and shift + click to select multiple non contiguous ranges

  • ctrl + A to select all jobs

Creating a hierarchy can be really useful to organize your renders and control some parameters for a lot of jobs. In the hierarchy, parent parameters have higher priority than children. Thus you can have a parent job overriding the halt condition or output type for every sub job when rendering.

Editing jobs

Common job parameters

Jobs can come in multiple flavors but have common parameters :

  • Job Name – used to name the render output

  • Count of sub jobs (for quick view of count without unfolding the job tree)

  • Scene target scene to load render

  • Setup to use : overrides the setup defined in edits

  • Path : output directory in which results will be written – default to target scene folder

  • Extensionoutput format, can be any of :
    • Ocean RAW (*.ocraw)

    • OpenEXR RAW (*.exr), unfiltered with complete spectral information

    • OpenEXR image (*.exr)

    • PNG image (*.png)

    • JPEG image (*.jpg)

    • CSV values (*.csv)

    • Open Document (*.ods)

  • Halt time, in seconds

  • Halt spp

All the common parameters can be edited in bulk, meaning that if multiple jobs are selected, you can change parameters for all of them.

Job names in particular can be automatically renamed using simple symbols :

  • The ‘#’ symbol will be replaced by the job index in the current selection, beginning at index 0. Putting consecutive ‘#’ will “zero-pad” the number (example : job-### will be replaced with job-024 if it’s the 25th in the list)

  • @time : replaced by the job halt time condition

  • @spp : replaced by the job halt spp condition

  • @scene : replaced by the scene name (just the filename without suffix, not the full path)

Edit jobs

These are the classical job type, containing edits to apply to a scene. The count of Ocean objects, instances and geometries is displayed for a quick overview of edits’ content.

Edits are cumulative from parent to children, meaning that before the job in processed, the edits of the processed job and all of its direct parents will be applied, ordered from “eldest” first.

Note that the edits are scene fragments and can be applied to any scene. For instance, you can build an Edit Job for a specific scene but change the scene to load when processing the queue.

You can apply scene edits by using the Apply button. This will append edits on top of the last ones. Using the Clear button will erase all edits in the job.

Animation jobs

Project Manager toolbox screenshot

An Interpolation animation

Animation jobs are composed of a list of rules to produce frames. The frames are in fact Edit Jobs containing a scene fragment.


Project Manager toolbox screenshot

A node we want to animate

  1. Targetting a parameter

The animations use the XPath language to universally target object parameters in the scene.

For example, you wish to target some parameters in this node :

<material name="GlossyMat" type="generic">
         <bsdf type="glossy" name="bsdf" ior="1.52">
                <filtershader type="constant" name="diffuse" value="0.18"/>
                <roughness type="trowbridge" name="roughness">
                        <scalarshader type="uniform" name="nu" value="0.1"/>
                        <scalarshader type="uniform" name="nv" value="0.4"/>
To animate the bsdf ior parameter :
  • material[@name="GlossyMat"]/bsdf/@ior

  • meaning “for a material named “GlossyMat”, target the ior parameter of the bsdf”

The same way, you can animate the roughness :
  • material[@name="GlossyMat"]/bsdf/roughness/scalarshader[@name="nu"]/@value

  1. Interpolation schemes

Animations can use multiple interpolation methods to define the rate of change of the parameter :

  • Nearest : “don’t interpolate”, i.e. switch value at the middle of the time range

  • Linear : constant rate of change

  • PowerIn : slow change at begin, then really quick in the end, controlled by an exponent parameter (the higher the exponent, the steeper the change)

  • PowerOut : opposite of PowerIn

  • Power : PowerIn at first, then PowerOut curve after the midpoint

  • Sigmoid : sigmoid function, linear when k is 0, hard step when k is high, smooth inbetween

  1. Time range

Animations are defined within a time / frame range, defined by framestart and framestop parameters. You can define multiple animations with different time ranges that will “overlay” each other. Parameter merging is not yet supported, the last animation used for a frame is always the one used.

The animation job will generate empty frames for ununsed ranges. For example if the animations are defined for the range [15 - 52], the frames 0 to 14 will be generated empty.

  1. Generating frames

Frames are generated by using Output. Generated frames are then added as children of the animation job. Be aware that it will erase any previous subjob of the animation.

Frames are EditJobs, named with the animation job name and the frame number (myanimationjob-002)


The Interpolation animation allows you to vary the value of any object parameter in the scene between two values (begin and end).

Turning table

Project Manager toolbox screenshot

Parameters for a turning table animation

The turning table animation lets you animate the position and orientation of an instrument. Multiple parameters are used to create simple or a little more complex animations :

  • center : Instrument target position. The instrument will always point towards this position

  • radius start / stop : distance to the target at first and last frame

  • theta start / stop : polar angle in degrees, 0° is on top, 90° horizontal and 180° bottom

  • phi start / stop : azimuthal angle, going counterclockwise

Angle values are not bounded, so animating phi from 0° to 740° will make 2 turns. The same goes for theta but beware of gimbal lock effects (going from angles -0° to +0° will flip the up vector)


To process jobs, first make sure you’ve queued some in the hierarchy, by using the checkbox right next to the name of each job in the tree view. Queuing a job will also automatically queue all its subjobs recursively. As a side note, if a job has a mix of queued / unqueued subjobs, its checkbox will be in an intermediary state.

When you’re happy with your selection, you can activate queue processing by pressing Queue process

The scene associated with the next queued item in the tree will then be loaded, edits will be applied if specified, and the render will start. Note that only the jobs with highest depth (i.e. with no child) will be processed.

Pressing Queue next will end current rendering job and go to the next. The output of last job will be written to disk whatsoever.

Saving & Loading project

Projects can be saved to / loaded from disk in text or binary form (*.proj.ocxml and *.proj.ocbin) using Save and Import. The format is the same as Ocean scene files (*.ocxml and *.ocbin) but have additional .proj suffix to differentiate scenes from projects different names to avoid mismatches. Everything except queue state is saved.