Hey! Today, I finished my newest tut.
http://vimeo.com/21600799
This tut will go over a quick and effective method of producing realistic broken chunks of concrete.
In addition to the video, I also uploaded an example diffuse psd for your guys to dissect. Hope you guys like it!
http://www.megaupload.com/?d=F1GWBGRI
Replies
Sharing is caring!:)
Do you know any other free alternatives like PolygonCruncher? I think you mentioned sharing another in your video.
Decent results replicating this in Blender! It is effectively the same as Sascha Henrichs' procedural stone method, but you restrict / smooth displacement along the third axis. Procedural stuff like this definitely has the potential to save a ton of time, especially when you need a lot of rubble chunks... Sascha Henrichs' method is followed by sculpting a bit in Mudbox, which could always be done to give the procedural concrete block more character.
XenoKratios: the free alternative is MeshLab - look under Filters>Remeshing>Quadratic Edge Collapse Decimation.
not soo familiar with the advanced stuff so this might take some time :]
but good to know that the results are similar
nice tutorial btw
edit: forgot to resize the cloud texture the second time
anyway, just a test
... from awesome guys , who are also using it in the industry.
More of this would be amazing sir!
Thanks for tips!
this better?
Thanks man!
(edit)
To expand on that: certainly if you're baking from a highpoly asset with displacement maps, just edit the displacement to get deeper cracks. This way you can rebake and have the normalmap counter your lowpoly's smoothing perfectly.
If your using a max 2010 or higher there is a quicker way to get the basic shape modeled.
Draw a spline representing the basic shape of the chunk. (Make sure its closed)
Put a shell modifier on it.
Put a Quadify modifer ontop.
Set Quad size.
That'll give you a Even Quad mesh thats really easy to re shape. Also the Material ID overrides in the shell modifier can be handy for restricting the displacements to the right areas. The result isnt perfect but its much quicker than doing it by hand
Also Polycrucher is now part of Max (from 2009 with subscription pack and in all new releases)
Its now a modifer called 'Pro Optimise'
Also know that you can pass selection (and soft select) up the stack also so your displacements are only operating in certain areas, this way you can add Z to the broken edges without having to worry about it effecting the top.
For example:
In poly mode, do a "select by angle" to quickly grab the sides of your box.
With the modifier still in poly mode and the polys selected apply the noise modifier.
This works with soft select turned on also for a smoother transition.
Also know that you can separate the different pieces by Material ID (at the super low poly stage), and then use the "Mesh Select" modifier to select by Mat ID when you need to. That way you can still easily select all the polys in that mat ID regardless of how dense the mesh is.
Separating it out by material ID's is great for when you have layers to the ground, asphalt over crushed rock, over compacted sand, over topsoil, over bedrock. Each layer has their own material ID and own modifiers that operate on only that selection giving them their own unique properties.
thanks
Another really nice way to get selections like that is to use a 'vol select' modifier. Set it to faces and anything within its gizmos will be selected.
Yet again, nice work!
What do you mean, level the channels of a normal map?
Nice tutorials though, I love time savers that produce awesome results.
He meant to increase the contrast of the map to punch out the detail more.
As MightyPea pointed out it is a very bad idea to do this on baked normal maps.
The reason being is that the colour values in a normal map are very important, and relate very closely to the low poly they were baked from. if they are changed even a small amount you will start to see bad shading errors.
I have edited certain channels to lower their contrast, to make the rendered normals appear as if they are at the same intensity from any lighting angle.
I guess that is what he meant.
*A Vector is made up of 3 values. X Y Z.
*A Normal is a vector with a length of exactly 1.0 If its length isn't 1 then when shaded it wont shade predictably.
*Each Pixel in a Normal map represents a Normal using RGB instead of XYZ
We're not storing colours in the map we are storing numbers.
*In a baked normal map we are storing a normal that represents the difference between the low and the high. If the shading of the low changes or the values of the map dramatically change your shading quality will suffer.
*If you change the colour values you are in fact re orienting the normal.
When you do this the correlation between the normal map and the low poly becomes less accurate and you begin to see shading errors.
You can get away with editing to a certain degree but its not a good idea to make broad changes.
As Might Pea said, If you have the high poly in front of you then just increase the displacement value.
That way you get accurate normals that both fix the bad shading of the low poly and represent the detail for the high poly.
Also, doing it properly doesnt screw up anything if your smoothing groops are set up correctly. Since the concrete block I made is relatively dense, I am able to give it only one smoothing group without having to worry abt stretching.
Anyhow, bellow is an image that illustrates why leveling the normals channels is necisarry. The model on the bottom left has the default normal, and the model on the top right has the leveled normal. As you can see, there is not real visible stretching or shading issues, Things just seem to pop out a little more.
At the end, you mentioned you'd post a PDF of how to do the texture itself, where can we find that, or is it still to come?
http://www.megaupload.com/?d=F1GWBGRI
I always use to level my normal maps as it's an old trick that a lot of people use, but always smelled a bit fishy, now I know the technical explanation on why you should refrain from doing it.
Then again, what looks good, looks good; if you do it and you don't have any shadding erros and you even manage to get a better result like roosterMAPs screenshot, then why not.
Should go without saying, but the same does not apply to flat normal maps, messing with a normal map is only risky when the shading of a LP depends on it. It we're talking about a flat tilable normal map, the same rules don't exactly apply and you can mess with it all you want, correct me if I'm wrong.
i'm really a friend of the procedural thing, and ages ago i tried some very similar like this, except for going with displacements. (which would have done it i think)
if you like to push it forward and also create the diffuse via procedurals to have a start for the painting, you might want to check out this procedural concrete diffuse i made 2 years ago.
http://saschahenrichs.blogspot.com/2009/02/procedural-concrete-material-xx.html
you can download it. i used bercon maps, but if you want to recreate it with standart noises, it would make it easier for the people
if you want to examine it, you need this plugin for max 2010/2011 64bit.
http://dl.dropbox.com/u/6300026/BerconMaps_64_2010.dlt
the newest plugin on his site wont load the file.
i only used bumps here, so if combined with your displacement method, you could make a full procedural here!
and if some script guru has the time, it could even be packed into a cool script, like the stone script.
i'm not sure, what technique to choose for the seperation of clean and broken concrete in the diffuse. i used vertex colors here, but you could also use your first displace map as an instance for doing this i think.
the left one is the procedural, and the right one is the painted, which i tried to recreate
cool tip fletch!
quadrify modifier didnt come to my mind! modifier magic ftw
if you want to push the procedural/non destructive idea, you could even use an NGon shape (or other predefined) and put a X/Y noise onto it.
the ngon should have an interpolation step size of 1, to be not too curvy
precisely.
Sasha: Thats a great Idea. you could easily script the whole thing now.
One more advantage to Mat ID is that you can assign different materials to the different chunks.
If your selections don't need to match your materials or they are more or less flat, Vol Select should work out ok. It's also good that you bring it up because it can be used for a ton of other things too and I don't think enough people even think about it.
One more suggestion: Unwrap your base mesh before you start sub-dividing and manipulating it, that way you can paint the diffuse on your high poly model and bake that as well. Either paint it with Viewport Canvas or take it into a sculpting app. From what it looks like with Mudbox2012 you won't even need to worry about UV's on your high but zbrush users and anything else its a smart bet to unwrap it before sub-dividing.
Also know that graphite modeling tools inside of max, have some nice freeform brush tools, push/pull, flatten, pinch/spread, noise, smudge, exaggerate and shift.
If you're using 2011 and higher you can also paint scatter objects like rocks into the surface, which is great for concrete since it almost always has some kind of aggregate.
Is that Max2012 I see?
Also, you've got a fairly simple box here, but once you start working with more complicated assets, things with extrusions etc. I predict you might run into a few problems.
The reason I harp on about it so is because you regularly see people do this, only to wonder where all these smoothing errors are coming from. There's so much information out there on normalmaps, I just want to make sure this is known to everyone, as I remember doing the same thing before, and being frustrated at the results.
A question about texturing, I was wondering if anyone got some good ideas to how to texturing fluently from the edge of an uv island to another, so you don't get ugly seams, whats the best way, when they have different sizes?
I was dissecting the psd to see how diffuse was done, but still dont know how you get your edge_highlights layer.
Can you give a clue?
Thanks again !