Jump to content
3DCoat Forums

Creating variation of a painted model based on existing model?


Eric Cosky
 Share

Recommended Posts

  • Member

Hi,

This is the first time I've needed to do this, and I'm wondering what the best approach would be to this problem.

I modeled a creature for a game and I need to create a blown apart version for use when they get killed. I created the original in the vox room, painted it in the paint room and exported to Softimage for animating. Now I'd like to make another variation of the voxel form, this time with the body broken into chunks (by making cracks in the existing voxel set, not moving anything), and export a new model that now has interior of the creature showing where it was split apart. This will of course require a new UV set. I'd like to remap the original paint job to the new mesh though, so I would only need to touch up the edges and paint the new faces.

I believe 3DC can solve this with the texture baking tool, somehow, but I'm having trouble figuring out the work flow and the manual doesn't seem to cover this topic (the section on the texture baking tool is very short). I was kind of hoping to use the new beta feature for vertex colors to do this in a more straightforward manner but it seems that tech only supports diffuse colors (I would like to be wrong on that.. seems like this would be an ideal solution).

Any suggestions would be greatly appreciated, thanks.

Link to comment
Share on other sites

  • Reputable Contributor

In the Retopo Room, just move the faces that are being changed to a new UV set. Now, after you bake all the details from the Voxel Room, you should be able to import the diffuse map from the original (those UV islands wont' be changed). You should be able to just paint the areas that are modified.

Link to comment
Share on other sites

  • Member

Thanks for the suggestion. I apologize for being slow on this, but I have to admit I don't understand what you are telling me to do, so if you have a minute to explain more I'd appreciate it.

"Just move the faces that are being changed to a new UV set". Sadly, I don't even know where to begin here. I have taken my original model into the vox room, and cut it into pieces and changed it up a bit to reflect the damage it is supposed to have taken. I then used "AUTOPO for per pixel" and followed through to get a new mesh paintable in the paint room. It has a new UV set, and I don't know how or if I can share the previously painted model's UV set. Even if I could (can I?) use the original UV set for the new geometry, I don't understand how I would even identify the faces from the original UV set that would correspond to the new faces of the damaged geometry.

Complicated !

Thanks again for your help.

Link to comment
Share on other sites

  • Reputable Contributor

If you have the original Retopo mesh already reshaped to fit the modified sculpt, then you can create a new UV set (call it Modified or something) > select all the faces where the modification occurs > in the droplist (at the top of the UI when the UV tools are active in the Retopo Room) named MOVE FACES TO, choose your new UV set > bake as normal/merge to Paint room > In the Textures Menu > Import > Diffuse map (choose the one you've already painted on the original model). Now all you have to paint is just the modified area. 3D Coat just treats the extra UV almost like a separate mesh/subobject.

If you don't know how to create a new UV set and all, you can skip to the 5:30 mark in the video to see what I mean.

http://www.youtube.com/watch?v=mkqnS9qhclQ&feature=BFa&list=PL603B0C27026099E3&lf=plcp&context=C3d0542bFDOEgsToPDskKx11reZglaWSi7dbXFD_Fe

Link to comment
Share on other sites

  • Member

Thanks for that - the video was very helpful. I think I understand what you are describing, but I also think it's not quite what I need (please correct me if I'm wrong). My end result needs to be an object with a single UV set, something that can be exported as FBX for use by Softimage. If I understand your instructions correctly, I think I would have an object with two UV sets which would allow me to copy the textures from the original object to the first UV set and then paint the new surfaces on the second UV set. This I can see would work except for how I need a final result with one UV set.

After trying a bunch of things, and becoming more familiar with this part of 3DC, I am starting to think what I need to use is the "Bake Texture" feature. It seems that is designed for my problem, so I looked for any threads that mention those terms... found one that gave me the info I needed - http://3d-coat.com/forum/index.php?showtopic=9359&hl=%2Bbake+%2Btexture&fromsearch=1

So it turns out what I needed to do was export my damaged mesh with it's UV set to an FBX, then load up the original scene, enter retopo room, import the damaged mesh as a reference mesh, followed by Retopo->Merge with NM. That's all it took and I now have a paintable mesh with my new topology and old textures where those textures were available. Very simple once the steps were known. The manual could *really* use an example of this process because I expect it's a fairly common task and the manual barely even mentions this stuff..

Thanks for your help :)

Link to comment
Share on other sites

  • Reputable Contributor

