PRT Surface only on certain Material ID?

I just watched Hristo’s Displacement overview here: vimeo.com/99422206

I noticed that he cached out his particles and then read them back in. Is there a way to cull particles not on a certain material id? Or only have a PRT Surface put them onto a selected material id? I’m wondering if there is a way to forgo the step of caching, especially for quick uses. :bulb:

Well, you could add a Magma on top of the PRT Surface, check the nearest point’s MtlIndex and set a Selection channel if the value is NOT what you want, then drop a Krakatoa Delete modifier on top to delete the offending points. It should be rather fast…

Note that there is a bug in the NearestPoint Channels List - the channel is listed as MaterialID, while it has to be entered as MtlIndex to work (because that’s the name PFlow used). You can type in the name MtlIndex to add it as an output. I will fix the code for future updates…

We could speed it up slightly by allowing a PRT Surface to also acquire the MtlIndex channel from the surface (right now it only steals the Normal, Tangent and Mapping Coordinates). This would make the Magma flow shorter by removing the need to sample the mesh surface using NearestPoint. I will log it as a Wish.
KMX2_MatID_Magma_v001.zip (19.6 KB)

Thanks Bobo! I haven’t touched Krakatoa in months so I’m pretty rusty. The cool thing about this is that with Hristo’s setup, and the above flow, you can skip adding another pflow event or TP group. Even more neat now, is that using Hristo’s flow, instead of using it for Displacement (or in addition to). If you attach the output of his flow to a texture coordinate, you can use the Vertex Color map as an intensity inside of Fume to get very natural object emission.