Some features i'de like to see, they could work similar to how the base texture works on the highres now.
Feature to load up a mask/alpha onto your highres uvs, that masks off sections of the mesh, for example a leaf texture, so that you can render a bunch of leaves down to a sinlge image, without having the quads from the texture show up, just the masked area. This should work with normals, ao, etc.
Feature to add a normal map onto your highres, that gets render out + the highres geo.
Feature to load up a mask/alpha onto your highres uvs, that masks off sections of the mesh, for example a leaf texture, so that you can render a bunch of leaves down to a sinlge image, without having the quads from the texture show up, just the masked area. This should work with normals, ao, etc.
That's very interesting.
Feature to add a normal map onto your highres
I tried that in the past, the problem is that to compute the tangent basis for a 20M poly mesh is desperately slow.
I'm investigating micro triangle displacement and prisms. Also subdivision and vector displacement maps.
In the Object/Tangent space converter tool I would love to be able to simply paste the input normal map - instead of fetching it on disk. Most of the time it's a map I simply want to copy from PS, convert, and paste back so I don't always have a file for it. It's a bit annoying to have to create this texture every time on the desktop.
Nothing big, but would be handy!
(and obviously - a copy option in the output window showing the converted map!)
Thanks!
In the Object/Tangent space converter tool I would love to be able to simply paste the input normal map - instead of fetching it on disk. Most of the time it's a map I simply want to copy from PS, convert, and paste back
Ok, I'll enable copy/paster there... and I also will put a new Photoshop plugin into the TODO list.
Btw, I've just uploaded the 3.15.3 Beta 5 if somebody want to test it a few.
Also added permalinks and RSS support for the web.
also, it'd be nice if you could highlight models and just press delete to remove them, especially if you could do it for multiple models. There are more of these small things that come to mind while using xnormal, are you interested in hearing them? If so, I'll try to remember posting them next time
also, it'd be nice if you could highlight models and just press delete to remove them, especially if you could do it for multiple models.
Sorry, I don't understand that. Currently you can select a mesh on the list and remove it pressing the DEL key... and it works with multiselection too...
There are more of these small things that come to mind while using xnormal, are you interested in hearing them? If so, I'll try to remember posting them next time
Sure, I like small things that can make the program better and if they can be fast and easy much better!
Hey Jogshy, is there a way of making layer rendering? not by passes but, you select your high and lows and put it in a layer, then keep making your selections, and then when pressing render would render all without stopping, this way we could drink a coffee or two when rendering maps. If there´s already a feature like that, let me know.
Hey Jogshy, is there a way of making layer rendering? not by passes but, you select your high and lows and put it in a layer, then keep making your selections, and then when pressing render would render all without stopping
That's one of the thing I wanna change drastically for xn4. You should be able to select a bunch of meshes in the scene. Then you can make layers, define if you want the mesh X to cast AO over the mesh Y but not over the mesh Z, etc... Also to render a normal map for the meshes I and J and, at the same time, render an AO map for K and O... and also to execute/write your own python/lua/javascript scripts.
In xn3, you can use the command line to render various XML setting files but is a bit more difficult and slow to setup.
awesome to see the updates Jogshy, do you know if Nvidia already made an official driver that supports CUDA?
Nope. They're still beta. I don't know when NVIDIA gonna release the official drivers with CUDA 2 support... I could not see any roadmap but I hope before the end of the summer... which is good so I can polish a bit more the renderer and also to adapt the Photoshop filters.
Thank you so much for this program jogshy. It's a lifesaver considering how crap Max/Maya is with high poly meshes...
Do you have any eta on when xNormal v4 will be out? I'm just curious, 3.15.x works fine but it sounds like you have some really cool ideas for the next release
Do you have any eta on when xNormal v4 will be out? I'm just curious, 3.15.x works fine but it sounds like you have some really cool ideas for the next release
The 3.15.3 will be available once CUDA2 is available(August, I hope...). Meanwhile I'm optimizing the new polymesh system(because currently is too slow) to allow subdivision and improved displacement/vector mapping in the future.
Once I finish the 3.15.3 I need to finish a multi-platform engine... which gonna be the basis of the 3D system for xn4. It includes node-based shaders(like UE3)... i'm designing the shader editor currently.... but I want to use OGL 3.0 which has not been releared yet(I need OGL for linux...).
And then, I can start the serious xn4 development.... which will be very fast because I've a lot of code almost done... and I have the ideas very clear... unlike xn3 which has been patched and patched to the death
Have you ever considered letting Xnormal triangulate meshes upon import? I regularly export meshes with a few ngons (that aren't really visible, and therefor the smoothing isn't really important.), and even a few times when I had a mesh that wass fully triangulated, it complained. It'd be nice if I wouldn't have to go back to other software to triangulate it.
Have you ever considered letting Xnormal triangulate meshes upon import? I regularly export meshes with a few ngons (that aren't really visible, and therefor the smoothing isn't really important.), and even a few times when I had a mesh that wass fully triangulated, it complained. It'd be nice if I wouldn't have to go back to other software to triangulate it.
The problem with n-gons is that some applications allow to make non-convex faces or faces with holes in the middle(they store them as a list of coplanar triangles)... instead of triangle fans. n-gons can be very slow to triangulate if triangle fans are not used. The modelling program you use knows better how the n-gons are stored and, probably, they have a triangulate/quadrangulate option(like Maya) which gonna be much more optimal than my implementation. Just press over that before exporting... or, even better, just use quads and triangles
They have also another problem... for Catmull-clark subdivision I need quad faces only... and to quadrangulate a n-gon can be difficult and very slow.
Alright, fair enough. And ofcourse it's no bother to triangulate before export (and I do usually end up with mostly quads, really, except for one or two n-gons), I'm just forgetful
yep jogshy
the slider change the intensity of all the mesh. I wondered if it was possible to change intensity on certain zone of my textures?
Ah, hehe, nope. That's one of the things I wanna change for xn4. I'm afraid you have to duplicate the diffuseGI texture, modify it for each mesh and assign it.
yep jogshy
the slider change the intensity of all the mesh. I wondered if it was possible to change intensity on certain zone of my textures?
Ah, hehe, nope. That's one of the things I wanna change for xn4. I'm afraid you have to duplicate the diffuseGI texture, modify it for each mesh and assign it... but usually you want to assign the same ambient cubemap and intensity to all the meshes or the illusion dissapears.
I get some weird shading on my normal maps compared to the ones I get straight out of ZB3. Anyone have any idea why?
Hahahah, funny scar
About the strange waves there... can you post some screenshots with the cage, map settings, lowpoly/highpoly settings and alignment? I suspect is due to something related with the cage's faces.
Do you mean an environment cubemap for reflections? Or an actual scene?
I think that as soon as you want to go for such objects (cars, and heavy real-life macinery in general) you really need some sort of accurate reflection going on, otherwise they would look alot like toys.
You also need to kill all the yellow highlights on the lambo shadow side. If this side is shadowed, then that means no direct light hits it. Hence these bright edges shouldn't be bright at all
However! the yellow bounce from the lambo to the nypd car is absolutely fantastic looking. Or maybe you faked that with a smart trilght setup?
Last details : with shadows this dark, the shadowed side of the dark should be much darker (except for the bright yellow bounce obviously)
You need a cleaner ground texture btw :P
All in one, awesome stuff as usual!!
I just wish my computer could display your screenspace AO effect!
Do you mean an environment cubemap for reflections? Or an actual scene?
3D objects, yep.
I think that as soon as you want to go for such objects (cars, and heavy real-life macinery in general) you really need some sort of accurate reflection going on, otherwise they would look alot like toys.
Yep hehe.. the scene was aimed for the realtime ray tracing driver.
However! the yellow bounce from the lambo to the nypd car is absolutely fantastic looking. Or maybe you faked that with a smart trilght setup?
Nope. It's realtime photon mapping from the DX10 renderer.
Last details : with shadows this dark, the shadowed side of the dark should be much darker (except for the bright yellow bounce obviously)
You need a cleaner ground texture btw :P
Yep, the "ground texture" is really the grid... and it's light-matte by default.
ps: An update...
Btw, the next week i'm gonna upload the RC1 with a lot of changes
Hahahah, funny scar
About the strange waves there... can you post some screenshots with the cage, map settings, lowpoly/highpoly settings and alignment? I suspect is due to something related with the cage's faces.
Here you go, crazy mash up of screen shots:
Tried using the cage but it gave the same errors. Here's the low and high in the 3d viewer and a screen of the cage.
I guess xNormal 4 will have resizable window? Taking the screenshots of the settings was a bit of a pain since I had to take a screenshot, scroll a bit to the right, take another screenshot etc etc
Btw, if you click "Save settings" and then cancel, the window that pops up says "Settings saved correctly" even though you canceled
Also, unless you type in .sbm or .obm when saving the meshes in the 3d viewer, it seems it gives a "Can't find plugin" error message and closes the 3d viewer.
Theres really not any reason you even need to use the cage for this. I dont really ever use the cage, just turn it off and set the ray distances, that should give you some better results.
Cage on the left image is not set well... it has to cover completely the highpoly model... and I see three spots uncovered by the middle... also you need to extrude a bit more than that to avoid numerical stability problems.
Btw... how many triangles are you using in that "lowpoly" mesh? I see it too dense, hehe!
Yep, but xn3 has a resizeable window already... but you need to use the OGL or DX10 graphics driver, not the DX9 one.
Also, unless you type in .smb or .obm when saving the meshes in the 3d viewer, it seems it gives a "Can't find plugin" error message and closes the 3d viewer.
That's cuz it's SBM and OVB
Better don't add the extension, just use the name... the program will put the extension based on the selected file filter.
btw santi , any chance for you to include a somesort of marker to just render the area i want ? instead of having to re render the whole thing ? like we mark on the preview window and type "render again this part" or something , that would be really handy
Have you tried the "harden normals" option in the lowpoly list? Did you use a cage or uniform ray distances?
Well, usually you need to bevel the hard edges to get good results.
if i use harden normal it breaks the smoothing group in the mesh. thats never good since it breaks up the normal map along the hard edges because of the missed area.
maya gives comparatively better normal map without any bevel edges, it seems to compensate for the default vertex smoothing where else xnormal isnt is only doing the compensation pertial. i also tried the averages normal(which is similar to my exported normals since i exported the low mesh in one smoothing group)
beveling edges is not a good option for me at the moment.
MM if your engine can deal with them I would recommend object-space normal maps. In such cases (flat mechanical surfaces) they perform great, and are pretty much universal in their implementation if I understand correctly. So no shading difference from one viewer/engine to the other.
Theres really not any reason you even need to use the cage for this. I dont really ever use the cage, just turn it off and set the ray distances, that should give you some better results.
Haven't tried harden normals no. Tried both cage and ray distance and they produce the same result.
Well, usually you need to bevel the hard edges to get good results.
It's not the beveled edges that I'm concerned about, it's the tubes that are very square (they basically look like a low resolution pixelated line that has been resized and blurred a couple of times) when rendered with xNormal but look fine when generated with Zbrush (the area circled in red in the image posted earlier). Here's the area I'm talking about:
Cage on the left image is not set well... it has to cover completely the highpoly model... and I see three spots uncovered by the middle... also you need to extrude a bit more than that to avoid numerical stability problems.
Btw... how many triangles are you using in that "lowpoly" mesh? I see it too dense, hehe!
This is just a test case so please ignore the denseness of the lowpoly (I do know how do it properly, just a bit lazy in this case since I was playing around with Zbrush at the same time as testing xNormal :poly122: ). I did try and extend the cage so that it covered the whole mesh and it still produced those somewhat weird results.
Yep, but xn3 has a resizeable window already... but you need to use the OGL or DX10 graphics driver, not the DX9 one.
I mean the main user interface where you set all the baking options, high/low density meshes etc. Is that resizable?
That's cuz it's SBM and OVB
Better don't add the extension, just use the name... the program will put the extension based on the selected file filter.
I meant that if you try to save the mesh without adding the extension in the file name, it won't save. For example, if I click "Save mesh" and type in "lowpoly" and hit enter it won't save and give the error I mentioned earlier (missing plugin blah blah). If I type in "lowpoly.sbm" it works. Maybe you could have it so that it automatically adds the file extension that you picked from the drop down list? See image below for example:
MM if your engine can deal with them I would recommend object-space normal maps. In such cases (flat mechanical surfaces) they perform great, and are pretty much universal in their implementation if I understand correctly. So no shading difference from one viewer/engine to the other.
yea object space works great, but UE3 we have dont support that and besides we would have to make unique UV for the entire mesh to use object space.
theoretically tangent space should give same results or close enough.
if i use harden normal it breaks the smoothing group in the mesh. thats never good since it breaks up the normal map along the hard edges because of the missed area.
Well, for a cube you can use that but for more comples models, indeed, nope.
maya gives comparatively better normal map without any bevel edges, it seems to compensate for the default vertex smoothing where else xnormal isnt is only doing the compensation pertial.
Yep, i'm trying to figure what Maya does with the vertex normals when it finds a had edge. I'm pretty sure it's applying some kind of normal threshold based on the face's angle. Can you post a screenshot of the Maya's normal map options regarding this, pls?
I mean the main user interface where you set all the baking options, high/low density meshes etc. Is that resizable?
Ah hehe! Nope, it's not. You need to use the scrollbar... and I know, it's a pain that's why i'll start xn4 from zero with a more standard UI.
I meant that if you try to save the mesh without adding the extension in the file name, it won't save
Ahhh... I think the problem is the path you're using. The paths should not include points. If not, it will use .asberg/Desttop/ZBrush/pooop as the extension... which is invalid. I need to change the code so it allows points in the path.
Yep, i'm trying to figure what Maya does with the vertex normals when it finds a had edge. I'm pretty sure it's applying some kind of normal threshold based on the face's angle.
Hi everyone, I'm a long time lurker first time poster.
I have have also noticed the way Maya deals with hard edges in surface transfer.
From what I can tell what it does is ray cast as if the edge was soft. BUT calculates the difference between the highpoly normal and the lowpoly, hard normal not the ray direction. That way the shading is correct.
I have never used anything else that works this way but I think it would be very useful as an option in xnormal as it can help make hard edges, almost seamless.
That's only my guess at how it works though.
Thanks for making such a great program.
Patrick.
@MM. I bet the magic is on the "Match using: Geometry normals". The other option is "Surface normals". Anybody can explain what's the difference between both, pls?
@Nome_sane. So if the vertex normal in the lowpoly is soft then I ray cast as is doing now... but if it's a split normal(hard edge) then I use the lowpoly vertex normal and not the cage's direction to ray cast?
@MM. I bet the magic is on the "Match using: Geometry normals". The other option is "Surface normals". Anybody can explain what's the difference between both, pls?
Yes it looks like that is indeed where the magic lies!!
This shows the difference between the two.
And this is a diagram of what I think is going on.
So basically to do this I believe you would ignore the low poly models normals and cast all the rays as if every edge on the low poly model was soft. But once you have found the correct point on the high poly mesh for each ray you calculate the difference between the high poly normal at that point and the original low poly normal for that ray.
But I think you can get a similar result using "harden normals" + no cage...
That should be equal to the Maya's surface normals.
"Average normals"(or "exported normals" if you already averaged it on the modelling app) + no cage = Maya's geometry normals.
I suspect what Maya is computing the tangent basis in a different way. I wonder what happens if you render object space normal maps instead of tangent space ones.
btw, Johny sent me a model to reproduce the pixelization problem... i'm analyzing it now.... I bet is a bug in the pixel filtering process.
Replies
I don't have more examples to test, hehe!
What image do you posted? I cannot find it on this post.
Feature to load up a mask/alpha onto your highres uvs, that masks off sections of the mesh, for example a leaf texture, so that you can render a bunch of leaves down to a sinlge image, without having the quads from the texture show up, just the masked area. This should work with normals, ao, etc.
Feature to add a normal map onto your highres, that gets render out + the highres geo.
I tried that in the past, the problem is that to compute the tangent basis for a 20M poly mesh is desperately slow.
I'm investigating micro triangle displacement and prisms. Also subdivision and vector displacement maps.
In the Object/Tangent space converter tool I would love to be able to simply paste the input normal map - instead of fetching it on disk. Most of the time it's a map I simply want to copy from PS, convert, and paste back so I don't always have a file for it. It's a bit annoying to have to create this texture every time on the desktop.
Nothing big, but would be handy!
(and obviously - a copy option in the output window showing the converted map!)
Thanks!
Btw, I've just uploaded the 3.15.3 Beta 5 if somebody want to test it a few.
Also added permalinks and RSS support for the web.
thx!
Sure, I like small things that can make the program better and if they can be fast and easy much better!
In xn3, you can use the command line to render various XML setting files but is a bit more difficult and slow to setup.
Do you have any eta on when xNormal v4 will be out? I'm just curious, 3.15.x works fine but it sounds like you have some really cool ideas for the next release
Once I finish the 3.15.3 I need to finish a multi-platform engine... which gonna be the basis of the 3D system for xn4. It includes node-based shaders(like UE3)... i'm designing the shader editor currently.... but I want to use OGL 3.0 which has not been releared yet(I need OGL for linux...).
And then, I can start the serious xn4 development.... which will be very fast because I've a lot of code almost done... and I have the ideas very clear... unlike xn3 which has been patched and patched to the death
They have also another problem... for Catmull-clark subdivision I need quad faces only... and to quadrangulate a n-gon can be difficult and very slow.
I try with spec map, but nothing
the slider change the intensity of all the mesh. I wondered if it was possible to change intensity on certain zone of my textures?
Thanks for the tips!
About the strange waves there... can you post some screenshots with the cage, map settings, lowpoly/highpoly settings and alignment? I suspect is due to something related with the cage's faces.
A gas station... a city scape... a crossroad with semaphores... a building? ... and ... any volunteer, pls ?
I think that as soon as you want to go for such objects (cars, and heavy real-life macinery in general) you really need some sort of accurate reflection going on, otherwise they would look alot like toys.
You also need to kill all the yellow highlights on the lambo shadow side. If this side is shadowed, then that means no direct light hits it. Hence these bright edges shouldn't be bright at all
However! the yellow bounce from the lambo to the nypd car is absolutely fantastic looking. Or maybe you faked that with a smart trilght setup?
Last details : with shadows this dark, the shadowed side of the dark should be much darker (except for the bright yellow bounce obviously)
You need a cleaner ground texture btw :P
All in one, awesome stuff as usual!!
I just wish my computer could display your screenspace AO effect!
Yep hehe.. the scene was aimed for the realtime ray tracing driver.
Nope. It's realtime photon mapping from the DX10 renderer.
Yep, the "ground texture" is really the grid... and it's light-matte by default.
ps: An update...
Btw, the next week i'm gonna upload the RC1 with a lot of changes
here are the results compared to Maya2008 which seems to make a little better normal map than xnormal. i used a simple rounded edge cube for testing.
you can download the test mesh from here:
http://www.megaupload.com/?d=WAHA5HBE
Here you go, crazy mash up of screen shots:
Tried using the cage but it gave the same errors. Here's the low and high in the 3d viewer and a screen of the cage.
I guess xNormal 4 will have resizable window? Taking the screenshots of the settings was a bit of a pain since I had to take a screenshot, scroll a bit to the right, take another screenshot etc etc
Btw, if you click "Save settings" and then cancel, the window that pops up says "Settings saved correctly" even though you canceled
Also, unless you type in .sbm or .obm when saving the meshes in the 3d viewer, it seems it gives a "Can't find plugin" error message and closes the 3d viewer.
Well, usually you need to bevel the hard edges to get good results.
Cage on the left image is not set well... it has to cover completely the highpoly model... and I see three spots uncovered by the middle... also you need to extrude a bit more than that to avoid numerical stability problems.
Btw... how many triangles are you using in that "lowpoly" mesh? I see it too dense, hehe!
Yep, but xn3 has a resizeable window already... but you need to use the OGL or DX10 graphics driver, not the DX9 one.
That's cuz it's SBM and OVB
Better don't add the extension, just use the name... the program will put the extension based on the selected file filter.
if i use harden normal it breaks the smoothing group in the mesh. thats never good since it breaks up the normal map along the hard edges because of the missed area.
maya gives comparatively better normal map without any bevel edges, it seems to compensate for the default vertex smoothing where else xnormal isnt is only doing the compensation pertial. i also tried the averages normal(which is similar to my exported normals since i exported the low mesh in one smoothing group)
beveling edges is not a good option for me at the moment.
Haven't tried harden normals no. Tried both cage and ray distance and they produce the same result.
It's not the beveled edges that I'm concerned about, it's the tubes that are very square (they basically look like a low resolution pixelated line that has been resized and blurred a couple of times) when rendered with xNormal but look fine when generated with Zbrush (the area circled in red in the image posted earlier). Here's the area I'm talking about:
This is just a test case so please ignore the denseness of the lowpoly (I do know how do it properly, just a bit lazy in this case since I was playing around with Zbrush at the same time as testing xNormal :poly122: ). I did try and extend the cage so that it covered the whole mesh and it still produced those somewhat weird results.
I mean the main user interface where you set all the baking options, high/low density meshes etc. Is that resizable?
I meant that if you try to save the mesh without adding the extension in the file name, it won't save. For example, if I click "Save mesh" and type in "lowpoly" and hit enter it won't save and give the error I mentioned earlier (missing plugin blah blah). If I type in "lowpoly.sbm" it works. Maybe you could have it so that it automatically adds the file extension that you picked from the drop down list? See image below for example:
This is all done in 3.15.3 Beta 7 by the way.
yea object space works great, but UE3 we have dont support that and besides we would have to make unique UV for the entire mesh to use object space.
theoretically tangent space should give same results or close enough.
Yep, i'm trying to figure what Maya does with the vertex normals when it finds a had edge. I'm pretty sure it's applying some kind of normal threshold based on the face's angle. Can you post a screenshot of the Maya's normal map options regarding this, pls?
Ah hehe! Nope, it's not. You need to use the scrollbar... and I know, it's a pain that's why i'll start xn4 from zero with a more standard UI.
Ahhh... I think the problem is the path you're using. The paths should not include points. If not, it will use .asberg/Desttop/ZBrush/pooop as the extension... which is invalid. I need to change the code so it allows points in the path.
try it yourself with that mesh.
Hi everyone, I'm a long time lurker first time poster.
I have have also noticed the way Maya deals with hard edges in surface transfer.
From what I can tell what it does is ray cast as if the edge was soft. BUT calculates the difference between the highpoly normal and the lowpoly, hard normal not the ray direction. That way the shading is correct.
I have never used anything else that works this way but I think it would be very useful as an option in xnormal as it can help make hard edges, almost seamless.
That's only my guess at how it works though.
Thanks for making such a great program.
Patrick.
@MM. I bet the magic is on the "Match using: Geometry normals". The other option is "Surface normals". Anybody can explain what's the difference between both, pls?
@Nome_sane. So if the vertex normal in the lowpoly is soft then I ray cast as is doing now... but if it's a split normal(hard edge) then I use the lowpoly vertex normal and not the cage's direction to ray cast?
Yes it looks like that is indeed where the magic lies!!
This shows the difference between the two.
And this is a diagram of what I think is going on.
So basically to do this I believe you would ignore the low poly models normals and cast all the rays as if every edge on the low poly model was soft. But once you have found the correct point on the high poly mesh for each ray you calculate the difference between the high poly normal at that point and the original low poly normal for that ray.
That should be equal to the Maya's surface normals.
"Average normals"(or "exported normals" if you already averaged it on the modelling app) + no cage = Maya's geometry normals.
I suspect what Maya is computing the tangent basis in a different way. I wonder what happens if you render object space normal maps instead of tangent space ones.
btw, Johny sent me a model to reproduce the pixelization problem... i'm analyzing it now.... I bet is a bug in the pixel filtering process.