Project Manager toolbox¶
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 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.
Reorganize¶
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 informationOpenEXR 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¶
Animation jobs are composed of a list of rules to produce frames. The frames are in fact Edit Jobs containing a scene fragment.
Animations¶
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"/>
</roughness>
</bsdf>
</material>
- 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
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
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.
Generating frames
Frames are generated by using . 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)
Interpolation¶
The Interpolation animation allows you to vary the value of any object parameter in the scene between two values (begin and end).
Turning table¶
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)
Rendering¶
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
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 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 and .
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.