Hi I have seen the awesome videos of tessellation enabled environments with direct x 11 , tough my question is what does it need to achieve those reliefs? A normal parallax map or there is a new entry in the subject like a tessellation map or what?
I'm not really sure if I understand your question, but for us artists all we need is a height map in the alpha channel of the normal map, the engine / shader does the rest.
isnt this vector displacement the same as normal map?
similar ideas but not the same thing. A normal map only going to give you the direction, not the distance to displace.
Out of interest to those who have experience with the subject, is the displacement storable in the magnitude of the vector? kind of like a bent normal map.
Out of interest to those who have experience with the subject, is the displacement storable in the magnitude of the vector? kind of like a bent normal map.
hmmm you would need to add two steps in order to do that, first get the length ( the length would be the magnitude of the displacement) of the vector (for now called n, n R^3) by calculating |n| and then calculate your normalized normal vector by dividing it with |n| again ( n0= n/|n| ) I guess it would be better for the performance to just store it in a texture :poly121:
e:// on the other hand you would save memory... I dont know does anybody of you know if this is applicable or if it is used anywhere?
HAL, what you say sounds a bit weird, in the end you want
position + displacement
why would you need to mess with the vector at all? just like r_fletch_r said you can use the magnitude of the normal just as is. It's mostly a matter of precision, but essentially your normal-map stores "direction + length".
Hm then I got something wrong, I thought that the normal maps vectors are normalized?!
When they are what you say they are, sure both of you are right sry for me messing things up here XD
and yeah you can get that displacement then
Yes, but if you didn't normalise them and instead stored a displacement value in the magnitude of the vector. You would have direction and magnitude. It doesnt need to be normalised if its not being used for lighting.
Id say so too, otherwise we'd be seeing Displacement all over the shop.
Specter: max supports rendering those maps in mentalray with a plugin written by wayne robson. It was called Psycho Core, Wayne stopped distributing it becuase of the amount of support requests people were sending him (it was free).
Tesselation is just the division of faces. It can be used for a few things. displacement being one of them
What i wonder is how these things are calculated. can they even be generated between arbiary meshes? Its very hard to imagine how.
I mean for a mesh sculpted from a base it would I imagine be relatively simple to work out the transformation.. infact you probably allready have the information in memory on a per vertex basis... but how the hell would it work between arbitary meshes.
While on topic - anyone knows of a game engine (or demo environment) letting us play with that ? I think I remember marmoset having the option to toggle parallax on and off, but is it actually fetching the height data somewhere, or is it just guess-timating from the normalmap ?
Marmo loads the displacement from normal map alpha. Real displacement will be in the next toolbag release, provided you have the proper setup to run it(dx11 card on a supported OS like win7/vista).
I am using the November 2010 version of Unreal and the material editor now has the options for "Displacement" and "Tessellation Factors." There is also an option at the bottom to set the type of tessellation, but you need DX11 to make it work. I don't have a DX11 card so I can't test it. Anyone want to try it? I am sure the February version of UDK has added more features to it.
correct me if i am wrong, but the cry engine is not freeware open source yet like UDK is right? Which leads me to ask if the other favored engines like udk unreal engine and marmoset has this feature in it.
i believe this will take away the retopology workflow for good if we can just use our lores base cages as the final mesh. awesome..
You can get Sandbox 3 if you have Crysis 2, otherwise you'll have to wait til August i believe before you'll see any kind of UDK type release for Cryengine 3.
these images show firstly, the material setup used, and secondly it's effect. it tesselates the mesh based on camera distance (if you just use a constant2vector node, the mesh will be permanently tesselated, which is bad for performance). the alpha channel in the normalmap just housed a regular grayscale displacement map.
now... if i'm looking at the material input nodes, could the world position offset node be used for the vector displacement map? or rather... could you use the RGB channels for the vector map, and the alpha channel for displacement, and simply plug RGB into world position offset, and alpha into displacement? or is that not how it works?
@almighty gir: are you using a vector displacement map for this? Seeing the maps you've plugged, it doesn't look like a vector displacement map, like the ones generated inside mudbox.
wow... i don't think i could have been any more clear.
"the alpha channel in the normalmap just housed a regular grayscale displacement map."
i generated the displacement map in xnormal, i'm currently unaware of how to render out vector displacement maps, if i could, i'd be experimenting already. but at this point i'm focusing on getting my art good, and learning the tech later.
i see, does udk support vector displacement maps though.. i can't tell if the one from the video i posted above is a vector displacement or a regular grayscale one. Sorry for the confusions.
It's not using one atm. I just applied a PN-triangle tessellation on my mesh and it cracks some times at uv seams and smoothing groups. The mesh I am using is part of a car that I planned on using Tessellation on instead of normal maps. Epic games has acknowledged the problem on their UDN page but gave no information on how to correct it.
Here's a picture demonstrating the problem. The sides of the "wheel's" crack open. I know this thing wasn't designed for tessellation. But I took the high resolution bumper I use for baking and brought it into udk and it cracked at uv seams and smoothing groups. I don't have a picture since I am at school. But the one I posted above should demonstrate what I'm talking about.
It's not using one atm. I just applied a PN-triangle tessellation on my mesh and it cracks some times at uv seams and smoothing groups. The mesh I am using is part of a car that I planned on using Tessellation on instead of normal maps. Epic games has acknowledged the problem on their UDN page but gave no information on how to correct it.
Here's a picture demonstrating the problem. The sides of the "wheel's" crack open. I know this thing wasn't designed for tessellation. But I took the high resolution bumper I use for baking and brought it into udk and it cracked at uv seams and smoothing groups. I don't have a picture since I am at school. But the one I posted above should demonstrate what I'm talking about.
Edit: Seriously though, I don't think there is any solution to your problem, other than doing something to your model and the UV's and smoothing groups.
It's not using one atm. I just applied a PN-triangle tessellation on my mesh and it cracks some times at uv seams and smoothing groups. The mesh I am using is part of a car that I planned on using Tessellation on instead of normal maps. Epic games has acknowledged the problem on their UDN page but gave no information on how to correct it.
Here's a picture demonstrating the problem. The sides of the "wheel's" crack open. I know this thing wasn't designed for tessellation. But I took the high resolution bumper I use for baking and brought it into udk and it cracked at uv seams and smoothing groups. I don't have a picture since I am at school. But the one I posted above should demonstrate what I'm talking about.
Honestly I think its a bit counter intuitive to use displacement on an object like this, certainly just using enough geometry in an optimized fashion to get the proper curves would result in better performance than sub-dividing your model to 10,000,000 tris or whatever you need to do to get this effect.
In addition to that, displacement maps are not a replacement to normal maps. You will still need normal maps, especially in the distance where LODing on your displacement will mean the loss of important details. So when you think about it that way, you need to use a normal map *anyway* you're better off just making a nice looking lowpoly with normals.
Just use 2x the tricount you normally would, i'm sure you will get a very nice and very round result, that will still run better than slapping displacement on an object like this, and of course, cause less trouble.
EQ is right, you really won't gain anything from using tessellation on hard surfaces. Also you cannot use a displacement instead of a normal map, they have to be used together. Displacement doesn't affect lighting only shadowing and silhouette so you still need a normal map to get per-pixel lighting changes.
Also Pn cracks along UV seams and smoothing group seams unless you can bake your heightmap using PN tessellation (not sure of a baker out there that does this).
Well, no, I didn't inted on giving it a displacement map. Honestly what I was going to do was just use the first level of subdivision from Turbosmooth of my hi resolution model.
It looks like this (old picture sorry). It gives me more than enough polygons to give it a nice smooth silhouette. I imported the car with it's smoothing groups and it cracks at them. The cracks aren't noticeably big, but can be seen if you are specifically looking at them?
-edit- This picture does now show the tessellated version. It doesn't even have uv's.
By the way, the tessellated car I posted up there was this model.
I figured I could just skip the normal map since it wouldn't provide any useful information since there was more than enough polygons to show the detail.
put the seams on areas that have normals facing in the same direction (flat areas) and hope for the best. There isn't a solution for this with PN-tesselation right now (unless you tag your geometry, but udk doesn't support that). Dunno what kind crytek are using though.
ps vector displacement probably isn't going to get popular in games ever (except for flat surfaces?), since you have to uv map your highpoly to match your low poly's uvs exactly.
Sorry I also meant to mention that Pn also doesn't affect lighting. There really is no benefit to using it for a hard surface like this, the geometry it creates is way more messy than turbosmooth and doesnt work like SubD's anyway, it overshoots angles, creates cracks, etc....
now... if i'm looking at the material input nodes, could the world position offset node be used for the vector displacement map? or rather... could you use the RGB channels for the vector map, and the alpha channel for displacement, and simply plug RGB into world position offset, and alpha into displacement? or is that not how it works?
could EQ or Jordan maybe help with this? also, what (in your opinions) are the most optimal settings in xnormal (or the app of your choice) for generating your hightmaps?
Replies
But yes, you do need a dx11 graphic card.
isnt this vector displacement the same as normal map?
Out of interest to those who have experience with the subject, is the displacement storable in the magnitude of the vector? kind of like a bent normal map.
hmmm you would need to add two steps in order to do that, first get the length ( the length would be the magnitude of the displacement) of the vector (for now called n, n R^3) by calculating |n| and then calculate your normalized normal vector by dividing it with |n| again ( n0= n/|n| ) I guess it would be better for the performance to just store it in a texture :poly121:
e:// on the other hand you would save memory... I dont know does anybody of you know if this is applicable or if it is used anywhere?
position + displacement
why would you need to mess with the vector at all? just like r_fletch_r said you can use the magnitude of the normal just as is. It's mostly a matter of precision, but essentially your normal-map stores "direction + length".
When they are what you say they are, sure both of you are right sry for me messing things up here XD
and yeah you can get that displacement then
Yes, but if you didn't normalise them and instead stored a displacement value in the magnitude of the vector. You would have direction and magnitude. It doesnt need to be normalised if its not being used for lighting.
aside from that off the top of my head Modo, 3D Coat, X Normal
to render out Vector Displacement Maps.
Specter: max supports rendering those maps in mentalray with a plugin written by wayne robson. It was called Psycho Core, Wayne stopped distributing it becuase of the amount of support requests people were sending him (it was free).
Normal maps are not vector maps
Vector maps have an extra info on distance of displacement?
Tessellation will need vector maps?
yes.
Tesselation is just the division of faces. It can be used for a few things. displacement being one of them
What i wonder is how these things are calculated. can they even be generated between arbiary meshes? Its very hard to imagine how.
I mean for a mesh sculpted from a base it would I imagine be relatively simple to work out the transformation.. infact you probably allready have the information in memory on a per vertex basis... but how the hell would it work between arbitary meshes.
correct me if i am wrong, but the cry engine is not freeware open source yet like UDK is right? Which leads me to ask if the other favored engines like udk unreal engine and marmoset has this feature in it.
i believe this will take away the retopology workflow for good if we can just use our lores base cages as the final mesh. awesome..
these images show firstly, the material setup used, and secondly it's effect. it tesselates the mesh based on camera distance (if you just use a constant2vector node, the mesh will be permanently tesselated, which is bad for performance). the alpha channel in the normalmap just housed a regular grayscale displacement map.
now... if i'm looking at the material input nodes, could the world position offset node be used for the vector displacement map? or rather... could you use the RGB channels for the vector map, and the alpha channel for displacement, and simply plug RGB into world position offset, and alpha into displacement? or is that not how it works?
"the alpha channel in the normalmap just housed a regular grayscale displacement map."
i generated the displacement map in xnormal, i'm currently unaware of how to render out vector displacement maps, if i could, i'd be experimenting already. but at this point i'm focusing on getting my art good, and learning the tech later.
Here's a picture demonstrating the problem. The sides of the "wheel's" crack open. I know this thing wasn't designed for tessellation. But I took the high resolution bumper I use for baking and brought it into udk and it cracked at uv seams and smoothing groups. I don't have a picture since I am at school. But the one I posted above should demonstrate what I'm talking about.
Edit: Seriously though, I don't think there is any solution to your problem, other than doing something to your model and the UV's and smoothing groups.
Honestly I think its a bit counter intuitive to use displacement on an object like this, certainly just using enough geometry in an optimized fashion to get the proper curves would result in better performance than sub-dividing your model to 10,000,000 tris or whatever you need to do to get this effect.
In addition to that, displacement maps are not a replacement to normal maps. You will still need normal maps, especially in the distance where LODing on your displacement will mean the loss of important details. So when you think about it that way, you need to use a normal map *anyway* you're better off just making a nice looking lowpoly with normals.
Just use 2x the tricount you normally would, i'm sure you will get a very nice and very round result, that will still run better than slapping displacement on an object like this, and of course, cause less trouble.
Also Pn cracks along UV seams and smoothing group seams unless you can bake your heightmap using PN tessellation (not sure of a baker out there that does this).
It looks like this (old picture sorry). It gives me more than enough polygons to give it a nice smooth silhouette. I imported the car with it's smoothing groups and it cracks at them. The cracks aren't noticeably big, but can be seen if you are specifically looking at them?
-edit- This picture does now show the tessellated version. It doesn't even have uv's.
By the way, the tessellated car I posted up there was this model.
I figured I could just skip the normal map since it wouldn't provide any useful information since there was more than enough polygons to show the detail.
ps vector displacement probably isn't going to get popular in games ever (except for flat surfaces?), since you have to uv map your highpoly to match your low poly's uvs exactly.
I think you should do a bit more research on standard asset creation workflows, as this seems a bit half-baked.
could EQ or Jordan maybe help with this? also, what (in your opinions) are the most optimal settings in xnormal (or the app of your choice) for generating your hightmaps?