Mapping custom UVs to Genesis 9
I have a custom character head with textures in Blender that I want to apply to Genesis 9 for use in DAZ. I was able to use the Faceform Wrap software to wrap the G9 head mesh over the custom character and export it as an OBJ. Using Morph Loader Pro, I was then able to create a morph for G9. It all worked very well.
However, I'm now stuck on the UVs. The custom character in Blender is unwrapped differently than the standard unwrap for G9, and hence the layouts of the UV texture maps don't match the layouts for the G9 UV maps (in other words, the positions of the eyes, mouth, ears, etc. in the custom texture maps don't align with those in the Genesis 9 maps, their meshes are stretched/distorted differently, and there are more separate meshes than with G9). So, I'm looking for a way to fit/map and apply the custom UVs to the Genesis 9 mesh.
I've thought about importing G9 into Blender, unwrapping the mesh in a similar manner to the custom character, and trying to deform the unwrapped mesh to align with the texture maps. But, this would likely require a whole bunch of tweaking of the mesh, and still might not fit perfectly. And, I'm not sure how I would then get the results back into DAZ as proper G9 UVs.
In searching online, I've seen mention of the Ultimate Unwrap 3D software as a possible solution. But, in reading their tutorial material, it's unclear to me whether this software will work for this particular situation, and so I don't want to purchase it without being sure.
Any help with how to do this would be greatly appreciated!

Comments
Another option would be to keep the UVs but to bake new maps from the supplied maps on the head to a blank set of maps on Genesis 9.
Since you're using Faceform Wrap, you can do map transfer with it.
A key step is to use Texture Atlas in the process... Thanks to Jay Versluis who ever wrote a detailed post, you better firstly check it here: https://www.versluis.com/2022/11/converting-skin-textures-for-use-with-genesis-9/ (G8 > G9)
We ever discussed about how-to by using Wrap in these threads, though it was for G9 > G8, but the process would be almost the same. Hope they can help to some extent.
https://www.daz3d.com/forums/discussion/691881/use-g9-skin-on-g8/p1
https://www.daz3d.com/forums/discussion/701781/attempting-to-apply-a-texture-atlas-texture-map-to-an-exported-obj-mesh
Besides, yes, you can also project and bake texture maps across different UVs in Blender... but in my experience there'll be artifacts on the result.. especially with setting Daz3D Genesis figure as the target.
Thanks very much for your responses. I hadn't realized that Wrap could do textures. So, I went back to my Wrap file, added the texture images following Jay Versluis's instruction (bless the man!), and was able to generate new UV maps in the Genesis 9 format.
The maps did not scale properly to my G9 mesh, appearing about 25% too large horizontally and about 50% to large vertically, when viewed against the standard G9 unwrapping in the Daz Texture Atlas. However, some playing around with the Horizontal and Vertical Tiles sliders in the Surfaces Tab allowed me to fit the UVs to the mesh. The result looks great!
So, thanks again for the help!
Just to point out, youre not generating new UV maps. The UV maps are part of the description of the mesh (in this case G9 figure).
What you are doing is transferring a texture map from one UV map (your blender figure) to another UV map (your daz figure). You are just generating an image texture/texture map not a UV map.
That doesnt really make sense to me, but ive not used atlases before within Daz Studio.
What does your output from Wrap look like? Does it match the G9 floating geometry UV you used in Wrap? It must... because how else would it have transferred...
Thanks for pointing that out. I'm still pretty new to this 3D world, and still learning the terminology
I've attached an image of the mapping from DAZ's Texture Atlas, after I've applied the Wrap output images (Colour, Normal, Height and Roughness) to the G9 figure in DAZ. You can see that the image is unwrapped in the right way to fit the G9 UV map, but that the scale is wrong. So, all I could think of was to fiddle with the tiling until the mapping was correct.
Please don't attach texture images, even in modified form.
Texture Atlas is mainly a tool for consolidating multiple maps onto one, so reducing the area of the UV grid any one occupies is its normal behaviour.
My apologies for attaching the texture image if there is a restriction on these types of files... I was unaware.
After applying my new texture images from Wrap to the G9 mesh, the result in the viewport and in renders was that the textures were way too big for the mesh, exactly as shown in Texture Atlas. And, if I added more maps to the Texture Atlas view (i.e. arms, legs, etc.), while the relative size of the head mapping shrunk to make room for these, it still maintained the exact same mismatch in scale between the UV map and the texture image. I tried changing the output image resolution from Wrap, but applying lower resolution texture images maintained the wrong scale. I even tried changing the size of the image files in Photoshop, but the scale mismatch persisted.
You need the maps to match the UV set used, if the maps fits a different UV set then it won't apply correctly. I am not clear how Texture Atlas is meant to help here.
All Texture Atlas was doing was showing me how the texture images were incorrectly scaled to the UV mapping. The images generated by Wrap were in the correct unwrapped format to fit the G9 UV set (i.e. the seam is from the top of the forehead down the back of the head to the base of the neck, with the ears separated and in the top left and right corners of the image, and so on). But when I replaced the standard image files in Template 1 of the G9 UDIM Templates in the Surfaces Tab with them, they were scaled bigger than the UV map DAZ applied them to. So, the skin the images represent was stretched incorrectly over the head of the figure, with the eyes, nose, mouth, etc. somewhere down around the shoulder of the figure. Seeing this mismatch in the Texture Atlas view, I was able to realize why and how the image was not properly aligned with the G9 figure, and gave me a clue as to how to adjust the tiling to bring it back into alignment.
I'm not sure why the images are incorrectly scaled. It may be something I've done wrong in the Wrap application, but I couldn't find anything in their tutorials or online to indicate this.
If they were wrong size on the model (and it wasn't due to tiling) then the UV map did not match that of Genesis 9 - UVs are relative (zero to one, multiply by the size of any given texture to get the pixel position for that point) so there is no way to "scale" them other than tiling.
So, just for fun I launched a brand new scene, loaded G9 again, and reapplied my morph from Wrap. I then again replaced the standard texture maps with the ones generated from Wrap and, lo and behold, it worked perfectly. No scaling issue.
And no clue why.
Anyway, thanks again for all the help with this. If nothing else, I've learned a bunch of stuff, not least of which is how great this community is. Cheers!
Im quite confused about how that would solve your problem, as described, and dont think you got to the bottom of it. The only way I can think that your problem was solved was if you were only ever transferring a head, not a body, and therefore only needed the 1001 UDIM for the head texture, the combined UV layout of a texture atlas would not be necessary in that case. Also, if you never reloaded the mesh with the updated UV into Wrap, your output texture from Wrap would have remained on the standard 1001 UDIM layout. Hence why it was way too large for the Texture Atlas UV but worked fine on G9 default UV layoutt. If you had inspected the two UV layouts/texutres of both meshes, it would be immediately clear why they didnt line up.
Anyway, I came here to say there is already a single UDIM tile UV layout for G9 that comes with G9, so I dont really see the point of using a texture atlas personally. On the G9 Single UDIM UV layout, the four UDIMs from G9 will be put into the four corners of the layout, so you can readily split out any texture image that you transfer to that layout. The utlities for G9 have a way to split out the maps from the single UDIM layout into the five UDIM maps (1001, 1002, 1003, 1004, and 1005 maps). You can also do this in photoshop manually, splitting out the 1001, 1002, 1003, and 1004 quadrants from the combined texture into their respective parts. The 1005 UDIM which relates to the fingernails and toenails gets put in some random position on the Single UDIM layout, so is more difficult to split out of the combined Single UDIM layout manually, but there are workarounds.
My apologies, but I think I may have created a bunch of confusion in mentioning my use of Texture Atlas. In fact, Texture Atlas was never a direct part of my workflow, but rather more of a diagnostic tool. Please let me try to explain:
What I had was a custom head model in Blender (mesh and texture maps) that I wanted to apply to G9. I used Wrap to apply the G9 head mesh to the custom head, and created a head morph from this for G9 in DAZ via Morph Loader Pro. So far, so good.
Now, the texture maps in Blender were not aligned to the G9 standard because the unwrapping of the custom head was different from that used for G9 in DAZ (i.e. the eyes, nose and mouth were in lower locations on the image, the eyes had more slant to them, the head was unwrapped into separate portions for the face, skull and neck, and so on). So, being unware that Wrap could alter texture maps as well, I imagined that I would have to do this manually. My first thought was to delete the seams on the custom figure mesh in Blender and re-unwrap it in a way similar to G9's unwrapping in DAZ; if I could do this well enough, the resultant texture maps might overlay correctly with the texture maps in DAZ, and I could swap out the G9 texture files with my new custom ones from Blender. But, to do this I needed to know what the mesh unwrap in DAZ looked like. This is where Texture Atlas first came in: by selecting the G9 head in Texture Atlas, I got an image of the unwrapped mesh. My thought was that I could use this image as an underlay template to create a matching unwrap for the custom head in Blender. If done right, the meshes would overlay correctly, and as a result the textures would overlay as well.
However, I new this method would be challenging, to say the least. So, I decided to create this forum post, and through this thankfully learned that I could use Wrap for the textures as well, and avoid the manual approach.
As described above, using Wrap created new texture files that looked exactly like the standard G9 files in DAZ. Wonderbar! But, when I replaced the standard texture files on a G9 figure loaded in DAZ with these new texture files from Wrap, it was clear that the the textures were applied incorrectly. This is where Texture Atlas came in handy as a diagnostic tool again. It allowed me to see how the textures were applied to the unwrapped G9 mesh, i.e. that the textures were scaled much larger than the mesh, so only the upper left portion of the texture image was applied to the mesh. I was then able to adjust the tiling until this was corrected.
However, I wasn't really happy with having to alter the tiling to make things work. So, I decided to try starting over with a fresh G9 load. And, lo and behold, this time when applied the texture maps were in the correct scale and fit perfectly to the G9 mesh, with no need to adjust tiling at all.
So, your statement that I never solved the problem is technically correct, insofar as I have no idea why the maps didn't scale correctly the first time (even with multiple attempts with different resolution texture images). But, at least they did work the second time, which I hopefully can move forward with. I am guessing there must have been some glitch in the first loading of G9 that did not reoccur the with the second loading.
I hope this explanation clarifies things, and might help someone with a similar issue some time in the future.
Right ~ converting texture maps with a single tile UV layout by using Texture Atlas always works as expected, and it's much simpler and less cumbersome than using multi-UDIM tiles... esp. in the way of simplifying the node setup in Wrap project. This way is very useful when converting full character textures as well as some LIE tattos in between different Genesis, for instance, a full tattoo on G8F's Torso / Body can be quickly converted onto G9's Body, Head and Arms, then split them by using Map Transfer template. And the project template can be repetitively used, so on and so forth.
Then, as for OP's issue, I'm not 100% sure but I remember I used to have similar issue in other non-conversion cases. Maybe OP you can try using Purge Memory script next time if you encounter the same issue again... the script just clear the stacked texture and rigging, etc. in RAM so as to make the modified and re-assigned texture maps / new rigging etc. work as expected ~~ You can find this script in the product : Default Resources for DAZ Studio > Utilities. (ss1)