← All ideas
  • Published 29 Jan 2020

material editor 's geometry node improvement to remove necessity for baking or using huge textures (sometimes).

Imagine you want to create a seam around a complex object using bump or normal maps. It's a massive geometry, too big to sculpt the details on because of mesh density, and texture painting is out of the question too because the required resolution of the texture would bring blender to it's knees (because texture painting has not yet received the legendary Pablo's attention).

So you shrinkwrap a few curves along the mesh, then bevel an object along the curve and tilt accordingly (not sure why the direction cant be taken from the underlying normals??), then you add a solidify and a bevel to give you a nice seam.

Now you need to use the seam mesh to create normals/bump on your object. It would be great if the material editors geometry node could let you select which geometry to get the information from, then you could plug it's normal output into the normal nodes input. No need for baking.

66.7%

Development Status: Open

Upvote 2 Downvote 1
3di
29 Jan 2020

4 Comments

captain_solo

I would love to have this in Blender as well. As a 3dsmax user using VRay I use it all the time (where it's called DistanceTexture).

It's basically a texture with an object list to define which objects affect the texture. You then select a color that appears where there's no contact with those objects and another color to use where they intersect with the object.

An OSL shader that allows for some of its functionality has been posted here: blenderartists.org/t/is-there-a-distance-based-texture-for-blender/1186832

But it doesn't work in EEVEE and still has quite a limited set of features.

1
3di Author

* @captain_solo * That's cool, but now imagine you can actually project the normals of the chosen object directly onto the mesh without having to bake. This would be possible because the geometry node has outputs for normals, true normals, pointiness, etc.

So in the improved geometry node you could just select an object (like you can in the texture coordinate node), and then the normals of that object would be mixed in with the normals of the object the material is applied to. Would save a ton of memory because there'd be no need to bake a huge normal texture from one mesh to the other, you'd just use this node instead.

Like the distanceTexture on steroids :D

captain_solo

* @3d illusions * You're right, I misunderstood your proposal. So basically it's a build-in version of what decalMachine does.

3di Author

* @captain_solo * I haven't used decal machine, but I just watched a quick video and I think decal machine adds a strip of geometry to the mesh, and then applies a normal map to that strip.

What I'm proposing is a bit different. Rather than using a normal map on the second piece of geometry, the actual normals of the second piece of geometry are combined with the normals of the first geometry using the geometry node.

The plus side to this is that there's no need for a normal map on either of the geometries, the normals are taken directly from the geometries, and therfore save a huge amount of memory, and also allow for very fine detail (because we're no longer restricted by the resolution of a normal map).

There's also no need for any manual work such as adding boolean modifiers, or unwrapping.

The second piece of geo should be hidden from the render of course.

By the way the distance texture can be done using two ambient occlusion nodes plugged into a mix rgb node set to difference. You have to set one ambient occlusion to only local for it to work. The only problem is the object does have to be renderable, and the shadow option turned on under ray visibility. Not a problem normally for things like creating displacement around a rock in the ocean for example.