subframe fluid rendering

   9209   7   2
User Avatar
Member
13 posts
Joined: Aug. 2009
Offline
Hello out there,


(Probably) Very simple one here:

- How can I render subframes of a cached pyro fluid?


-> Rendering subframes of fluid cached on integral frame numbers doesn't work (fluid remains the same for subframes)
-> trying to cache subframes writes out messed up cache files with standard solver settings


Now my guess is I have to change substepping on solver, but this changes my simulation.
What is the relation between solver settings, replay settings and cache step-width anyway?

In Maya it was rather easy, rendering subframes interpolated the cache automatically

But there are probably good reasons its's different here

Eager to learn!


cheers
hendrik
::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::current reel ::: https://vimeo.com/490379503 [vimeo.com] :::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::
User Avatar
Member
696 posts
Joined: March 2006
Offline
you could try a set-up similar to this.
It's a little expensive, but if you gotta do it, you gotta do it.

PS: why is it that $F rounds? I would have expected 1.99 to still equal 1 when using $F.

Attachments:
pyro.zip (58.1 KB)

Stephen Tucker
VFXTD
User Avatar
Member
13 posts
Joined: Aug. 2009
Offline
Hi Allegro,

That was not only lightning fast but (even better) seems to work very sweetly.

thanks heaps!

Now I only have to understand, how the volume mix and expressions for file loading work


The Houdini Community is just cool 8)


Update: now that the first test renders pop out it seems like the cache interpolation isn't linear or something.
The fluid seems to ‘pump’.

Any idea on that?


thanks alot!

hendrik


ps: cool ff avatar, who was that again?
::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::current reel ::: https://vimeo.com/490379503 [vimeo.com] :::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::
User Avatar
Member
696 posts
Joined: March 2006
Offline
I'm not entirely sure what the problem might be… it would help if you could post your file/render.

The expressions were pretty basic. If you want to get a grasp on hscript expressions you can try starting here [sidefx.com].

PS: I modified Cecil to be a bit more like myself

Attachments:
cecil_paladin_kitbash_game.jpg (40.7 KB)

Stephen Tucker
VFXTD
User Avatar
Member
13 posts
Joined: Aug. 2009
Offline
Hi Allegro and Everyone,

Sorry, was away from Houdini access for some days…

You find 3 Quicktimes attached, where I basically took your scene, applied a simpler shader, put in a light with shadows and rendered it with subsampling each frame 5 times, 2 times and in “realtime” for comparison.
While it looked right in viewport preview (yes, it is slow, but thats ok, if loader network is only applied just before rendering), there is obviously an issue with the interpolation.

Even on a second look I still haven't understood, how the expressions work ops:


But thanks alot for the useful link.
Haven't found time to dive into that yet, but will definitely do so soon.


cheers
hendrik

Attachments:
smokeSubframeX5.zip (221.0 KB)
smokeSubframeX2.zip (110.9 KB)
smokeSubframeX1.zip (61.5 KB)

::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::current reel ::: https://vimeo.com/490379503 [vimeo.com] :::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::
User Avatar
Member
13 posts
Joined: Aug. 2009
Offline
Hello Again,


While the if-Syntax of Allegro's cache-loading expressions

$HIP/pyrofields_`if(trunc($FF<2),2,trunc($FF))`.bgeo.gz

and

$HIP/pyrofields_`if($FF>=1,trunc($FF)+1,trunc($FF))`.bgeo.gz


still seems very unclear to me, I think it's mainly about dealing with issues for the first 2 frames.
At least, when I replace it with the simpler

$HIP/pyrofields_`trunc($FF)`.bgeo.gz

and

$HIP/pyrofields_`trunc($FF)+1`.bgeo.gz


, the outcome is pretty much the same.
Which means, together with the volume-mix in blend-mode, there is still a non-linear blending behaviour.

Which shouldn't be, from my point of view… :?


Please, can anyone shed abit light on this?

It's probably not too surprising for the experienced Houdini-User…



thanks alot!

hendrik
::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::current reel ::: https://vimeo.com/490379503 [vimeo.com] :::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::
User Avatar
Member
13 posts
Joined: Aug. 2009
Offline
Hello Everyone,


Meanwhile, I found a solution, which is different from the approach Allegro suggested.
This was apparently only blending the opacity, not position of the fluid and therefore led to nonlinear interpolating (at least from what I have understood).


Anyway, the new approach is not perfect, because the simulation has to be cached again, but, at least from what I tried, the result will look the same as before for integral frames, but this time with proper subframes.

The whole trick is basically to set the substepping on the simulation-tab of the dopNetwork to a value according to what will be rendered afterwards.

So, if you are going to render 4 subframes per frame, you have to set substepping to 4.
In this case you should set your increment on the dop-I/O for caching to 0.25, as well as later on the render-node.

You can verify it worked correctly by taking a look at the cache files (which should be written out with $FF):
The subframes should have reasonable values somewhere between the integral frame numbers.
Without proper substepping, the subframe cache files are messed up (and so are the renderings).


At least everything makes perfect sense now


Hope, it's going to help anyone apart from me.
It is for a VFX-Shot which is shot on hundred frames and will be time-ramped.


cheers
hendrik
::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::current reel ::: https://vimeo.com/490379503 [vimeo.com] :::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::
User Avatar
Member
1145 posts
Joined: July 2005
Offline
Allegro
you could try a set-up similar to this.
It's a little expensive, but if you gotta do it, you gotta do it.

PS: why is it that $F rounds? I would have expected 1.99 to still equal 1 when using $F.

$F rounds to the “next nearest”.
“gravity is not a force, it is a boundary layer”
“everything is coincident”
“Love; the state of suspended anticipation.”
  • Quick Links