im not using ngons, the quads triangulate differently to maya and the engine im using.
Have you tried the "Invert diagonal" option in the Default Triangulator's options? xNormal -- Plugin Manager ( the yellow plug icon near the close button ) -- Default Triangulator -- Configure
- Improved memory management ( specially for the images ). You should be able to render bigger images now.
- MatchUVs feature. This allows to skip the cage and ray distances setup... but the UVs must match as its name indicates... It's good in case your lowpoly mesh is a subdivision control mesh and your highres model is the lowpoly mesh subdivided and sculpted. Just a note: for the height maps, you still need to indicate to xNormal the maximum value to scale the height in order to write it to a 8bits bitmap(BMP,TGA,etc).
- The "render multiple maps in one pass" feature is back.
- Some bugs were corrected.
Btw, I think i'm gonna add a new tool to measure the min/max distance between the lowpoly and the high res one. It could cast some random rays to detect the distances. I think a tool will be better than a "Compute distance automatically" in the lowpoly's ray distance properties... because it could be used also for other programs. Basically you will select some highpoly meshes and some lowpoly meshes... then you press a "Compute min/max distances".... then some rays will be constantly casted and the min/max texts will be updated... All this occurs until the user decides enough time passed and aborts the process. What do you think?
#3 with zero strength ( which leads to simple normal mapping ):
And the good news... this technique could be applied using DX9 SM3 hardware! And it renders very fast as you can see! ( My GF8500GT renders it at full speed 75Hz which is my monitor refresh rate! ). It also consumes MUCH less video memory than a statically tessellated mesh and it's suitable for animation. I'm preparing a paper explaining it.
It tessellates the model using a normal map and a vector displacement map ( both rendered using xNormal ). There are no tricks: no parallax occlusion mapping, no relief mapping, no prisms... it's TRUE displacement mapping!
currently i'm using brute force but i'm tweaking it to use a distance adaptive heuristic.
any progress on a new GUI? - I'd really like to see this tool evolve into something bigger as it already is- a nice GUI would be defenitly a big step towards that goal.
If I am not mistaken some people here already made some great suggestions- though I cant find it anymore.
any progress on a new GUI? - I'd really like to see this tool evolve into something as it already is- a nice GUI would be defenitly a big step towards that goal
xn4 will use a standard and native OS look. I'm gonna use wxWidgets. The 3D viewer will be integrated into the app ( and you could disable it so no time will be wasted rendering things that you don't need ). That will remove also the .NET dependencies helping to reduce the size of the package.
Currently will be hard to add animation(morphing/skinning/MD3) to xn3, but it's planned for xn4 yep.
Thanks for the info. I wasn't looking to animate the model aside from spinning on axis for
demo-reel purposes (so potential camera translation/rotation as well). Reckon you won't be
there for a bit, tho.
Actually, it does that already. You can spin the camera and the light(s), and export it as an animation. I hope that works for you, I haven't tried it yet.
Very good to hear you're going with WXWidgets, that should make the whole interface a lot nicer for the end user, and probably easier for you to code too I guess!
The 3.16.3 RC1 has been released. It basically adds the displacement mapping in the DX10 graphics driver(Vista only as probably you already know) and fixed some bugs.
Hey jogshy, thanks for the invaluable updates. I have a question: I'm playing with the simple ambient occlusion generator to occlude models vertices as an alternative to using Mayas batch bake mental ray (its results always disappoint me). I also played with faogen, and whilst the results are way nicer than mental ray for maya, I discovered *after* purchase that getting the vertex color back into maya is way way more complex than the webpage lets on. Awesome. So you mentioned at some point that you felt that getting .sbm's or .obv meshes back into 3d apps was "easy". Now whilst that might be true for Max, as far as Maya goes, after much googling that doesn't seem to be the case. Do you (or anyone else) have any bright ideas on how to get the vertex color from xNormal back into maya? Any help appreciated.
I have the same issue with dvorak; have to switch to qwerty because of xNormal's controls.
Don't worry. I'll use key scan codes to solve that and azerty/dvorak will work properly.
Do you (or anyone else) have any bright ideas on how to get the vertex color from xNormal back into maya? Any help appreciated.
I think I'm gonna add a Maya exporter/importer for the next version, yep.
The SBM and OVB formats are public and very simple. If you(or a programmer near you) know python, would be not very difficult to create a small script to read OVB files(which are XML files really).
do you mean one that also does good obj export/import to resolver hard surface normal baking ?
And also to import/export vertex colors, aye.... But it will import/export SBM files only.
I'll also write a OBJ exporter(this one for xNormal) to export the vertex colors ( "vc" elements ).
I am trying to create a vector displacement for a project I am working on now. The quality of the maps your software produces is exceptional, however I can't seem to get rid of the seams in the map. I am not using a cage, I have played with various distances, match uv's is turned on. High Poly Model is 13 mil, low poly is approx 1000 polys that are subdivided to 13 mil. Models are exported from zbrush and match the scale of your example scene.
click on the plug icon on the right side and go into settings. Select the graphics driver tab. Change the graphics driver to dx10. My Vista system at home had the same problem as it was set to dx9 by default.
Turn off the "show highpoly meshes" checkbox :P or uncheck the "visible" property on the highpoly list.
Btw, the example looks much better if you disable the DX10's gamma correction option ( in the plugin-manager ).
I am trying to create a vector displacement for a project I am working on now. The quality of the maps your software produces is exceptional, however I can't seem to get rid of the seams in the map. I am not using a cage, I have played with various distances, match uv's is turned on.
Are you using the max2obj exporter that comes with 3dsmax by casuality? Use the xNormal SBM mesh exporter or the guruware's OBJ exporter instead... the max2obj exporter is very bugged!
Also sure you UVs are well welded ( enable the "show tangent basis" on the xn's 3D viewer... and see if there is only 3 axis per vertices... if not, there is a non-welded seam there ). You can also render a "wireframe an ray fails" map to see the seams ( marked in green usually ).
Btw, with the MatchUV you don't need to specify any distance and neither to use a cage. All is performed automatically for normal maps, height maps and vector displacement maps. However, for ambient occlusion, cavity maps, etc... yes, you'll need to specify them.
About the seams: vector displacement maps are MUCH more sensitive to UV seams than the normal maps. In a normal map a seam just makes a small diveregence in the lighting... but they can be terrible for vector displacement maps because it does not only affects to the lighting but also to the position! Although the vector displacement mapping I'm using in DX10 uses a "watertight" edge glue system, the seams need to be planned well. I'm sure you'll see lots of tutorials about this once DX11 is released ( Q3-Q4 2009). By now, the technique needs to mature a bit yet.
I'm gonna add an option to display the seams in the upcoming 3.16.4 version, so you can see how they affect to your model.
Try to use object-space vector displacement maps instead of tangent-space... tangent space multiplies the negative effects of the seams even more!
Oh! Other thing: if you want to use the vector displacement maps in other programs(like Modo), you probably gonna need to multiply the RGB channels with the Alpha channel ( the alpha channel is written with the normalized distance ).
If you want, you can send me your model by email so I can play with it a bit to try to improve the technique. I'll be very pleased. Thanks!
click on the plug icon on the right side and go into settings. Select the graphics driver tab. Change the graphics driver to dx10. My Vista system at home had the same problem as it was set to dx9 by default.
Yep. Currently, the DX9 is the default graphics driver, even in Vista.
I should change it to use DX10 in case you have a DX10-compatible card installed and the user is running Vista.
Is there a plan to say to Max sbm exporter, to take into account the "render iters" on a turbosmooth modifier
Hmmm, what's that? Well, I need to investigate a few but the Projection modifier programming interface that provides Autodesk is a bit limited currently.
Any plans to support Ati Stream Jogshy?
Yep, in fact I'm playing with it currently.
Both CUDA and StreamSDK ( as well as S3's S3FotoPro ) are very cool GPGPU technologies... but I would need to write a lot of code for different hardware... one for CUDA... other for Stream... other for FotoPro... too much work.... So I think I'm going to concentrate instead on OpenCL because which works with any hardware and it can be used with other operating systems.
The problem is that OpenCL's specification was approved yesterday and gonna take some time to get decent drivers ( like 4-6 months as minimum )... but we must give thanks for it.... We really needed a GPGPU portable standard.
one thing I think would be very very cool is a standalone obj 2 sbm converter!
Hmmm.. good idea, I'll add a tool for that!
Btw, the upcoming 3.16.4 gonna include Maya exporters/importers too. It probably will be available this month.
I'm having a bit of a problem... spent a couple hours trying to figure it out, to no avail. xNormal refuses to render my tangent space normal maps. It reads the UV regions that have normal information, but wipes them clean and generates world/object space smoothed normals. Incredibly frustrating... what am I doing wrong? I import the lowpoly model, assign a normal map texture, ensure 'tangent space' is checked, and load up the viewer... but it's always the same. Clears my tangent space normal map (not baked in xNormal) and uses smoothed world space colors. I really have no idea why.
Both of these examples have mirrored UVs. Could that be the source? It's driving me crazy.
It looks like the normal map is not assigned. When this happens and you enable the "show normals" option, it uses the vertex normals instead of the normal map's texels. The question is why the program is not getting the normal map assigned...
Ok, some questions:
- Are you assigning the normal map to the normal map slot, aren't you? Notice there are multiple texture slows ( base texture, height map, normal map, specular map, reflection map, etc ).
- xNormal version? Operating system? Graphics card and driver version(forceware,catalyst,etc), pls?
Are you using the DX9, DX10, OpenGL or ray tracing xNormal's graphics driver?(see it below the big XN blue logo inside the 3D viewer or in the plugin-manager dialog).
- what format are you using for the image and meshes? Size of the normal map, pls?
- Can you post an image with your viewer3D settings, pls?
- Do the xNormal's examples work for you?
- You mentioned you're using mirroring. What happens if you clamp the UVs to [0,1] range?
- See the log file located in My Documents\xNormal\xNormal_debugLog.txt. Does it show any error?
just wondering - is xnormal (or any other tool out there) capable of adjusting the normal map accordingly if you change the underlying vertex normals? e. g. change the topology of an already finished asset and tweak the existing normal map based on the differences between original and new topology?
Replies
- Improved memory management ( specially for the images ). You should be able to render bigger images now.
- MatchUVs feature. This allows to skip the cage and ray distances setup... but the UVs must match as its name indicates... It's good in case your lowpoly mesh is a subdivision control mesh and your highres model is the lowpoly mesh subdivided and sculpted. Just a note: for the height maps, you still need to indicate to xNormal the maximum value to scale the height in order to write it to a 8bits bitmap(BMP,TGA,etc).
- The "render multiple maps in one pass" feature is back.
- Some bugs were corrected.
Btw, I think i'm gonna add a new tool to measure the min/max distance between the lowpoly and the high res one. It could cast some random rays to detect the distances. I think a tool will be better than a "Compute distance automatically" in the lowpoly's ray distance properties... because it could be used also for other programs. Basically you will select some highpoly meshes and some lowpoly meshes... then you press a "Compute min/max distances".... then some rays will be constantly casted and the min/max texts will be updated... All this occurs until the user decides enough time passed and aborts the process. What do you think?
Still haven't got around to trying normals with it yet.
Just updated yesterday so I'll have to see if I need to again
Sounds like a cool option for the min/max.
btw, i think you could get rid of the "Generate" text in that maps to render roll out.
yes it has been released and has 64bit support (but opengl acc only works on vista64 and not xp64)
edit* the file browser bug i mentioned before seems to be gone now that i re-opened xNormal
- MatchUV feature for subdivided models.
- Vector displacement map support.
- Ray distance tool.
- Photoshop CS4 support ( including x64 ).
- Sh diffuseGI cubemap converter tool.
- Radiosity normal mapping support.
- Auto-normalized maps.
- Improved memory management for big images.
- Improved SDK compatibility .
- Lots of bugs solved.
Some screenshots:
#1 with maximum extrussion strength ( notice the overhangs, rotated spikes, etc )
#2 with 50% strength:
#3 with zero strength ( which leads to simple normal mapping ):
And the good news... this technique could be applied using DX9 SM3 hardware! And it renders very fast as you can see! ( My GF8500GT renders it at full speed 75Hz which is my monitor refresh rate! ). It also consumes MUCH less video memory than a statically tessellated mesh and it's suitable for animation. I'm preparing a paper explaining it.
It tessellates the model using a normal map and a vector displacement map ( both rendered using xNormal ). There are no tricks: no parallax occlusion mapping, no relief mapping, no prisms... it's TRUE displacement mapping!
currently i'm using brute force but i'm tweaking it to use a distance adaptive heuristic.
Here's the video:
http://www.youtube.com/v/1baaqr8318M
I've been looking at xnormal here and there, but I've not figured this
one out yet:
- does xnormal have the capability to export out turntable animations (with or
without camera moves)?
I'd like to consider it for realtime clips to go on a demo reel ...
(sorry if this is an ignorant question, but I couldn't find a full-blown
feature list on your site)
Nope, i'm poor as a rat!
It will be very welcome, specially because I need to renew the web hosting on January 1, 2009
If I am not mistaken some people here already made some great suggestions- though I cant find it anymore.
oh and keep up the amazing work
Thanks for the info. I wasn't looking to animate the model aside from spinning on axis for
demo-reel purposes (so potential camera translation/rotation as well). Reckon you won't be
there for a bit, tho.
Cheers.
displacement looks amazing!
Is there an option to set xNormal in azerty mode for the 3dviewer?
Thanks again!
Just a nitpick. Awesome app, regardless.
I think I'm gonna add a Maya exporter/importer for the next version, yep.
The SBM and OVB formats are public and very simple. If you(or a programmer near you) know python, would be not very difficult to create a small script to read OVB files(which are XML files really).
thanks a lot jogshy
do you mean one that also does good obj export/import to resolver hard surface normal baking ?
because right now i can only bake good hard surface normals inside maya.
I'll also write a OBJ exporter(this one for xNormal) to export the vertex colors ( "vc" elements ).
I got a few questions, my bad if this thread is only for development.
I've got a DX10 card(nvidia 8800 GTS), and a compatible GPU (intel core 2) but xnormal runs in DX9 SM3.0
My drivers are updated for 64 bit vista.
But None of the new features work, I was especially looking forward to Ambient Occlusion
I get this weird result from the vertex displacement...
http://www.bosquestudios.com/Jack/forum/vertexDisplaceProblem.jpg
Any help would be great!
Thanks
click on the plug icon on the right side and go into settings. Select the graphics driver tab. Change the graphics driver to dx10. My Vista system at home had the same problem as it was set to dx9 by default.
Is there a plan to say to Max sbm exporter, to take into account the "render iters" on a turbosmooth modifier
thanks again jogshy
but one thing I think would be very very cool is a standalone obj 2 sbm converter!
greetz
Turn off the "show highpoly meshes" checkbox :P or uncheck the "visible" property on the highpoly list.
Btw, the example looks much better if you disable the DX10's gamma correction option ( in the plugin-manager ).
Are you using the max2obj exporter that comes with 3dsmax by casuality? Use the xNormal SBM mesh exporter or the guruware's OBJ exporter instead... the max2obj exporter is very bugged!
Also sure you UVs are well welded ( enable the "show tangent basis" on the xn's 3D viewer... and see if there is only 3 axis per vertices... if not, there is a non-welded seam there ). You can also render a "wireframe an ray fails" map to see the seams ( marked in green usually ).
Btw, with the MatchUV you don't need to specify any distance and neither to use a cage. All is performed automatically for normal maps, height maps and vector displacement maps. However, for ambient occlusion, cavity maps, etc... yes, you'll need to specify them.
About the seams: vector displacement maps are MUCH more sensitive to UV seams than the normal maps. In a normal map a seam just makes a small diveregence in the lighting... but they can be terrible for vector displacement maps because it does not only affects to the lighting but also to the position! Although the vector displacement mapping I'm using in DX10 uses a "watertight" edge glue system, the seams need to be planned well. I'm sure you'll see lots of tutorials about this once DX11 is released ( Q3-Q4 2009). By now, the technique needs to mature a bit yet.
I'm gonna add an option to display the seams in the upcoming 3.16.4 version, so you can see how they affect to your model.
Try to use object-space vector displacement maps instead of tangent-space... tangent space multiplies the negative effects of the seams even more!
Oh! Other thing: if you want to use the vector displacement maps in other programs(like Modo), you probably gonna need to multiply the RGB channels with the Alpha channel ( the alpha channel is written with the normalized distance ).
If you want, you can send me your model by email so I can play with it a bit to try to improve the technique. I'll be very pleased. Thanks!
Yep. Currently, the DX9 is the default graphics driver, even in Vista.
I should change it to use DX10 in case you have a DX10-compatible card installed and the user is running Vista.
Hmmm, what's that? Well, I need to investigate a few but the Projection modifier programming interface that provides Autodesk is a bit limited currently.
Yep, in fact I'm playing with it currently.
Both CUDA and StreamSDK ( as well as S3's S3FotoPro ) are very cool GPGPU technologies... but I would need to write a lot of code for different hardware... one for CUDA... other for Stream... other for FotoPro... too much work.... So I think I'm going to concentrate instead on OpenCL because which works with any hardware and it can be used with other operating systems.
The problem is that OpenCL's specification was approved yesterday and gonna take some time to get decent drivers ( like 4-6 months as minimum )... but we must give thanks for it.... We really needed a GPGPU portable standard.
Hmmm.. good idea, I'll add a tool for that!
Btw, the upcoming 3.16.4 gonna include Maya exporters/importers too. It probably will be available this month.
Both of these examples have mirrored UVs. Could that be the source? It's driving me crazy.
Ok, some questions:
- Are you assigning the normal map to the normal map slot, aren't you? Notice there are multiple texture slows ( base texture, height map, normal map, specular map, reflection map, etc ).
- xNormal version? Operating system? Graphics card and driver version(forceware,catalyst,etc), pls?
Are you using the DX9, DX10, OpenGL or ray tracing xNormal's graphics driver?(see it below the big XN blue logo inside the 3D viewer or in the plugin-manager dialog).
- what format are you using for the image and meshes? Size of the normal map, pls?
- Can you post an image with your viewer3D settings, pls?
- Do the xNormal's examples work for you?
- You mentioned you're using mirroring. What happens if you clamp the UVs to [0,1] range?
- See the log file located in My Documents\xNormal\xNormal_debugLog.txt. Does it show any error?