Needing help going the right direction

   11283   19   2
User Avatar
Member
12 posts
Joined: March 2015
Offline
Hi there,

I am currently trying to create an efficient rain system for use in a short 3d animation. I have played around a bit (I am still very new) and have managed to come up with a rain system using the POP network. However I have quickly realised that this is quite inefficient. Mainly because meshing it is incredibly slow (with VDB From Particle Fluid) and with a full scene for a 3D animation, it's not really a good option as it would become even slower.

Right now even with that method I am having a lot of trouble. Motion blur with Arnold when rendering it in Maya is not working properly and I have little clue as to why. It's probably something to do with my workflow using the Alembic Cache. A simple simulation with about 1K particles, once meshed with VDB takes all night to simulate/cache.

So I turned to 3DS Max and Particle flow, using it alongside realflow to mesh and it works, it's quicker, but I still run into motion blur issues, so I am guessing that has something to do with the alembic cache.

Then I did a little bit of research and looked into Pixar's “The Blue Umbrella” which has a fantastic example of CG Rain. They used Houdini for the rain system, and it seems to have worked very well for them. So clearly there is something that I am missing. The TD there says they created the rain separately. He says:

“For the hero shots, like when the rain hits the mailbox, we'd run high-resolution fluid simulations to get a splash element,” Burrows says. “But for a majority of the rain shots, 75 to 80 percent, we had a library of rain and splashes on the ground they could just run. One thing we did that was neat was to have splashes that don't correspond to any rain hitting. When you put the shots together, you can't tell.”

Firstly

What I am trying to figure out is, how can I isolate my POPNET simulation so that I only have SPLASHES, or RAIN. Right now the way I built mine, the rain falls and splashes upon collision with the ground. How can I seperate them? Do I make different popnets for each asset (eg. one for splash, one for rain) or is there a workflow to isolate them from the same popnet?

Secondly

The TD then mentions that they actually did not render the rain as a particle (from what I understand), but as curves:

“For the falling rain, rather than replacing particles from the simulation with curves at render time, the artists did the replacement before rendering and saved the simulations to a cached file format. ”We cached animated curves, not animated particles,“ Burrows says. ”By doing this further upstream, we could modify attributes on the curves in Katana."

I don't quite understand what he means. If someone can clear that up that would be awesome. I think this method they used is more efficient than rendering polygon meshes. But I have no idea how to turn the rain particles into “curves” (I don't even know what they mean by that, animation curves or splines?).

Here is the actual article: http://www.cgw.com/Publications/CGW/2014/Volume-37-Issue-1-Jan-Feb-2014-/Moody-Blue.aspx [cgw.com]

My end goal is to create a rain system that I can apply to my project and it be manageable (not bog down my scene heavily). I need it to have all the usual attributes like splashes, motion blur etc.. I don't need it to create wetmaps or puddles at this stage, right now I would love to just have a renderable rain with basic splashes (that behaves properly in an animation) that I can ideally render in Maya, however that is not a must. I am not sure if meshing the rain into polygons will be a good idea, and would love to emulate Pixar's method, however I don't quite understand it.

If someone can point me to the right direction I would be really greatful. Any discussion, theories or even a different workflow is welcome.

Thanks for reading the wall of text.
User Avatar
Member
1391 posts
Joined: Dec. 2010
Offline
Sorry I don't have enough time right now , but maybe this project can help you , in this project I made two different network about how you can group splash and rain and another network is about how you can create curve from particles.

Maybe I'll make a more complex project for you later , I hope it can help you 8)

Attachments:
JK_Simple_Rain.hip (150.6 KB)

https://www.youtube.com/c/sadjadrabiee [www.youtube.com]
Rabiee.Sadjad@Gmail.Com
User Avatar
Member
12 posts
Joined: March 2015
Offline
Joker386
Sorry I don't have enough time right now , but maybe this project can help you , in this project I made two different network about how you can group splash and rain and another network is about how you can create curve from particles.

Maybe I'll make a more complex project for you later , I hope it can help you 8)

Thanks Joker. This is a lot of help. I will take the time to study it a little, as I don't really know what's happening in some places (like the attribute create) but it clears some things up!

Just wondering if it's possible to export these curves into Maya?

I'll get back to you if I have any questions. Thanks again.
User Avatar
Member
1391 posts
Joined: Dec. 2010
Offline
Source particles has an ID attribute that is unique between each particles , I made a simple attribute for saving these ID numbers , I call'd it JKID.

Now in the next particle network that useful for generating trail particles , each trail particle that generate from source particles has exactly same JKID attribute with it's own emitter (emitter for them is source particles).
Check Image 1;

and Finally the Add SOP draw a curve on each trail particle that have exactly same JKID number.
Check Image 2;


About Exporting these curves to Maya , you can use Alembic format , it can export curve to the Maya perfectly , Just if you use Arnold for rendering , Arnold in currently version has some problems with rendering Motion Blur for alembic files.

However Houdini is perfect for rendering particles or curve with Motion Blur , you can use Mantra.

Attachments:
Image_1.jpg (108.3 KB)
Image_2.jpg (74.3 KB)

https://www.youtube.com/c/sadjadrabiee [www.youtube.com]
Rabiee.Sadjad@Gmail.Com
User Avatar
Member
12 posts
Joined: March 2015
Offline
Hi Joker,

Thanks for the explanations, it clears a lot up for me. I will see about other renderers and see if they can render the curves as I am not very familiar with Houdini's rendering workflow. However, I will keep in mind about using Mantra as an alternative as I hear it's brilliant.

Have a good day.
User Avatar
Member
1391 posts
Joined: Dec. 2010
Offline
ibaniser
Hi Joker,

Thanks for the explanations, it clears a lot up for me. I will see about other renderers and see if they can render the curves as I am not very familiar with Houdini's rendering workflow. However, I will keep in mind about using Mantra as an alternative as I hear it's brilliant.

Have a good day.

I think learning for working with Mantra for Particles , Pyro FX and other Dynamic elements is not so Hard , Because usually they don't has very complex material like Car Rendering , Natural Environment Rendering and etc . So If you are happy with Arnold in Maya , That's no problem , Just render your project in Maya with Arnold (or others) , And Render your rain (or particles) in Houdini with Mantra.

The only thing that you should do is render both (Particles in Houdini and Environment in Maya) with Deep data . Then you can composite your rain (or Particles) on the environment with Deep very well .

I used this method in too many project without any problem , for example I render Explosion in Houdini and Render Car in Maya , then Composite them in Nuke with Deep data.

You should know Mantra in Houdini is one of the best rendering engine for rendering Volumetrics such as Smoke , Fire , Explosion , it's so fast for rendering them even with ray-trace shadow , sky light and motion blur .

Also Mantra is perfect and so fast for rendering million of particles with motion blur and complex shader .
https://www.youtube.com/c/sadjadrabiee [www.youtube.com]
Rabiee.Sadjad@Gmail.Com
User Avatar
Member
12 posts
Joined: March 2015
Offline
Thanks for your insight. Yes I was thinking of doing exactly that. It might be a great idea using Houdini just for rain. I will look into deep export from Mantra as I do not have experience with deep yet, but it looks easy enough.

Right now I guess I need to familiarise myself with Houdini's rendering workflow. I want my rain to have DoF, Motion blur etcc.

In my animation I was thinking if having splashes on the character from the rain too, but I have not yet tested how the rain will react on a moving object. I guess I will have to figure that out once I import the animated scene into Houdini.
User Avatar
Member
12 posts
Joined: March 2015
Offline
Hi Joker,

I am just studying the HIP file you gave me. I am just wondering if you can tell me a few things:

