Senior Thesis - "Embers" - Week 12 - 13

Updated: Apr 7

Here's the report on my progress over last week and couple days! I was traveling for the week in California so I'm putting these two weeks together. I worked on rendering the beginning of the first shot; refining the particulate and the smoke; and adding more details to the FX and some of the compositing set up.

Looking at the renders I have a texture fix on the kettle that broke because of the slight modeling adjustments to the kettle. The kettle looks much better than last week and its an easy fix on the texture. (currently fixed)

The camera based particulate needs to move quicker and I want to kill some of the pieces that awkwardly fly in front of the camera because are too close. The smoke needs more disturbance detail and is slightly too viscous. I may speed up the smoke a bit more as well.

Overall, I am very happy with the progression of the renders.

Compositing Effects:

Composite with light wrap, glow, blur and grading applied to embers and kettle.

I setup the cryptomatte in my file for use with Renderman. Something to note that's different from other render engines is that it is written as a separate file, not a separate layer. To use this with render multiple passes, I do have to set up a cryptomatte shader for every pass to be fed into the sample filter of each Renderman ROP.

I have chosen to have it identify objects based on material since nearly every piece of wood, FX, etc. has a different material and requires no other attribute set up on my part.

Left: current Nuke node tree Right: sample cryptomatte for kettle and embers


I also got to finally continue on the check for triggering the ashes. It's a really simple check to write and it will prevent pieces from stretching in the simulation like they used to.

I moved the SOP solver that accumulated the trigger color outside of the DOP net, then promoted that attribute to a primitive so I could more easily work on a per-primitive, per-piece basis. I'll promote it back to point at the end. That was then fed into a connected piece for loop where I have two wrangles.

make trigger group

// make array of all the primtives in the piece
// add primitives to a trigger group if the color is over a certain threshold

int myprims[] = array(@primnum);
i@group_trigger = 0;

foreach(int primnum; myprims){
    if(@Cd.x > ch("threshold")){
        @group_trigger = 1;

trigger all if met threshold

// if the percentage of triggered items is greater than the threshold,
// trigger all pieces in the primitive

float primcount = nprimitives(0);
float count = nprimitivesgroup(0, 'trigger');

float percent = count/primcount;

if (percent > ch("threshold")){
    @Cd = {1,1,1};

left: new trigger right: old trigger

There's a significant difference between the two results as well when it comes to movement, not just the stretching behavior.

With the old trigger, there could be one last point that's just hanging on, waiting to meet the threshold to become active and so there would be pieces swinging and stretching off of the wood logs.

The new trigger allows that if the majority of the threshold is met then trigger the whole piece. This also allows for small pieces to become active earlier and larger pieces to become active much later. I can reduce the trigger threshold to still get some deformation in the pieces, but it is much more realistic and controlled.

Shader Progress:

Burning wood/ashy wood shaders:

Last week I talked a little bit about how I've decided to go about creating shaders on the logs when they have been burned or are burning. Between the two classes this week I worked on making more variations and applying that to my render geometry.

I also thought of a more simple shader after seeing this reference:

On the inside wood there's less of a displaced texture and more just a change of color. I could set this up based upon an accumulation of the burn attribute.

Task list for the upcoming weekend:

- Refine camera-based particulate per-shot

- Complete smoke and fire cache

- Refine steam simulations

- Continue on ashes simulation if time allows