point clouds... not i3d

   7403   10   2
User Avatar
Member
132 posts
Joined: July 2005
Offline
If i3D was a girl, I'd have to say she's just “not good for me.”

:?

-i3D's motion blur is an elegant hack, but still a hack.

-The process of writing out the i3d files is redundant. Even Lightwave has a more streamlined way of achieving volumetrics.

-Writing out a 128x128x128 i3d file (with a lot of particles) creates a sequence of large files
(in addition to the actual rendered frames)

-It's difficult to get i3d to inherit point attributes like color (or impossible? I still cant get it to work…)

Enough with the complaining though. Is there a better solution? thousands of transparent sprites motion blurred look nice, but geez what a hit to the render time! I've heard there is a better way… and it is using point clouds.

Can anybody point me towards a good file that shows how to use point cloud rendering for use with particles? I've gone through the tutorals for mantra final gather passes which involves point cloud data sets but I've never seen an example where point clouds are used to render volumetrics like smoke. If it works for sub-surface scatterring I'm sure it's more than capable. Any examples?

Thanks in advance,

TheSquid
User Avatar
Member
639 posts
Joined: July 2005
Offline
i3D is still pretty nice actually. One thing I like about it is that i3d allows you to take any kind of arbitrary attributes from the points and encode them into a volume as raymarching would do. That way, you can simply read up any kind of attributes at a particular location inside a volume.
User Avatar
Member
132 posts
Joined: July 2005
Offline
It's entirely possible my oppinion is the result of a lack of knowledge of what i3d is capable of. But, I've heard rumors that even people at SideFX arent completely happy with it and would like to someday see it replaced by either point cloud rendering or some other method.

Since I'm just doing tests on the side I dont have 100% if my time to put into it. I get nice results sometimes… but the element I was trying to create really needs motion blur since it moves so quickly. The i3d motion blur may work in a few circumstances but definately doesnt work in my case.

If you could send out a file that has an example of i3d working effectively with a good amount of control built into it I'd love to see that. As it is I'm doing a very basic i3D setup.
User Avatar
Member
132 posts
Joined: July 2005
Offline
What production facilities actually use i3D?

Digital Domain has its' own volume renderer, R&H either has their own or uses some version of jig. I'm not sure about Sony.
User Avatar
Member
132 posts
Joined: July 2005
Offline
Man….. this thread just died. I'm gonna make one last attempt at re-opening the i3D subject. I've been working with i3d simply because I dont really have any other choice, trying to create realistic looking cigarette smoke. The smoke has to be very dynamic and needs to react to lighting in a scene with lightning strikes, high contrast key lights, very dark shadows, etc. As much as I'd love to get away with sprites they just arent cutting it in the comp.

i3D works on a few levels. 1.) it's volumetric and reacts to light and 2.) it's easier to get close to the smoke look faster (compared to working with sprites.)

However, this smoke is being blown out at a high velocity, blown back by air conditioning in a car, and then needs to settle in the back area of the car. When it's initially blown out it needs to be heavily motion blurred and i3d's motion blur hack (please dont take offense to that term) doesnt cut it.

Another problem I'm running into is the i3d texture itself. If I had more control over it, and maybe more variations besides “VEX_metacloud”, I'd have more interesting ways to achieve the look I'm going for. As an example, Lightwaves “hyper voxels” come with tons of variations.

Another thing that sucks about i3d is having to write out the i3Ds itself. I'm sure this wouldnt bother me so much if I were working solely on this smoke, but I'm doing a lot of work in Maya as well and testing things on the side in Houdini. The process of writing out the i3ds is so slow (64x64x64) its easy to lose track of where I was when I kicked off the i3d after working in other files for a few hours and then returning to a completed range.

Another thing really bugging me is for some reason my point colors on my particles dont seem to transfer into my i3D smoke. This makes sense on a level to me because i3D works with density and not color, but there should be some way to transfer point colors to density or something along those lines. Even if it's a multiplier that allows you to choose the range of color you want and how much you want it to affect the density.

A lot of these issues may be addressed by somebody more familiar with i3d, but I cant help but wonder why most facilities that own Houdini end up writing their own volumetric renderers if i3D really is all that.
:roll:
User Avatar
Member
12428 posts
Joined: July 2005
Offline
the_squid
What production facilities actually use i3D?
Digital Domain has its' own volume renderer, R&H either has their own or uses some version of jig. I'm not sure about Sony.