1. In the addTrail POP what is the purpose of $NPT and also the oversampling set to 5? I assume that it runs over the POP 5times/Frame, but not quite sure what exactly NPT is doing.

2. What is the purpose of “00” in the delete SOP at the end? I know it deletes the dots from the ADD SOP, but why is it “00”?

Thanks
User Avatar
Member
1391 posts
Joined: Dec. 2010
Offline
$NPT is a global variable for taking number of points from inputed node.

for example if you connect a simple Box (with 8 points) to Add_Trail node , then $NPT in the Source POP is 8 .


Oversampling is number of simulation in each frame , if it's 1 , then POP Network simulate particles on each frame , if it's equal 2 , then Particles , simulating twice in each frame , I used this method for generating more particles in each frame ( to make fewer distance between them ) , Just change this and check result.

When we draw a curve between particles with Add SOP , then we don't need to particles system , it's better to delete this unused data , a simple trick for deleting particle system is using Delete SOP and define 0 for it's group
:wink:

Sorry about 00 , my meant was 0 ops:
https://www.youtube.com/c/sadjadrabiee [www.youtube.com]
Rabiee.Sadjad@Gmail.Com
User Avatar
Member
12 posts
Joined: March 2015
Offline
Joker386
$NPT is a global variable for taking number of points from inputed node.

for example if you connect a simple Box (with 8 points) to Add_Trail node , then $NPT in the Source POP is 8 .


Oversampling is number of simulation in each frame , if it's 1 , then POP Network simulate particles on each frame , if it's equal 2 , then Particles , simulating twice in each frame , I used this method for generating more particles in each frame ( to make fewer distance between them ) , Just change this and check result.

When we draw a curve between particles with Add SOP , then we don't need to particles system , it's better to delete this unused data , a simple trick for deleting particle system is using Delete SOP and define 0 for it's group
:wink:

Sorry about 00 , my meant was 0 ops:

:idea: Sweet. I understand how it works now. Thanks a tonne! Now I have to move on to things like making the thickness of the curve so that the top is really thin and the bottom is thicker. After that I will start testing out rendering 8) .

Kind of like the example from Solid Angle:
https://support.solidangle.com/display/AFHUG/Shape+Properties+%3A%3A+Curves [support.solidangle.com]

But obviously in a smaller scale for the rain.
User Avatar
Member
12 posts
Joined: March 2015
Offline
Hi,

Just wondering how I can export the curves via ROP ALEMBIC. In Maya it just imports as a blank file? I used HDF5 and left everything else default.

I've decided for now I will use Renderman (they just released the NC version) to render the curves & the rest because I can apply shape properties to the curves quite easily and have everything packaged in one software. I am also keen on learning to use Renderman since it's a very popular renderer.

Cheers .
User Avatar
Member
1391 posts
Joined: Dec. 2010
Offline
ibaniser
Hi,

Just wondering how I can export the curves via ROP ALEMBIC. In Maya it just imports as a blank file? I used HDF5 and left everything else default.

I've decided for now I will use Renderman (they just released the NC version) to render the curves & the rest because I can apply shape properties to the curves quite easily and have everything packaged in one software. I am also keen on learning to use Renderman since it's a very popular renderer.

Cheers .

Yes, Alembic format of Maya has some problems specially with curves , I remember that in one project I had to use Sequenced Alembic for exporting Animated Curves to the Maya !
Working with RenderMan is great and it's good decision 8)
https://www.youtube.com/c/sadjadrabiee [www.youtube.com]
Rabiee.Sadjad@Gmail.Com
User Avatar
Member
12 posts
Joined: March 2015
Offline
Yes I might do that. Although I have curves exporting properly now. I figured out that it exports mostly correct if I fileCache it first.

Sadly now I have to turn all the curves into RiCurve in Maya for Renderman. But I don't know how to do it all at once, and I have 4K+ curves lol. :shock:

