Wishlist: Explicit space filling

We’ve talked in the past about having a radius parameter per particle so it could represent something other than a point, but a disk with a world space radius. An extra channel, half float per point.

We’ve also talked about storing points in ordered groups to make hair. Like you would have “Hair03” defined by Point450, Point670, Point880, etc. and a curve would be drawn intersecting those points in order. The color, density, etc would be interpolated along the spline. The PRT file wouldn’t grow much, just some grouping into hairs.

What about connectivity for making tetrahedrons out of 4 points? Like if you had tets defined by 4 points, and you interpolated the color, density, normal, velocity, etc for the tet from the channels of the 4 points? I’m thinking it would be like how OBJ’s work where you have a point list and a face list, except we’re doing tets, not tris.

Any of these would change how the rasterizing is done, of course, but none of them involves complex interpolations, ala Afterburn or something of that sort where you’re looking at noise functions being rendered.

New forum is weirding me out. I’ll get used to it, though.

  • Chad

We were talking about it, too. One thing that we would prefer to do is allow hierarchical PRTs. So you could save a PRT representing what your particle should look like, and use another PRT to distribute these particles in space, with the option to have multiple PRT “shapes” defined based on a channel or the particle IDs, and possibly using the Size or Scale channel from PFlow to control the size of the distributed mini-cloud. This would obviously mean explicit points instead of procedural ones, but it would also allow for as much flexibility as you want - if you prefer a teapot instead of a tetra, just save a teapot made of particles (or its vertices) and distribute using any other PRT.

Now this is a NEAT idea, but I am not sure I would like to use multiple particles to define it. I’d rather have two or more additional channels called MidPoint and EndPoint defined by, say, a DataOperator, so each particle could be shaded as a hair strand passing through the Position and the additional control points. Unless we declare that each 3 particles define a strand and output them in the right order, which is generally tricky.

I am not sure how the connectivity of particles inside the PRT would be defined. I’d rather have some “Particle Shape” format similar to the PRT format which defines a single particle shape, and distribute any of these using a PRT file defining their positions etc. in space. See above.

It is my first day managing it and I am learning new things all the time. But it is a lot more flexible than the old one, aside from using free software…

Also the new forum is prettier. Hurray for aesthetics.

The hierarchical setup would prevent any need to change how points are drawn, and yeah, it would give you a lot more flexibility, but I would think the disk would be a lot faster.

Why midpoint and endpoint? To get a curve? If you just had a second position channel, you could draw line segments by adding only 3 float32s. (only?) You’ve have to use the DataOp cleverly to make sure you maintained continuity over the hair though.

The idea for grouping the points together into hair objects is that you 1) can show every Nth hair, and treat them as a unit, 2) Don’t have to store any more data than just what’s needed to define the hair parameters, which might only be name string and an integer that defines the interpolation type, and 3) don’t need the data operator or any skill to keep the curve nice. Oh, and by keeping the interpolation handled automatically, motion blur should be straightforward, too.

With OBJ’s, the connectivity is just a list of vertex indices. Like (4121, 5432, 4536). So each particle would need an ID, which adds an int32. And the connectivity would be 4 int32’s. Compared to the storage required to fill the tet with points, it’s still a nice savings.

Unlike the hierarchy, the shape of the tet is defined just by the 4 points. And it should be fast to draw. But unlike the hierarchy, it could be deformed/transformed just by moving the points. If the hierarchical setup added a 4x4 matrix, then you’d have something, but it would never be as simple for the user as just doing the tets.

  • Chad

Regarding the new forums, the timeout seems really low. I have probably logged in 50 times today, and I’ve lost four postings because I took to long to type them.