We definately DO use i3d's, but generally not for rendering smoke with. You're right that we use our inhouse voxel renderer for that. However we do use them pretty extensively to mimic our voxel density data generated from our voxel software and we use them to represent vectorfields from fluid simulation and tailor-made force fields.

Why use them? They're FAST to access randomly and Houdini handles caching them when you're accessing them in a sequence very well.

Many voxel formats - like ours - are most efficient when reading them in a certain order, say slice by slice or something similar. i3d can query a thousand points scattered in a volume very quickly and easily. We pushed plenty of debris down fluid simulation vectorfields with playback speeds way over realtime.

We've cast shadows on objects rendered in Mantra using i3d copies of our voxel data and the integrate3d() function is really simple to use and still very fast.

The power of accessing i3d's via the VEX interface in all contexts is very cool and powerful. We've written VEX interfaces to our own format but it is nowhere near the same speed as what we can get out of i3d.

i3d's are cool, no denying it. Point clouds are cool - and perhaps cooler.

I know this doesn't really help you and your rendering task. Please be aware that your problem isn't with i3d's - it's probably more with the mantra raymarching shader you're rendering with and perhaps the i3d generation shader.

i3dgen is a pretty slow method of generating voxel data, unfortunately - and populating chunk by chunk (buckets) is really the only way to allow huge datasets to be generated without blowing your RAM.

I'm convinced you can get good results with it but it takes some hard work and clever thinking, and then a dollop of patience.

Jig is the only commercial volume renderer out there. And it takes some learning too. Take a look at that if you have the time and/or money. This also renders by buckets but doesn't require you to generate the entire dataset beforehand. On the other hand, all that computation of the density is lost and must be regenerated. (Unless they've made persistent caches now?)

The tools available to the lone artist for rendering volumes are not fantastic
Jason Iversen, Technology Supervisor & FX Pipeline/R+D Lead @ Weta FX
also, http://www.odforce.net [www.odforce.net]
User Avatar
Member
18 posts
Joined: July 2005
Offline
thinking out of the box here, but cant u use houdini's i3d for anything else but smoke?
Since the data is a matrix there is surely potential to use it to some other reasons other than generating smoke … am I right?
User Avatar
Member
132 posts
Joined: July 2005
Offline
“…However we do use them pretty extensively to mimic our voxel density data generated from our voxel software and we use them to represent vectorfields from fluid simulation and tailor-made force fields. ”

This is cool and something I never thought of, because I have no idea how I would represent vectorfields using i3d… I can see how that would be great if it's fast.

“Why use them? They're FAST to access randomly and Houdini handles caching them when you're accessing them in a sequence very well.”

Definately true. It's the writing out process that can take a long time. I guess the same goes for any volume renderer really. We have jig but thats another beast itself. I'd probably get a lot further faster with i3d.

“Many voxel formats - like ours - are most efficient when reading them in a certain order, say slice by slice or something similar. i3d can query a thousand points scattered in a volume very quickly and easily. We pushed plenty of debris down fluid simulation vectorfields with playback speeds way over realtime.”

Again this is a really cool use of i3d that I'd never even considered. Now that you bring it up, I'm trying to imagine how that would work.

“We've cast shadows on objects rendered in Mantra using i3d copies of our voxel data and the integrate3d() function is really simple to use and still very fast. ”

I'm not at all familiar with the integrate3d() function. I looked in the text editor for help but couldnt find it. Is this a function I'd use at the VEX level? As far as using i3d's for shadows, thats definately a plus. Being able to grab an i3d texture in an isosurface is awesome.

“The power of accessing i3d's via the VEX interface in all contexts is very cool and powerful. We've written VEX interfaces to our own format but it is nowhere near the same speed as what we can get out of i3d.”

Another clue for me to get my VEX knowledge on. To this day I've never written a single line of VEX code. I've thrown shaders together in VOPs, but thats different.

“i3d's are cool, no denying it. Point clouds are cool - and perhaps cooler.”

Motion blur… I would love to start playing with point clouds more.

“I know this doesn't really help you and your rendering task. Please be aware that your problem isn't with i3d's - it's probably more with the mantra raymarching shader you're rendering with and perhaps the i3d generation shader.”

