Home Technical Talk

Creating a very specific type of rock...

polycounter lvl 19
Offline / Send Message
adam polycounter lvl 19
...that covers a large amount of space, in the shortest amount of time.


Hey everyone,

I am trying to create a very specific type of rock. IMO, 90% of rocks in videogames look like blobby, messy silhouettes with a decent rock material applied to it. For this type of rock, not only does the material need to be convincing but so does its form and silhouette.

The kicker, is I'd like to figure out a way to do this in the shortest amount of time.

First, the rock in question:
rock_help.jpg


This rock is very flat in a lot of areas, blasted, with intermittent jagged or sharp areas created from smaller faceted rock forms.

Here's something I've sketched up to better show the rock piece as it would look in-game, in my head. This piece I would then rotate around to create the cliff face. Assuming I am thinking smart about this.

rock_help2.jpg

I have 3 ideas for how to go about creating this that I wanted to run by and get everyones thoughts on. Remember, time is important. The shorter amount of time, the better. This is for a first or third person game.

Idea #1:

  1. I create a single highpoly mesh.
  2. Bake to in-game mesh.
  3. Copy, rotate and crash this mesh together to make these cliff faces.
Con to this idea: The highpoly will eat up a ton of time.


Idea #2:
  1. I create 1 or 2 smaller highpoly rocks.
  2. These are duplicated, rotated and crashed together in their highpoly state.
  3. I take the result of Step #2 and bake it to an in-game mesh.
  4. Copy, rotate and crash the in-game mesh together to make the cliff faces.
Con to this idea: I may not get large faceted faces out of this, since I am using 'smaller' rock meshes in the highpoly.


Idea #3:
  1. I make a tiling highpoly mesh
  2. I bake this down to a displacement map.
  3. I create a basemesh with uvs, using the disp (not as a tile but cut uvs to spearate parts of it and position them differently)
  4. I sub-divide the basemesh and apply the displacement map.
  5. Take this mesh in to Mudbox and fix up any seams + finalize details.
  6. I bake this to an in-game/render mesh.
  7. Copy, rotate and crash the in-game mesh together to make the cliff faces.
Con to this idea: This whole process is pretty much new to me. When using displacements to create rocks in the past I was simply using a noise map as my displacement (re: the tutorials that were shooting around here for a while on creating stones using displacements).


On paper, #3 seems like the fastest/best bang for my buck - even though I haven't really attempted this before.

Anyone have any other ideas for creating the above style of rock in a short amount of time? Keep in mind i