Glad you found a workable solution. There is usually more than one way to skin a cat. Any reason why you needed just one UV set? It should export via FBX just fine. Using the 3ds Max Applink, when I export to Max with Multiple UV sets, it automatically sets up a Multi-Subobject Material (every UV set gets it's own sub-material). If there is very little deformation change then yes, the Texture Baking tool is one of the best options. Also if there is no change in the vertex order, you could import the original UV for the modified version. These things are always hard to pin down without some visual reference (screen grabs/video capture) to make the requests a bit clearer.

Link to comment
Share on other sites

  • Member

The main reason for a single uv set is this asset is headed to a game engine that performs better with a single set of textures & UVs. I don't use the AppLink to Softimage, instead relying on FBX for the geometry and then I manually hook the textures to the HLSL shader setup. Softimage is used to rig/animate prior to exporting to the game engine. I've considered making another version of my AppLink script that sets up my specific shader stuff, but I am not really generating assets at a rate that would justify that effort just yet. I could have in theory done a render map in Softimage to get it down to a single UV set but that would risk losing some image quality in the process.

One thing I now realize would be very useful is if 3DC would bake all the layers individually instead of combining like it does.. I'd be able to make better use of the previous layers to create variations of the damaged asset.

Link to comment
Share on other sites

  • Reputable Contributor

The main reason for a single uv set is this asset is headed to a game engine that performs better with a single set of textures & UVs. I don't use the AppLink to Softimage, instead relying on FBX for the geometry and then I manually hook the textures to the HLSL shader setup. Softimage is used to rig/animate prior to exporting to the game engine. I've considered making another version of my AppLink script that sets up my specific shader stuff, but I am not really generating assets at a rate that would justify that effort just yet. I could have in theory done a render map in Softimage to get it down to a single UV set but that would risk losing some image quality in the process.

One thing I now realize would be very useful is if 3DC would bake all the layers individually instead of combining like it does.. I'd be able to make better use of the previous layers to create variations of the damaged asset.

You can bake them individually. Select the Retopo Group > click the Select All Faces on this Layer Icon at the bottom of the Retopo Layer Panel > Retopo Menu > check Export Selected only > Merge as normal

One powerful feature that was added recently is the NAMES CORRESPONDENCE tool in the Retopo Menu. If your Retopo layer is named the same as the Voxel Layer, and you check the Names Correspondence box, 3D Coat will bake them individually, in sequence, so you get no overlapping issues (associated with baking all layers at once). This can save hours if your scene has dozens of Retopo layers.

http://www.youtube.com/watch?v=qF-oaVeKJCQ&feature=BFa&list=PL603B0C27026099E3&lf=plcp&context=C3d0542bFDOEgsToPDskKx11reZglaWSi7dbXFD_Fe

Link to comment
Share on other sites

  • Member

Hold on a minute, are you implying I can do this process without having to export an FBX for use as a reference mesh and instead just modify the voxels and somehow get the original paint layers applied to the newly created geometry for those voxels? That is my ultimate goal here, but right now the only way I know how to do this involves a lot of hoop jumping with exporting to fbx, etc. it would be so much nicer if I could simplify this process a huge amount by somehow just going to vox room, editing the original voxels to make the damaged geometry, and hitting a button or two and have all my layers of paint transferred to the new model where they happen to match surfaces with the original model and leave unpainted areas where they don't.. I don't know if that's possible but that would be my preferred workflow. The only sequence of steps that have worked for me feels pretty cumbersome:

  1. Save the original .3b as a second file because steps #4 below requires deleting the original object before exporting the damaged FBX.
  2. Modify the original voxels to create the damaged shape.
  3. AUTOPO for Per Pixel to get a mesh with UV set.
  4. Delete the original undamaged model in the Objects window of the paint room so only the damaged model is present.
  5. Export the resulting damaged model as fbx (it has UVs).
  6. Load the original .3B file with the undamaged model.
  7. Enter Retopo room.
  8. Import the damaged version's FBX as a reference mesh.
  9. Use the "Merge with NM" to bake the original paint layers to a single layer on the new geometry. (Incidentally, it took me a while to discover that "NM" meant "Normal Map", would be nice if 3DC didn't use acronyms so often, it's only increases the challenge for new users. It's one thing if it's going to break the UI layout, but there's plenty of room here.)

I haven't tried the NAMES CORRESPONDENCE yet, but when you said the Retopo layer name needs to match the Voxel layer name that tells me I am probably overlooking something significant here because the imported FBX reference mesh doesn't create any kind of Voxel layer with which to discover a matching name..

I am wondering if perhaps "Retopo->Use Current Low Poly Mesh" is related to this somehow. I don't really understand how that menu item relates to all this because so far it seems like this process is applying textures to the "reference model" (currently just an FBX that is visible only as a retopo mesh) using whatever is in the paint room as the source for color. Where would I specify the low poly mesh if it isn't the mesh in the paint room? If it is the mesh in the paint room, how would it know to not pull color data from the untextured damage object? Is it as simple as turning off the object visibility?

I searched for "Use Current Low Poly Mesh" and read every thread that matched, none of them explain what exactly the low poly mesh is and the manual does not define this term clearly. I think "Low Poly Mesh" means "the entire mesh visible in the paint room". Such a basic term for 3DC, but it isn't clearly specified anywhere from what I can tell and I just don't know for sure. The manual's definition for the menu item is this: "Use current low-poly mesh: A reference mesh can be imported to retopologize big objects made in another 3D modeling program. They can contain reference to textures. In this case the objects will be colored; color will be used in baking and merging into the scene." This doesn't really suggest anything other than "low poly mesh" is the reference mesh. But then down in the manual for the UV Manager it says "Texture Baking Tool. This lets you bake details to a normal or displacement map. This can be used even when the surface topology doesn’t match perfectly between your reference mesh and low-poly mesh." which clearly indicates the reference mesh isn't the low-poly mesh. Section 17.0 regarding the Texture Baking tool says "Here are some detailed

steps to use this tool" but they are anything but detailed or even a set of steps to follow. It's very unclear how to use these tools at all based on what is in the manual.

I'll continue pushing related buttons nearly at random to see what happens though.. maybe I'll stumble into something that works like I am now hoping it will. It's a bit of a struggle though because it seems my assets have triggered a problem in 3DC's texture baking that causes a crash. I submitted repro data to Andrew and he confirmed the problem so it will be fixed soon I am sure, but for now it only adds to the challenge here and might be part of the reason I'm unable to answer these questions myself. Could be these crashes are preventing me from using the ideal workflow. Hard to say.

Thanks again for your insights.

  • Like 1
Link to comment
Share on other sites

  • Member

I just realized the Retopo's "Use current low poly mesh" simply replaces the current retopo mesh with whatever is in the paint room. Not much closer to the goal but at least I get that part now.

After some more testing I am starting to think I should be able to get a Retopo mesh from the modified voxels without exporting an FBX, remove all unrelated Groups in the retopo (perhaps I could make a new uv set in the retopo room instead?), and merge the modified/damaged retopo mesh with the scene to get the colors over. This is where it crashes for me, but I think this is the intended workflow and if so that would be great so I am going to wait until the fix for the bake texture crash is available in another version before spending more time on it.

Link to comment
Share on other sites

  • Reputable Contributor

Eric, this is a rather complex task (might be easy once you find a good solution), and it's rather hard to give a suggestion without some kind of screen grab/visual aid of what the differences are between the two. If you are prevented from sharing publicly, you can IM me and I may be able to offer better ideas. The Texture Baking tool doesn't care about topology or UV's, but what is imperative is that the shape be nearly the same.

Link to comment
Share on other sites

  • Member

AbnRanger helped me out via IMs but I wanted to share a few key points that really helped me out. These are almost certainly obvious to people more familiar with 3DC than I am, but they were news to me and discovering these things really helped me get a fuller understanding of what 3DC really is so maybe this will help someone else.

* This was a fundamental one for me and looking back I don't know how I managed to miss it: Getting a voxel triangulated does *not* require the use of AUTOPO command in the voxel layers context menu. The Retopo room where you create or modify a polygonal hull around the voxels, which can be subdivided as necessary (manually) to increase triangle resolution where it is needed and then you "merge it with the scene" which seems synonymous with "make it paintable in the paint room". The manual talks about importing reference meshes and whatnot, but the real power and purpose here is (to me) to create a mesh that conforms to the voxels you have created - there seems to be no need to export anything or refer to a reference mesh. Adding points will cause them to stick to the voxels. When triangles are subdivided, the new points will shrinkwrap to the voxels, allowing you to create the mesh with whatever topology you need that conforms to whatever is in the Voxels room. Once the topology is prepared, the different "Merge" commands in the retopo menu are used to create the actual paintable mesh in the Paint room. I'll probably continue to use the Autopo for the time being because my needs, time and skills with 3DC are very limited, but I expect to be manually building topologies at some point in the future because it will help with making geometry that behaves better when animated.

* You have a couple ways of getting paint layers from an old mesh to a new one based on the original. How you approach it seems to be dependent on if you can have multiple UV sets, or if you need a different single UV set to account for topology changes.

** When using the same, original UV set you export the layers of the original, create the retopo mesh for the new shape, use the original UV set and import the layers to the new mesh (I haven't done this but I think this is how it works). New faces need to use a new secondary UV set and a separate texture. This doesn't meet my needs, since my output needs a single texture & UV set, but I expect this is not a bad way to go if you can because the original faces are left unmodified. I haven't tried this beyond a very simple test.

** With a single UV set, you need to create a new UV set and then bake the original layers to the new UV set. This means have a retopo mesh in the Retopo room for the new shape, and the original layers/model in the paint room. Create a UV set for the new retopo mesh (UV sidebar, auto-seams + unwrap works for me but you can do mark seams manually if you want. Note you don't need to enter the UV room). Use the "Merge with NM (per pixel)" or similar to get the old paint applied to the new mesh, which will be based on the retopo mesh with the color baked into a single layer. I understand that the "Use names that correspond for baking" will cause the original layers to be used, or something along those lines which will allow you to transfer complex layer setups (I haven't had a chance to try this though). This method has produced good results for me, but pixels are not exactly the same because they had to be resampled to the new UV set. For me, it looks fine and this is the approach I wound up going with. There have been some crashes in the past when using this command, but as of today the current version is working for me without a crash (3.7.06C).

There are probably more ways to do what I was originally asking about but I this works for me and I'm happy with the results.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...