...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:
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.
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:- I create a single highpoly mesh.
- Bake to in-game mesh.
- 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:- I create 1 or 2 smaller highpoly rocks.
- These are duplicated, rotated and crashed together in their highpoly state.
- I take the result of Step #2 and bake it to an in-game mesh.
- 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:
- I make a tiling highpoly mesh
- I bake this down to a displacement map.
- 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)
- I sub-divide the basemesh and apply the displacement map.
- Take this mesh in to Mudbox and fix up any seams + finalize details.
- I bake this to an in-game/render mesh.
- 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
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...
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.
http://www.philipk.net/tutorials/modular_rocks/modular_rocks.html
http://wiki.polycount.com/EnvironmentSculpting
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
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.
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.
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.
Also check out his Stone Wall/Floor script that expands on the same ideas.
http://www.scriptspot.com/3ds-max/scripts/stone-placement-tools
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).
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.
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.
Added edges and poly's is still way cheaper than unique textures.
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.
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.