I figure pretty much anything in Houdini is going to be well thought out and more than just skin deep. However, the more accessable parts of i3D need to be expanded on more. Like you say, we need more built in shaders to generate and render i3ds with.

“i3dgen is a pretty slow method of generating voxel data, unfortunately - and populating chunk by chunk (buckets) is really the only way to allow huge datasets to be generated without blowing your RAM.

I'm convinced you can get good results with it but it takes some hard work and clever thinking, and then a dollop of patience. ”

Speaking of which, my cigarette smoke is looking better. Took some time but I'm pretty happy with the results. I'm at the point where it's good but could be so much better if I knew more about how to really get in there and build my own custom VEX tools. The deadlines on this show and the fact I'm having to bounce back and forth to do shots in Maya and then tests in Houdini keeps me from being able to really dig into the books and school myself right now unfortunately.

“Jig is the only commercial volume renderer out there. And it takes some learning too. Take a look at that if you have the time and/or money. This also renders by buckets but doesn't require you to generate the entire dataset beforehand. On the other hand, all that computation of the density is lost and must be regenerated. (Unless they've made persistent caches now?)

The tools available to the lone artist for rendering volumes are not fantastic”

Jig is great when it works. Takes a lot to dial it in and find that sweet spot. Works great for low density smoke but once you start cranking the density it goes to hell. We had all sorts of problems using jig, for one thing their support is usually too busy working on other things to support the software.

Anyway, thanks for the response. Well thought out and you bring up some methods I hadnt even thought of. If you could elaborate that would be great. If not, I understand 8)
User Avatar
Member
7709 posts
Joined: July 2005
Online
Squid, you can save any data type (except string perhaps) in .i3d's, including multiple attributes per voxel. It's done like how a surface shader would output deep raster variables. However, you do need to create your own VEX Image3D shader to do it. For some intro VEX tips on writing i3d shaders, Jason wrote a tutorial called “volumetrics using image3d” here: http://www.odforce.net/tips/ [odforce.net] …. the examples are in .vfl but I it's equally easy to do them in VOPs.

As for self-shadowing, I've heard that it's probably best to use point clouds to accelerate that while still using i3d for regular ray-marching. The part where i3d doesn't work so well though is when you need different sampling in various parts of your smoke as .i3d is a uniform sampling. If that's what you need then different strategies are required unless you just up the sampling to your highest that you need in any part of your smoke at high cost.
User Avatar
Member
7024 posts
Joined: July 2005
Offline
It's true, R+H has their own in-house renderer which has volumetrics as part of it (see Chronicles of Riddick for countless examples).

However, there is no single solution for every situation. On Elektra I wrote (yet another) raymarcher in VEX for Mantra, because the smoke had to interact with millions of dust particles. I was able to do crude motion blur with the Vector Blur COP but that's only because my shots happened to allow that technique.

The inhouse renderer was used on other volumetric shots, even in the same sequence.

I've found the lack of motion blur the killer with I3d rendering. I've been able to write in colour attribute transfer etc but the basic Metacloud shader that comes with Houdini is really just a starting point.

Incidentally, render times (at 1k) for the smoke on Elektra varied from 4-20 hours per frame depending ) So I3D has a big speed advantage.

Cheers,

Peter B
User Avatar
Member
132 posts
Joined: July 2005
Offline
So basically, i3D is great if you have the time to write your own shaders for it… in some cases you can get around its shortcomings by using a post approach to add motion blur, or you can use it to visualize density data or vector fields you want to force simulations through. This is all well and good, but after all these years of development you'd think we'd have a better (FASTER!!!) way to achieve volumetric effects in Houdini WITHOUT having to write custom shaders. I'm a little upset because we just did a Houdini presentation here, and they showed “volumetric smoke” that they'd rendered with Houdini using i3d and, lets just put it this way – apparantly I'm not the only guy who doesnt get good results out of i3d.

I dont like plugins. I dont like out of the box solutions and fisher price software. But I do like having a good starting point, and i3D just doesnt deliver in a lot of situations.

Also, I asked the guys doing the demo to show point cloud rendering techniques for volumetric smoke. They showed up with a render of a Buddha statue using sub-surface scattering. Not exactly what I was looking for. Something tells me I better start learning how to use jig….

:cry:
  • Quick Links