Replies

  • wailingmonkey
    Options
    Offline / Send Message
    I'd probably do a derivative of option #2 (see image)

    But I'd do up 6 or so fully detailed (not just face) sections
    like I've colorized in all the differing heights. I'd lean towards
    doing it in 3d-Coat as voxels just so I could use the retopo tools,
    but you could just keep them as hipoly .obj's as well in either Mud
    or Z (or even do a polygon reference retopo and import into 3DC) --
    surface noise function in Z being a big temptation as well.

    Once hipoly modeled, I'd just arrange them in 'clumps' and retopo and
    bake/texture. Prolly mess with transforming/scaling/rotating the 6
    rock 'tools' for each new rock-face final iteration.

    Speed for the 6 'tools' would probably take the longest, but cookie-cut
    after that...
  • Autocon
    Options
    Offline / Send Message
    Autocon polycounter lvl 15
    I have actually been trying to go about modeling cliff/rock faces much like this for the last 2 weeks. Taking a look at a lot of games for inspiration on how they went about doing it there seem to be 2 main ones. Lots of different small/large pieces much like wailingmonkey showed and using tiling textures. Jam them all into eachother to not have any "tiling" look. Then there is the 1 HP unique rocks and all smashed into each other and rotated. This seems to be what epic did.

    I personally have been trying to this very same thing in a very similar style to your pictures, not as stylized as your drawing though, without using a HP source for the last week or 2 with no real luck. Then again that is due to not having experience really with cliff/rock faces. Things either look too blobbly like a lot of in game rocks are which I dont want or things look like they dont have any smoothing groups.

    Defiantly going to be following this thread for any pointers I can pick up.
  • adam
    Options
    Offline / Send Message
    adam polycounter lvl 19
    Dropping this in here so I remember to look it over again tomorrow for ideas:
    http://www.philipk.net/tutorials/modular_rocks/modular_rocks.html
  • Eric Chadwick
  • Xoliul
    Options
    Offline / Send Message
    Xoliul polycounter lvl 14
    Idea 1 is like Epic's rock mesh for the GDC demo level. Which i must say, is the best rock asset I have ever seen, you should check it out if you haven't already.
  • adam
    Options
    Offline / Send Message
    adam polycounter lvl 19
    Yeah I've seen that, and up until this specific rock I have built mine this way. The time constraint, however, makes me think #1 isn't the best choice.
  • Mark Dygert
    Options
    Offline / Send Message
    If you haven't stumbled across these yet they might be helpful, I forget where I found them but I managed to bookmark them at some point, probably just googling around.
    http://stephenjameson.com/tutorials/tiling-rock-tutorial/
    http://picasaweb.google.com/TheEnolaJay/ZBrush3PolyPaintingTutorialI#5325724297275475186

    Personally I would probably go with your last option, it would probably be a lot of trial, error and discovery but probably going to give the best results and open the most doors for applying the techniques to other things in the future.


    Also the rock tutorial Adam talked about is probably this one from Sasha Henrichs:
    http://saschahenrichs.blogspot.com/2010/03/3dsmax-environment-modeling-1.html

    Which inspired Alessandro Ardolino to automate the process with this maxscript:
    http://www.scriptspot.com/3ds-max/scripts/rock-generator
  • adam
    Options
    Offline / Send Message
    adam polycounter lvl 19
    Vig - this tutorial here has me thinking I could nail #1 now in the time I have. Still, using Mudbox...
  • kat
    Options
    Offline / Send Message
    kat polycounter lvl 17
    adam... the rock you're trying to emulate and the rock you've sketched are two different *types*. I know that sounds obvious to say but you'd need to use a different approaches to modeling each *structure*.

    The quickest way to model what you sketched is to displace a grayscale heightmap onto a sub divided mesh and then just tweak the results, you'd then have a base mesh you could sculpt or use as is and apply a decent normal map over the top of, all in a matter of minutes.
  • Slum
    Options
    Offline / Send Message
    Slum polycounter lvl 18
    adam wrote: »
    Vig - this tutorial here has me thinking I could nail #1 now in the time I have. Still, using Mudbox...

    There's a lot of wasted time in that tutorial. All that polypainting and stuff, for a resulting texture that is barely more than a flat color with some texture. You could do the same thing in very little time in photoshop. People have a tendency to jump straight into zbrush for everything, when really there are equally viable ways to get the same result in photoshop in a fraction of the time.
  • adam
    Options
    Offline / Send Message
    adam polycounter lvl 19
    No, I'm not going to poly paint at all, in fact. I'm more interested in his rock shapes and form. To me, this is one of the better in-game rocks I have seen.
  • Em.
    Options
    Offline / Send Message
    Em. polycounter lvl 17
    Vig, thank you sooo much for posting those links! The tutorial/script are so awesome, I tooled around with the generator during lunch and I can't believe how easy/robust it is to use and how great the results are. Highly suggested to check out for those who haven't.

    Side note, I know you're using Mudbox Adam, but have you seen the Zbrush tutorials that the guys that worked on Uncharted made? They have a really great approach to making tileable rock textures.
    http://www.youtube.com/user/rooz3d#p/u/3/oAGLjdiZ6Ug

    http://www.zbrushcentral.com/showthread.php?t=79141&page=1&pp=15


    Note: The Sasha Henrichs tutorial and Alessandro Ardolino script to be clear.
  • cryrid
    Options
    Offline / Send Message
    cryrid interpolator
    You could do the same thing in very little time in photoshop. People have a tendency to jump straight into zbrush for everything, when really there are equally viable ways to get the same result in photoshop in a fraction of the time.
    Given the masks, the brush settings being used, and the amount of time needed to explain things in a picture tutorial, I really don't think the polypainting consumed as much time as your post makes it sound. Mask, spray, invert, spray, etc. Meanwhile with Photoshop you'd have the whole new joy of trying to make the sprays seamless across the UV seams (unless you enter 3d mode, which is a complete pain and still won't give you the high-poly as a reference or the various cavity masks). It's not so much 'jumping straight into zbrush for everything', rather he already made the mesh in it and can then quickly paint the thing with his knowledge of the toolset to his desired result in a similar manner of time.
  • Mark Dygert
    Options
    Offline / Send Message
    Em. wrote: »
    Vig, thank you sooo much for posting those links!
    Yea glad they came in handy.

    Also check out his Stone Wall/Floor script that expands on the same ideas.
    http://www.scriptspot.com/3ds-max/scripts/stone-placement-tools
  • Irreal
    Options
    Offline / Send Message
    Irreal polycounter lvl 10
    Interesting. A few of us at work have all been trying similar approaches to modelling rock structures.

    Method 1: Our old approach would be to have 1 tiling rock texture that would be applied to various meshes of arbitrary shapes and sizes.

    Pros:- Having just the one texture means you don't blow your texture budget.

    Cons:- mapping anything that is remotely complex in shape is a chore. If you model your interesting rock shape and try to match a pre-made texture the results were less than satisfying. A lot of what we had was very blobby looking. Not good.

    Method 2: Model 3-4 unique high res sculpt in your package of choice. Polypaint it up. Decimate down and bake your polypaint in xnormal.

    Pros:- The exact rock shapes you require (highly dependent on skill level in zbrush :/). Nice baked ambient occlusion for use in your diffuse texture. No seams!

    Cons:- In my case I may have blown my texture budget. :( Looking at the epic gdc map you can see that they have used 2048 tiling diffuse and normal maps for 3 rock meshes. Not sure i could get away with this unless i factor these rock faces into my budget right from the start.

    Method 3: Make a tilable rock texture. Apply to a plane and either sculpt or cut in your detail to bring out the forms. (Philk method)

    Pros:- Relatively quick to make. Good results.

    Cons:- You have a mesh with only 1 usable side (a plane) as opposed to Method 2. Basically a tilable texture with a bit more 3d oommph. You still need to make a few variations to avoid repetitiveness. I'm not against this but once again I'd need to factor this into my budget.

    So, in my opinion Method 2 would give the best results. The hardest part was nailing the workflow and getting zbrush to give me the results i want (but thats a skill thing).
  • Irreal
    Options
    Offline / Send Message
    Irreal polycounter lvl 10
    Just took another look at the Epic GDC demo in the UDK and it looks like they are only using 1 main rock asset for the main surrounding cliff faces with lots of scaling and rotation going on with very nice results.

    Would be good to get Bobby Rice's opinion on all of this. His rocks are pretty awesome looking and he seems to be well versed with all the above techniques.
  • aphexx
    Options
    Offline / Send Message
    aphexx polycounter lvl 12
    hi all,
    i just tried a modeling technique where you put supporting edges into your lowpoly, to apply one smoothinggroup afterwards..(not optimized the mesh afterwards though) then i applied tileable stone textures on them.
    but i'm not really statisfied..lighting is crap without shadows.

    @ topic: most of the time you will need to create tileable stonemaps in games, at least, when you're into open world games.
    because the unique mapped meshes have a limitation of size, since the pixels get very large, when the prop is scaled. therefore you need tiles, to keep a reasonable texelsize.
    so the cons about tileables are: seams, not very defined and blotchy geometry, therfore not readable.

    so here i tried a technique, which should give the model a more defined and readable look by using supporting edges around meshcorners.

    conclusion: when the mesh is optimized, this modeling techique can work,you will get slighty rounded corners.which can be made more solid, the more near you place the supporting edges to your corner edge.
    absolutely inevitable is ambient occlusion shadow, which will give your model the depth it needs to read it well. all bigger engines will give you realtime AO shadows ingame.
    if not available, a workaround could be dirtmaps in mapchannel 2 to fake AO. but thats much work.

    btw. if you want to test my maps, or use them, then down them here: http://dl.dropbox.com/u/6300026/Stone_Tests.rar
    have phun, i share them for free. give credit to me, if you use them, although the specs are very crappy.

    here the wireframe.
    stone_00.jpg



    stone_01.jpg
    stone_02.jpg
    stone_03.jpg
    stone_04.jpg
    stone_05.jpg
  • Shogun3d
    Options
    Offline / Send Message
    Shogun3d polycounter lvl 12
    Sascha's method is good. I would chamfer base and corner edges 2-3 times, and vertex blend the very edge vertices up to the chamfer and fake AO with a dirt blend. If you keep smoothing tied together at base, then it should hide the lighting seams a bit better.

    Added edges and poly's is still way cheaper than unique textures.
  • Irreal
    Options
    Offline / Send Message
    Irreal polycounter lvl 10
    Cool. Looks like a similar technique to what naughty dog used on Uncharted 2. Not sure I'd use this method with a larger rock face but for rock pile variations it would be ideal.
  • aphexx
    Options
    Offline / Send Message
    aphexx polycounter lvl 12
    and to go back to your question, on how to create a rock face like you shown in the reference, adam.
    you see this rock has 2 surface structures. one very flat surface, and one jaggy type with elongated features.
    so i'd create one tileable. in the middle jagged normals, that flaten out at the sides.
    then create meshchunks like you see in your reference, and map your texture on them. then go for the supporting edges, to create nice transitions from one flat surface to another.
  • Bobby J Rice 3rd
    Hey Adam,

    The above references are a great start and I think the solution can be abit more simple than you might think. I would go with a sort of blend technique between UDK and God of War 3. In UDK's main jungle rock it seems like it started in Max(any modeling package) as a basic block out and was further sculpted/redefined in Zbrush. At SCEA, I believe they create rocks the UDK way but the initial base model, prior to sculpt, is far more refined and modeled out.

    I could be wrong, but below is how i would do it.



    • I would project one of those reference photos to a evenly quaded plane in Max. (Or a collage of reference photos with readable low contrast rock forms)(I would try and think about big readable less noisy shapes in your references.)
    • Trace the rock. Cut, push and pull the verts to the shape of the rock wall. Bevel your edges, and allocate your quads evenly. Try creating 2 to 4 variations from different rock images. (this would basically look like a quaded plane with rock shapes popping out)
    • Take the traced shapes and bend, mold and shape into 2 or 3 enclosed or partially enclosed cliff instances.
    • Once the shape is realistic, clean and identifiable, zbrush each of the forms to bring out more natural surface detail. I like using the Trim Brushes like "TrimDynamic" to mold out the corners, recesses and edges.
    • Maybe use a few sculptural shaped alphas created from flat rock sculpts and deformations from tiling rock photo's. (msrgbZGrabber type stuff)
    • After your happy with the shapes, make a low poly, Pelt-unwrap UV's and bake. (perhaps the quickest method of getting a low is decimating a version of the high poly in Zbrush or using a lower iteration of the high with optimization)
    The thing i like about your references is that if you make 2 versions with those proportions, you could potentially fill a 1024 or 2048 with little UV waste.


    Another idea would be to repeat the above but instead of baking from a high rez:

    • take the molded Max model into zbrush, teccilate slightly and subtly sculpt the form.
    • then bring back into Max, optimize polys, add Bevels
    • Then apply UV's and add a tiling material to the geo. Perhaps blend in moss or snow on the ledged area's.
    The only downside (that i can see) ,for this 2nd method, is that your geo is likely more expensive and the shader becomes a little more heavy than a single "one off". But, you do get full texel density control. (if your UV's are even)

    Either way, just cram, callage and arrange the rocks how ever you want in game. If you can afford blending, i would blend as much as possible.

    I hope that helps.
  • Peris
    Options
    Offline / Send Message
    Peris polycounter lvl 17
    your hipoly doesnt need to take up much time, create 2-3 pieces and then copy paste scale mirror and rotate them a few times to create a large complex looking hipoly mesh.
Sign In or Register to comment.