New COPs Transfer Normal Texture from Low to High?

   193   1   1
User Avatar
Member
2 posts
Joined: Feb. 2017
Online
Hello!

I'm trying to bake some textures using the new Copernicus network and baking nodes since the simple maps baker is going bye bye soon. Plus I just want to learn more about the new copnet since it seems to have a lot of nice new upgrades.

I've been able to bake standard textures like color, roughness, alpha etc. Basically anything that is just basic color/float information is pretty easy to get going. But I get completely lost when trying to transfer a tangent space normal texture.

Currently my high poly is just a few pieces of mesh laid out that I want to bake down to an atlas. The pieces have a material set on them with a color map and a normal map. In the old simple maps baker you could transfer that normal map over to the low poly UVs/output, but the new cops geometry baker doesn't seem to allow transferring textures. It looks like it only allows baking directly from the geometry of the high poly.

How would I go about transferring that tangent space normal map over to the low poly? My initial thought was to convert it to world space first, then try and map that to the rasterized position of my high poly and then try and capture it from there to convert back to tangent space. But I'm just not understanding how to adjust the directions of each of the normal map channels.

If anyone Could help out with this, that would be excellent. Thanks!
User Avatar
Member
23 posts
Joined: Aug. 2021
Offline
Hello. I appended a hip file that will hopefully fix your issue. I used a cupcake model from Sketchfab (https://skfb.ly/6SES9) to demonstrate the technique. This model consists of different meshes (Cake, Cup, Icing, Strawberry, etc) where some are more intricate than others and that will be the reason why baking intricate ones breaks faster than more solid ones like Cup and Cake meshes.

What I did is basically split up the mesh into pieces and created a vertex string attribute on each one which stores a path to different normal maps. We will sample these normal maps in later step when converting normals from tangent to world space. Now we merge these branches into a single one again and then create MikkT tangent and bitangents with PolyFrame SOP. Now we're going to feed everything into a wrangle. With VEX we are constructing a matrix with tangent, bitangent and N vectors. That's one multiplication factor for creating a world N. The second one is retrieved by sampling aforementioned normal texture maps and remapping them into 3D vector range from -1 to 1. That's the second multiplication factor. Result of multiplication will be a normal vector in world space.

Now that I've prepped high res, I created a low res version (that we'll later bake onto) by converting to VDB and back to polygons (to merge into a single optimized mesh). You will also notice that I deleted more intricate meshes from the model because they kept breaking the bake. I did this so I can prep at least somewhat working demo scene. The cause partially is that I don't have a proper low res model nor dedicated UVs to work with. I haven't tested it out but tweaking Ray Bias parameter (located in Bake Geometry Textures in COPs) might help fix it. Anyway, to get some decent UVs I extracted the seams from UV islands with combination of Labs UV transfer and UV Auto Seam and then fed them into UV flatten. UV layout is there to rearrange the islands neatly. Also create normals because we'll later need them in COPs.

In COPs I started with "Bake Setup" and imported our custom @highpoly_world_N attrib. Then converted baked normal vectors from world space to tangent space with "Space Transform with Adjacency" node. After that I extrapolated boundaries and converted everything to normal map. Keep in mind that the Extrapolate Boundaries requires the Alpha map to be plugged into its "fillarea" input. Otherwise it kept erroring out. And also you must set Conversion to "Signed to Offset (0 to 1)" on Convert Normal node.

It's not that big of a setup but it's able to take multiple high res meshes and then bake all their normal maps onto a single map for a unified low res version. I hope it will be useful!
Edited by Italimpex Productions - Sept. 2, 2026 23:01:23

Attachments:
SIDEFX_COPS_TRANSFER_NORMAL_V01.hip (509.9 KB)

Italimpex Productions
CGI Studio specializing in directing and producing advertisements & films
  • Quick Links