So I put in an extrude SOP to turn it into mesh first and exported into Maya. Everything is fine except my animation starts at frame 60, the mesh doesn't move from 1 - 59. Also I am not getting motion blur. Do you know how I can export the velocity attributes?

EDIT:
The timeblend SOP has fixed the problem with the animation offset. Now Motion Blur is the only thing I need to sort out. In Renderman settings if I turn on Motion Blur it gives me an error: “rfm Warning: R07005 Premature RiMotionEnd”. I exported using 0.2 subframes in Houdini. If I set the settings from Frame to Subframe I don't get this error anymore, but I don't notice any Motion Blur still.
User Avatar
Member
12 posts
Joined: March 2015
Offline
I have made good progress in regards to actually getting the geometry exported and rendered.

Here is a quick Nuke composite:

Rain Video [tinypic.com]

Still looking at ways to get motion blur working .
User Avatar
Member
25 posts
Joined: Dec. 2005
Offline
I know the velocity blur has been problematic when rendering Alembic file from Maya with Arnold (you need to export the velocity as a color, or tweak things with SOuP I think).

Another option is to just render you rain with Arnold inside of Houdini with HtoA, which supports every kind of motion blur.

Alternatively, you can export the rain as a sequence of ASS files from the Arnold ROP, and then import that in Maya as Arnold standins. The motion blur will be baked in the ASS archive.
Frederic Servant / Solid Angle / London
www.solidangle.com
User Avatar
Member
258 posts
Joined:
Offline
Weird, I have been able to get curves into Maya without an issue, prior to Maya2016 I would use HDF5 but now 2016 supports ogwawa without any issues. Also not sure how it would work with Arnold, but Nvidia realesed a new version of its mental ray Alembic impoter, but it does give you geo in the viewport.
User Avatar
Member
12 posts
Joined: March 2015
Offline
Those are some interesting info's guys, thanks for that. I will check it out!
User Avatar
Member
12 posts
Joined: March 2015
Offline
sl0throp
Weird, I have been able to get curves into Maya without an issue, prior to Maya2016 I would use HDF5 but now 2016 supports ogwawa without any issues. Also not sure how it would work with Arnold, but Nvidia realesed a new version of its mental ray Alembic impoter, but it does give you geo in the viewport.

In regards to this, I can now successfully export curves to Maya and it's all fine, however I was wanting to render those curves (as rain) using Renderman (which can render curves as geo). But the problem with that is I can't seem to turn them into RiCurves in bulk (there are 20K curves) so it would take forever doing it one by one.

I will be giving Arnold a go as I have found a way to export the rain as alembic geo. I have run into a few problems in Renderman for rendering the rain geometry that I hope Arnold can address.

For some reason the rainfall which is now basically thousands of polygon “lines” (extruded from houdini curves) isn't being picked up, and the water shader I have on Renderman isn't behaving how I had imagined. I don't know yet if it's a geometry problem or how Renderman handles it so I will see if it's any different in Arnold and go from there.
User Avatar
Member
25 posts
Joined: Dec. 2005
Offline
Hi ibaniser,

Repeating here what we exchanged privately as it may be of interest to others.

The issue when exporting your curves was that they contained degenerate primitives (curves with just one point for instance). The workaround is to append a Clean SOP with “Remove Degenerate Primitives” turned on.

I have now fixed this issue in HtoA and any degenerate primitives will be silently filtered out in the next release of HtoA.

HtoA ticket reference is #584.
Frederic Servant / Solid Angle / London
www.solidangle.com
User Avatar
Member
1 posts
Joined: Sept. 2015
Offline
About Exporting these curves to Maya , you can use Samsung Galaxy S6 cover [casesam.co.uk] Alembic format , it can export Samsung Galaxy S6 edge cover [casesam.co.uk] curve to the Maya perfectly , Just if you use Arnold for rendering , Arnold in currently version has some problems with rendering Motion Blur for alembic files.
  • Quick Links