Unless Im totally mistaken having spent the last hour messing in zmapper (and looking briefly in the zbrush forums).
A: You can't use your highest res as the projection. Which kinda defeats the point.
B: You can't create or modify a projection "cage" especially when dealing with models with different topologies. What makes this worse is simply trying to scale or push the lower topology model in zbrush doesnt work exactly. Not only are you "going by ear" with the scale and cage changes you need to make; unless I have been doing something wrong, zbrush resets the center point of any imported model (p seems to only "center" on the current selections center). So scaling a offset model will not scale in the same "center" as the high res.
Sooo..
In max what are your guys method to get it in? High res displacement and bump maps maps for each section and importing in as a cage? Then render to texture?
I though I might be able to get away with using the base cage mesh in zbrush and still use zmapper to capture the high res normal detail since they share the same topology. Export it, then burn that normal map in the diffuse channel of the in game version.
Replies
Projection master again wont allow you to store your highest res, in fact its giving me a notice when I get above so many polyies (dont have program on this laptop.. something like 75 k it's giving me a warning?).
If you know a work around for this pivot point problem and the scaling defaults of zbrush, then I could do what you say (in fact already have as I used a medium res to help topology in low res). Otherwise they wont line up.
I don't alter the transform properties of the ZB mesh while it is in XSI at all so it pretty much goes out the way it came in. I used this method specifically to get around the issue of incompatible vertex orders and/or sculpt meshes with no UVs in order to be able to create a normal map within ZB.
This should be possible to do in max, assuming you can do UV transfers to/from meshes with different topologies.
The centre of an object should be at the world origin not the object centre when importing into ZBRUSH also.
About the cage issue - you dont use a cage as a projection object inside ZMAPPER as you would by default in MAX or other programs, you use Ray Distance. There is a configuration file for ZMAPPER for MAX 8 setting and this automatically sets the rays to fire much further than they do by default.
Any idea though if I figure a way to do this to
A:Have zmapper use the highest res.
B:Stop complaining beyond a certain poly count (Im at 6 mill at highest). I cant subdivide again to use my current highest.
[ QUOTE ]
The centre of an object should be at the world origin
[/ QUOTE ]
I browsed that chapter originally fat, but since my pivots wouldnt match, I didnt know how I could apply it correctly.
Hmm, well I assume its too late at this point to change that? The pivot is in a offset area thats neither the center point of the object nor the world center.
I think max uses cages AND ray casting options together in max. There is a option to change the ray distance via a slider in zbrush, but you have no visual representation on the screen to match with. So you guess. But again, its still missing a cage function to use in conjunction. Who here hasnt had to tweak a cage to work around weird complex geometry beyond just pushing at some point?
As far as using the high rez mesh, this is exactly why I outlined the XSI->ZB method. Essentially you are transfering the UVs from the animation cage to the sculpt and using only the sculpt to create a normal map. I wasn't even sure if I could do that originally, but when doing projections in Zmapper didn't work for me (ZB would crash) I tried it as a last resort.
I guess part of the problem is im only familiar with Zmapper with the method I have been trying thus far (two different meshes). When you go into zmapper with the lowest res model, it will automatically take the highest res to create the projection based around the polymeshes highest?
Export mid level mesh to XSI and build low poly around it
Export low poly
In Zbrush I load the high poly tool, drop down a few levels then go into zmapper
Go to projection tab and capture the mesh
Exit zmapper and import the low poly mesh, then draw it on the canvas (not actually sure if you need to do that)
Load zmapper then fiddle with settigns and generate the map
Check
Export low poly
Check
In Zbrush I load the high poly tool, drop down a few levels then go into zmapper
Check
Go to projection tab and capture the mesh
Check (notice your not capturing the highest detail though - what if your skin texture is at the highest?)
Exit zmapper and import the low poly mesh, then draw it on the canvas (not actually sure if you need to do that)
Check (dont even need to put it on the canvas, just select it)
Load zmapper then fiddle with settigns and generate the map
Error. (The setting you can fiddle with are too primitive. Epecially if your topologies start to greatly differentiate. Something the ability to cage would overcome as you could push pull vertex points versus only ray casting as a whole).
If I could figure out gwots method for max, that would seem to provide the best system. A: Your using the base mesh of the subd model which means less cases of the topology differing too far. B: From what I understand of Gwots comment, zmapper will use the highest model resolution if its the same model.
Tried giving xnormal a shot? Should be able to import yourhighest zbrush mesh into that and use cages.
Basically I just get my highest-res mesh ready in ZBrush, make sure the Max lowpoly version lines up with it in terms of general proportions (like someone said earlier, to check this you can just export a mid-level mesh from ZB and bring it into Max to tweak the new lowpoly mesh to match).
Then I just export my lowpoly mesh from Max (I don't understand why you keep referring to "different topology" since it doesn't matter about topology between the low and high meshes, as long as the silhouette and forms are roughly the same), bring that into ZMapper after capturing the zbrush mesh, and then load some settings (i tend to use the default max8-style normals settings) and tell it to render... I've had very good results this way, with completely different topologies on the zbrush and max meshes.
Also, I would never try to use the base mesh of the subd model as the lowpoly ... maybe use it as a base, but usually it needs editing a lot (I usually triangulate as I go too, if it's very low-res), to match it up to the general forms and volumes of the final sculpted mesh, while retaining maximum mesh optimisation.
xNormal also works very well with ZBrush and Max meshes, I've done this quite a lot and had great results (see the head model on my site).
From the sounds of things, it seems that your lowpoly mesh is differing in SHAPE (not topology, topology doesn't really matter) from your highpoly mesh, resulting in poor normal baking.
As long as your lowpoly matches up with your highpoly fairly closely, I don't see why you need any more options than ZMapper gives.
mapper uses 2 methods for normal mapping. One for capturing the high rez sculpt and projecting that onto another low resolution mesh (this is the one that does not work for me). The second method only requires one mesh, so long as that mesh has UV data Zmapper will generate a normal map for that UV set based on the highest resolution. This is the easier, crash free way (for me).
The reason I used it was because my original sculpt mesh had no UV data, but I had made significant topology alterations and UVs on an exported version outside of Zbrush.
I couldn't use this version in Zbrush but I still needed the UV data so I exported the lowest resolution from Zbrush and brought that into XSI. Did a UV transfer using Gator between the two meshes, then exported the Zb mesh back out.
Since it has the same vertex order as the ZB sculpt it came from I just loaded up the original high rez sculpt, switched to the base level and imported the newly UV'd version over top of that. This replaces the base mesh with an identical, UV'd version, retaining all my sculpt work at the higher levels and allowing me to generate a normal map now that I have UVs.
Don't know if that really explains it any better, but I did manage to get a normal map that matches the animation cage I have in XSI... which is all that matters I suppose. =]
[ QUOTE ]
From the sounds of things, it seems that your lowpoly mesh is differing in SHAPE (not topology, topology doesn't really matter) from your highpoly mesh, resulting in poor normal baking.
[/ QUOTE ]
Thats exactly what Im saying. In order to get polycounts down enough, I really had to get liberal. So where some areas swooped in or out, the low poly is only mimicking (again realize I DID use a mid level zbrush export to help. I snapped vertices all over). Hell, I had enough problems with just doing the eye since the shapes were different. (Finally just exported it into max since I could make a cage).. So when I do burn, Im going to have to make a normal map in a variety of parts (this is a complete figure with clothing, so it has undercuts and cyndrical shapes). And might even had to render out more than one normal map of the same sub-object that show different areas and mask/feather them over one another in ps.
OK I think I see where my confusion came in. I had the highest res of the zbrush model selected and that dialog popped up saying I had to have a lower selected. Then that dialog about a warning with my polys where over a certain limit. I assumed it was implying it would only be capturing detail from that current level, instead it was trying to make the real time preview faster.
I have no idea what you are referencing with xnormal? is that like a linked model to a high res version? Realize this is a 6 million poly figure, so will even xnormal be able to handle this ?
I can't think of many situations where it'd be advantageous to bake the UV layout of the game-res mesh into the ZBrush low-res mesh.
If your game-res mesh isn't matching up well enough to bake normals accurately, it sounds like it needs more work. You shouldn't have to use an interim step like this (although I can appreciate that for some situations, like Gwot's, it might be beneficial).
I don't see why you can't just use the game-res mesh to bake onto. If it's a good mesh with good UV's, it should be fine.
If you're really having problem areas, split them off and bake them separately then merge back the normals in Photoshop. Ideally for normal-map baking you should split off areas of the mesh that are drastically different or overlapping anyway.
I'm going to give Xnormal a run this weekend myself. For a free tool I'm really impressed with all the features it boasts.
In theory anyway. So that might be a possible workaround if not using Gator.
The way I get models to line up in zbrush is to bring in the high version first. Luanch Zmapper go under the projection tab and press the Capture current mesh button. Then leave zmapper and go under tool tab in zbrush go under import. The model should match. I stress should because I have had instances when it doesn't. So if it did match up perfectly go to zmapper, Crtl G is the shortcut. Then hit the create normal map and that's it.
When it doesn't match map the imported model is either bigger or smaller than what you had. When this happens I just go under deformation and press unify. You may have to do it a few times or just leaving zbrush and trying again fixes the problem. You might also have to go under the preview option in tool when it has the store button. Sometimes this helpes but you have to play with it.
Make sure you always reset xform in max befor exporting to obj since that usually fixes this.
Break down
1. import high.
2. store high in zmapper found under the projection tab. Button called store current state
3. Hit the Clone button next to the Make Polymesh3D
4. load low version with the Import option. You have to be in edit mode to do this to the best of my knowledge. Then find the low version and import it.
5. go to zmapper and create the normal maps.
Did you look at the zmapper video tutorial?
Check it out here if you haven't
http://www.zbrushcentral.com/zbc/showthread.php?t=31281
Hope this helps.
Alex
Anyhow Mop. I put one together. I know seeing makes it easier to understand but I hate doing these as it just seems a waste of time. This of course is only the eyeball, but having just these problems with such a simple shape and knowing how my low res model is full of "tricks", I will encounter the same problems in some areas (even if I cut the model into sections which I planned). ANyhow.
Hmm, that's really weird though.
It should be fine... can you email me those eyeball high + low meshes, and I'll take a look at it?
I spent a few hours trying to figure out what was causing most of your problems. I modeled the high poly eye how I thought you did it from looking at your image. I was able to get rid of the normal map drawing problem in Zbrush by making the high poly eye one piece. I just rotated the sphere 90 degress and modeled the cornia out of the pole. Zbrush didn't seem to like the intersecting meshes that made up your high poly eye. I generated the normal map for the eye in max as well and had no problems. with none of the high poly eyes.
The resizing thing that was happening to you in Zbrush was pretty annoying. The work around I found was to import the high, capture the mesh in zmapper, then import the low. Then you can hit unify under deformation and preview how the low lines up in zmapper. If the low is to big go under deformation and under the scale option scale it down a little. Then you need to hit the store button under the Preview tab. Do it a little at a time, then go back to Zmapper and see what happened to the low. After playing with it a little you'll get the two to line up. If Anyone knows a better way to do this feel free to share. I hope that helps.
It seems the best way avoid the aligning problem is to use the poly tool, the star, and improt the meshes that way.
You can download the meshes if you want.
Evileye.zip
Alex
For some reason I never had the scale/alignment problem with ZMapper, I just captured the high mesh then imported the low (as per the PDF manual tutorial's instructions) and it lined up perfectly.
The only workaround I found was to just rebake the normals in MAX - which handles these areas fine - using the medium-res mesh and then to use PHOTOSHOP to combine the two maps (i.e use the eye area of the MAX normal-map and the ZBRUSH area for everything else)... not the most elegant of solutions but it works for those intersecting areas!