KRK2 Absorption

Hi.
I started testing KRK2 (2.0.1.46319) and I opened scene previously done in KRK 1.6.1 (1.6.1.44739).
I hit render and what I expected would be more or less similar to 1.6.1 image.
Unfortunately that is not the case.
In an attachement there is image showing my issue:
-left KRK2
-right 1.6.1

I figured out that with Absorption OFF images are similiar (they are just slightly different, I can accept that),
but with Absorption ON coloring is completely different.

Using MAX2012
Hope somebody has a solution.
krk.PNG

Hi!

The Absorption algorithm was changed significantly in Krakatoa MX 2 (as you can see in your tests). It was considered “more correct” than what we were doing in 1.6.1. We used the opportunity of a major release to fix a lot of things and there was never a promise that the two releases will render identically. That being said, it should be possible to achieve a similar look in Krakatoa MX 2 using different settings - try tinting the Color of the particles into cyan and scaling down the Absorption color significantly. Still, the volumetric behavior of the light absorption will be different. The only way to guarantee exactly the same look would be to render in 1.6.1/1.6.2.

If you can post a PRT frame and the MAX scene, I could give it a shot and see if there is anything that could be tweaked to bring the two closer together.

Hi.
Thanks for reply Bobo.
I send you PM with link to project, if you could give it a shot would be great.

Could you explain how absorption works in KRK1.6.1 and how it is different from KRK2?

offtopic: Could you also explain why rendering PRTFume is completely different that rendering the same Fume grid cached to PRT by PFlow? ( img16.imageshack.us/img16/9536/krake.png )

I am downloading it, thank you.

I spoke to the Lead Developer and he said we tweaked it several times during the Beta, so there is no simple answer to that.
We could go look through the history of the code to find out, but I am not sure whether/when that might happen since we are in a pre-Siggraph crunch already.

Of course. It is like comparing apples and oranges. :slight_smile:

The PFlow particles are particles moving in space, advected according to the velocities found in the Fume’s voxels. A particle is born and then moved around by the values on the grid.
The PRT FumeFX particles are the representation of the voxels. They don’t move. Each voxel of the FumeFX is checked for its values (Fire, Smoke, Velocity, Temperature) and one or more STATIC particles are created within the voxel that represent these values in their channels if there is any fire or smoke above the threshold.
So in a way you are visualizing the Cause (PRT FumeFX) and Effect (PFlow). They cannot and shouldn’t be used interchangeably, but the PRT FumeFX can be used to pass the Fume data to the Krakatoa renderer for direct reproduction of the fire and smoke channels similar to what you render with the FumeFX Atmospheric effect.

The closest real-world example would be:
Imagine a vessel filled with water. Let’s say that this water is stirred and moving around. Imagine you put inside this water a grid of points with short threads attached at each point. Also imagine that these points don’t affect the motion of the fluid (impossible in real world, but possible in our imagination). As the water moves, these threads would turn to point in the direction of the flow, but themselves stay put on the grid. This would show you the Velocity directions at the sample points (but not their magnitude). This is kind of what the PRT FumeFX represents, except it also knows the magnitudes.
Now drop some ink inside this water and watch it move under the influence of this fluid - this is the PFlow driven by the Velocities represented by the threads above. If at some point the velocity has higher magnitude, all the ink will flow in that direction and leave no trace behind - this is why you see holes in the “ground” in the left image where all the particles left the area due to strong influence from the fluid, but the fluid is still there on the right image, so no hole. If the fluid itself had left the area, we would create no particles - we look at the Fire and Smoke channels and seed particles when there is fire or smoke in the voxel, otherwise we leave it empty.

I hope this explains it somewhat…

great explanation!
thanks!

hi bobo, could you explain the best way to transfer these channels into the pflow advection particles at partition time? this would be really great especially with fumeFX 3 color blending (assuming the color channel would be supported in upcoming release?)

cheers

Why do you assume I know a way? :smiley:
The PFlow advection is totally done by the FumeFX Follow operator. I am not a FumeFX guru, so I don’t really know if there is an easy and straight-forward way to get those channels.

One thing that you could try to do:
*Save your partitions to disk as usual.
*Load a single partition in PRT Loader.
*Create a PRT FumeFX object.
*Add a Magma modifier to the PRT Loader and set up a flow that uses the PRT FumeFX as a proxy particle system.
*Use either ParticleSumRadius or ParticleSumCount to sample the surrounding particles and acquire whatever channel you want.
*Resave the PRT sequence.

Being able to do the FumeFX particles advection in a different way would be probably beneficial… We are looking into that.