Home General Discussion

[TUT] Large Scale Rubble Tutorial

polycounter lvl 14
Offline / Send Message
roosterMAP polycounter lvl 14
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

  • Zipfinator
    Offline / Send Message
    Zipfinator polycounter lvl 9
    Not sure this is the right section for this, but anyway it looks nice. I'll definitely watch it later today. Concrete rubble is something I've struggled with a bit but I figured it's more a problem of my lack of use of ZBrush. Perhaps that is not so.
  • kaze369
    Offline / Send Message
    kaze369 polycounter lvl 8
    cool, I'll check it out tonight.

    Sharing is caring!:)
  • XenoKratios
    Offline / Send Message
    XenoKratios polycounter lvl 12
    I loved the video, thanks for sharing sir!

    Do you know any other free alternatives like PolygonCruncher? I think you mentioned sharing another in your video.
  • Vrav
    Offline / Send Message
    Vrav polycounter lvl 11
    76822322.jpg

    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.
  • SnowInChina
    Offline / Send Message
    SnowInChina interpolator
    ha, iam right now trying to convert the technique to blender
    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

    testsb.jpg

    edit: forgot to resize the cloud texture the second time
    anyway, just a test :)
  • mike670
    Offline / Send Message
    mike670 polycounter lvl 11
    Thanks for the sweet tutorial! learned some stuff, here is what I came up with as a final result, its just one piece moved around a bunch

    rubble_small.jpg
  • Kwramm
    Offline / Send Message
    Kwramm interpolator
  • roosterMAP
    Offline / Send Message
    roosterMAP polycounter lvl 14
    You should desaturated your diffuse, and work on a better specular. Also, your normal needs work. You should level the channels of your normal map. It'll bring greater depth.
  • Poribo
    Offline / Send Message
    Poribo polycounter lvl 14
    Great tut rooster! I love learning new things.
  • XenoKratios
    Offline / Send Message
    XenoKratios polycounter lvl 12
    Great tut rooster! I love learning new things.

    ... from awesome guys :), who are also using it in the industry.

    More of this would be amazing sir!
  • mike670
    Offline / Send Message
    mike670 polycounter lvl 11
    You should desaturated your diffuse, and work on a better specular. Also, your normal needs work. You should level the channels of your normal map. It'll bring greater depth.

    Thanks for tips!

    this better?

    rubble_2.jpg
  • [HP]
    Offline / Send Message
    [HP] polycounter lvl 17
    In a world where 99.9% of the games are about destruction, I'm sure this will be useful for many!

    Thanks man! :)
  • mdeforge
    Offline / Send Message
    mdeforge polycounter lvl 14
    Wow, nice tutorial. I'll give that a shot soon.
  • Michael Knubben
    RoosterMAP: that's appallingly poor advice! Leveling your normals will make smoothing errors appear, certainly if you baked with only 1 smoothing group. The only time you should do something like this is if you baked to a flat plane.

    (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.
  • roosterMAP
    Offline / Send Message
    roosterMAP polycounter lvl 14
    ur absolutely right. dont know what i was thinking.
  • r_fletch_r
    Offline / Send Message
    r_fletch_r polycounter lvl 9
    Cool tutorial. You might be interested in Bercon Maps, its a collection of noise maps for max, way better than the originals.

    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

    spline.jpg



    Also Polycrucher is now part of Max (from 2009 with subscription pack and in all new releases)
    Its now a modifer called 'Pro Optimise'
  • Mark Dygert
    Nice tutorial, I like fletch's ideas too.

    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.
  • brandoom
    Offline / Send Message
    brandoom polycounter lvl 15
    Nice tutorial Roster,

    thanks :)
  • r_fletch_r
    Offline / Send Message
    r_fletch_r polycounter lvl 9
    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.

    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.
  • Crash
    Offline / Send Message
    Crash polycounter lvl 18
    Nice one dude.
  • Joshflighter
    Offline / Send Message
    Joshflighter polycounter lvl 9
    Congrats on making it to the home page on polycount.
    Yet again, nice work! :)
  • InMOP
    thanks man some great tips.
  • fearian
    Offline / Send Message
    fearian greentooth
    Nice! I was trying to adapt Sascha Henrichs' tutorial to stone blocks a while ago, but I couldn't get anything worthwhile, you've saved me and alot of other people alot of effort :) Much love!
  • RexM
    roosterMAP wrote: »
    You should desaturated your diffuse, and work on a better specular. Also, your normal needs work. You should level the channels of your normal map. It'll bring greater depth.

    What do you mean, level the channels of a normal map?


    Nice tutorials though, I love time savers that produce awesome results. :)
  • r_fletch_r
    Offline / Send Message
    r_fletch_r polycounter lvl 9
    RexM wrote: »
    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.
  • RexM
    The actual separate channels have no color values though, they are black and white....

    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.
  • Perfectblue
    The fountain of knowledge flows freely in this thread. Big thanks oosterMAP!
  • r_fletch_r
    Offline / Send Message
    r_fletch_r polycounter lvl 9
    RexM wrote: »
    The actual separate channels have no color values though, they are black and white....

    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.

    *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.
  • AlanSMitchell
    Offline / Send Message
    AlanSMitchell polycounter lvl 14
    love the video gonna have to try this
  • jimmypopali
    Thanks, will try this!
  • roosterMAP
    Offline / Send Message
    roosterMAP polycounter lvl 14
    On the topic of leveling normals, i'd like to add a few things. When you level the channels of a normal map, it should be done in moderation. The R and G channels should be leveled at roughly the same rate, but the B channel can be level a little further.

    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.
    model.jpg?t=1301468086
  • SurvivorX
    Great and very useful tutorial, thank you so much for sharing this! :)

    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?
  • roosterMAP
  • [HP]
    Offline / Send Message
    [HP] polycounter lvl 17
    r_fletch_r pointed out some very interesting problems that I never really thought about carefully enough in the past.
    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.
  • tanka
    Offline / Send Message
    tanka polycounter lvl 12
    Really nice tutorial. That's a really cool workflow, with pretty awesome results. I'll have to play around with it a bit.
  • aphexx
    Offline / Send Message
    aphexx polycounter lvl 12
    hey timothee, cool technique big props to you!
    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

    procedural_concrete_compare_big_02.jpg
  • aphexx
    Offline / Send Message
    aphexx polycounter lvl 12
    r_fletch_r wrote: »
    Cool tutorial. You might be interested in Bercon Maps, its a collection of noise maps for max, way better than the originals.

    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.

    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
  • r_fletch_r
    Offline / Send Message
    r_fletch_r polycounter lvl 9
    [HP] wrote: »

    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.

    precisely.

    Sasha: Thats a great Idea. you could easily script the whole thing now.
  • metalliandy
    Offline / Send Message
    metalliandy interpolator
    Nice tut! Thanks :)
  • Mark Dygert
    r_fletch_r wrote: »
    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.
    That works too. The only problem with Vol Select is that it will make straight selects on what might be a wavy line. Select by Mat ID will get you just those polys again and again wherever they might be. I don't know of a way to get the exact polys you've Vol Selected after they've been distorted?

    VolSelvsMatID.jpg


    One more advantage to Mat ID is that you can assign different materials to the different chunks.
    VolSelvsMatIDMats.jpg

    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.
  • r_fletch_r
    Offline / Send Message
    r_fletch_r polycounter lvl 9
    The reason Volume select is good is that Quadify trashes your Mat ID's. Not that i disagree, if your doing it like rooster suggested then Mat ID is totally superior

    Is that Max2012 I see?
  • Michael Knubben
    One last comment on leveling your normalmaps: If your baking solution and engine are perfectly synced, you'll be able to get away with a lot more trickery, that's for sure. You need to keep in mind this may very well not be the case, though. Have you checked to see if this gives any problems in udk for instance?
    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.
  • ConorW
    Amazing tutorial, and the scene you're working on looks great as well. Keep it up!
  • McGreed
    Offline / Send Message
    McGreed polycounter lvl 15
    Great tutorial, I tried the boulder one before, but never thought about restricting one direction to maintain a flat surface. Is a good way to get something randomly without using zbrush/mudbox.
    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?
  • Mark Dygert
    McGreed wrote: »
    Great tutorial, I tried the boulder one before, but never thought about restricting one direction to maintain a flat surface. Is a good way to get something randomly without using zbrush/mudbox.
    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?
    Creates materials for your high poly using things that let you paint on the high like viewport canvas, mudbox, brush. Then bake everything at the same time diffuse, normal and ao.
  • Slipstream
    Offline / Send Message
    Slipstream polycounter lvl 19
    Thanks for the tutorial, it's really well done!
  • McGreed
    Offline / Send Message
    McGreed polycounter lvl 15
    @Mark, Yeah, but this isn't always an option, was looking for tricks when you only have photoshop to make the textures with.
  • federico
    Very good tutorial. Thanks a lot!
    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 !
Sign In or Register to comment.