Emitting Particles via High Resolution Texture Map on Low Res Geometry

   263   11   1
User Avatar
Member
184 posts
Joined: April 2014
Offline
I have a particle setup in C4D with X-Particles that I'm trying to recreate in Houdini for more efficient disk storage, but I'm not having stellar luck.

In my current C4D/xParticles setup, I'm able to place a very high resolution texture (a 13,500 x 6750 world map) onto very low resolution geometry (1 large polygon) and emit particles on that polygon based on the texture, to a very precise degree and in a relatively speedy fashion.

However, it appears that in order for me to get that same precision in Houdini, I need to create a base mesh with a resolution of 13,500 x 6750 points, transfer the color attributes from the texture, and work from there. However, it's rather challenging to work with a 91 Million point mesh.

Is there a more efficient manner of achieving this level of precision?

Thanks!
Luke
User Avatar
Member
808 posts
Joined: Sept. 2015
Offline
Until you get an answer who knows better than I….

Did you try using a mesh in Houdini with a lower ‘resolution’ that keeps the same ratios? ie.

Instead of a mesh that uses 13,500 x 6750 - maybe 1,350 x 675?
User Avatar
Member
184 posts
Joined: April 2014
Offline
The ratios aren't as important as the detail of the source image [www.nasa.gov]. Lower resoltion mesh = loss of detail/accuracy in the resulting particles that are spawned, and when the camera moves relatively close, these will stand out.
Edited by Luke Letellier - Nov. 18, 2017 13:36:48
User Avatar
Member
808 posts
Joined: Sept. 2015
Offline
But you said in C4D you put your high resolution texture on a low resolution geometry - when I say say lower mesh resolution, it's the same thing as your low resolution geometry in C4d.

So what do you mean by loosing precision? or what do you mean by low resolution geometry in C4D.

The grid mesh in Houdini has two components - the size, and its grid count which are independant of each other.

I can have a low resolution grid that is larger in size than a smaller grid that is in higher resolution.
User Avatar
Member
184 posts
Joined: April 2014
Offline
Here's a picture of a simplified version of my setup in C4D with xParticles: a low resolution plane object (10 x 10) - but the particles being emitted onto it are using a very high resolution texture map to determine their emission position.




I'm trying to accomplish the same thing in Houdini. But as far as I know at this moment, I'm limited to using point attributes to determine where particles are emitted. And once the luminance values from the texture are transferred to a even a 200 x 200 mesh, the result isn't even remotely close enough to replicate the precision that can be done with xParticles on a mere 10 x 10.


Edited by Luke Letellier - Nov. 18, 2017 14:35:01
User Avatar
Member
808 posts
Joined: Sept. 2015
Offline
The only thing I can think of is that your example in C4d is doing an interpolation…in the end it is still using a 13500 x 6750 resolution.(Your just not seeing it - meaning your not having to deal with each ‘point to geometry’ translation).

Are you finding by using the same number of points in Houdini on a mesh to be a very slow process(compared to C4d) or is it that you don't want to have to deal with that many points?

I'm only chiming in on your post because I was working on a project not too long ago, taking high resolution photographs and as you are doing and apply to geometry.

Because of this I don't see how one could ‘expect’ retaining ‘precision’ unless you use a high enough number of points that corresponds to your original source.

Perhaps keep a high number of points in Houdini for ‘precision’ and do your work with UVs for the emission rather than directly with the points.

I'll look for my file I was working on…pretty sure I was doing some effects on the entire image and wasn't dealing directly with points - even though I kept the number of points the same as the image resolution.
User Avatar
Member
184 posts
Joined: April 2014
Offline
BabaJ
The only thing I can think of is that your example in C4d is doing an interpolation…in the end it is still using a 13500 x 6750 resolution.(Your just not seeing it - meaning your not having to deal with each ‘point to geometry’ translation).

xParticles allows you to use any shader you want to use as an emission source, so it sounds to me that the code accesses the shader-space for the particle emission - allowing it to be geometry resolution agnostic (if that makes sense).

BabaJ
Are you finding by using the same number of points in Houdini on a mesh to be a very slow process(compared to C4d) or is it that you don't want to have to deal with that many points?

I'm finding that in C4D, the process is instantaneous, immediate, and has zero lag. Any time delays are simply due to generic particle emission/processing - but emitting very precisely via this super high resolution texture takes exactly the same amount of time as if I were just emitting from a simple rectangle emitter.

But in Houdini with 90 million points, the attribute transfer in VOPs takes forever; heck, I can't even really move my viewport.

BabaJ
I'm only chiming in on your post because I was working on a project not too long ago, taking high resolution photographs and as you are doing and apply to geometry.

Because of this I don't see how one could ‘expect’ retaining ‘precision’ unless you use a high enough number of points that corresponds to your original source.

Perhaps keep a high number of points in Houdini for ‘precision’ and do your work with UVs for the emission rather than directly with the points.

I guess I'm trying to figure out if there's a geometry-agnostic approach in Houdini, as there definitely seems to be a method of doing it in C4D.
Edited by Luke Letellier - Nov. 18, 2017 15:48:06
User Avatar
Member
844 posts
Joined: Sept. 2011
Offline
The scatter sop takes a texture input to determine density if you scatter in uv space. A simple setup is to use the copnet to create a quad with the aspect ratio and uv's to match your image. Convert to polys and connect to the scatter sop. Set it to scatter in texture space with a density texture. You may need to increase the density scale considerably to see anything. Be sure to disable scatter relaxation. This will ruin the sharpness of the texture, and not to mention slow it down. Also make sure to add ‘uv’ to the list of vertex attributes transferred by the scatter, if you plan on reading color information from the texture with the points.

Attachments:
latlong_world_scatter.zip (47.9 KB)

User Avatar
Member
808 posts
Joined: Sept. 2015
Offline
But in Houdini with 90 million points, the attribute transfer in VOPs takes forever; heck, I can't even really move my viewport.

What I do is set my grid to full resolution ( same as image coming in ).

after which I use an attributefrommap sop. I find this method is ‘instaneous’ for myself.

Mind you my original file is only from a raw image 35mm format that ends up producing 8 million points.

That's 10x less then what your working at.

Maybe post a hip and someone else can see your workflow and suggest another way.
User Avatar
Member
184 posts
Joined: April 2014
Offline
jsmack
The scatter sop takes a texture input to determine density if you scatter in uv space. A simple setup is to use the copnet to create a quad with the aspect ratio and uv's to match your image. Convert to polys and connect to the scatter sop. Set it to scatter in texture space with a density texture. You may need to increase the density scale considerably to see anything. Be sure to disable scatter relaxation. This will ruin the sharpness of the texture, and not to mention slow it down. Also make sure to add ‘uv’ to the list of vertex attributes transferred by the scatter, if you plan on reading color information from the texture with the points.


Wow. That's exactly what I was looking for. Thank you!

The lat/long formulas are incredible helpful as well; I remember seeing them in those recent Entagma tutorials from a few weeks back & wanted to explore them in more detail (maybe even port them to C4D.

In Cinema I've just been emitting from a sphere, but this technique work great as well, and offers a lot more control.
User Avatar
Member
3707 posts
Joined: June 2012
Offline
not sure what BabaJ is going on about. Here's a pretty simple version. jsmack's is way more comprehensive.

Attachments:
particles with texture.png (870.4 KB)
PopsInTexture.hiplc (360.4 KB)

0.999… == 1.
User Avatar
Member
808 posts
Joined: Sept. 2015
Offline
It's simple aRtye…image data gets assigned to points.
  • Quick Links