1
$\begingroup$

In the regular Particle Hair system, before Blender 3.3.0, it was possible to use a texture UV mapped on emitter's surface to define a color of each hair strand depending on where it grows from. I mean the whole hair spline was using a color of the point on the emitter's surface where its root was situated at. So it was possible to paint a texture on emitter's surface and than to use it for coloring hair which was very useful for texturing fur. However I can not figure out how to recreate this option with the new Geometry Nodes hair system in Blender 3.3.0.

If I use Emitter's material directly on the Hair object it maps texture according to each hair spline's UV map instead of using Emitter's UV map: enter image description here Voronoi Texture with a bit of color correction here is used just as an example, it can be any other texture. As far as I know it is impossible to exchange attributes such as UV Maps directly between Materials in the Shader Editor (I understand it would not make much sense but anyway). As well as it is impossible to store named attribute which could be transferred to another material right in the Shader Editor.

We can use emitter object's UV Map as Group Input in Geometry Nodes and then as Texture Coordinate for textures right inside Geometry Node Editor but the texture's color could be stored as Named Attribute only for Points, Edges, Faces etc., which means loosing any texture precision, at least without enormously increasing amount of geometry so it would start to be close to the image resolution.

Probably the key could be in creating custom UV map for hair via transferring UV map from the Emitter, and transforming it somehow, so the hair spline could took the exact color of the pixel on the emitter's surface it grows from, but I can not figure out how to do it.

So my question is - how to properly transfer a UV mapped texture from the Emitter's surface onto hair splines in the new Blender 3.3.0 hair system?

$\endgroup$

1 Answer 1

2
+250
$\begingroup$

There is no way to transfer texture from shader to geometry and another shader, but there is a way to add same texture to geometry and achieve the result

enter image description here

Blend file here

$\endgroup$
2
  • 1
    $\begingroup$ Also, perhaps, there is more complex method with sampling texture from original UV, but it is still require to add texture to GN. $\endgroup$ Sep 27, 2022 at 14:07
  • 1
    $\begingroup$ This helps! Thanks to your answer I've also found out that it is possible to directly store Emitter's UV Map as an Output Attribute for both Emitter and Hair Geometry Node. So then we can use it as an Attribute in the Shader Editor which gives a possibility to use the same material with the same UV Map for both objects. And this completely solves my problem. Thanks a lot! $\endgroup$ Sep 27, 2022 at 15:35

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .