Home 3D Art Showcase & Critiques

Brick Apartment Building [wip]

polycounter lvl 16
Offline / Send Message
Steen polycounter lvl 16
I've been working on this in my free time for a while. It's largely based on the Jeanne d’Arc apartments in NYC. I'm at the point where I seem to be hitting some bumps in my workflow and could use some advice on the best way to continue.

building_ref.jpg

I've been carefully modeling on a grid in Max to keep all of my bits and pieces nicely tileable. I want to keep things modular so that I can construct other buildings from the parts.

modularbits3.jpg

In my test export to UDK things are looking good scale-wise (please ignore lack of lightmaps), but I noticed that simply tiling my brick pattern on boxes doesn't look great. The grout gaps wind up on the corners, so I decided try to create a model with proper end pieces to bake maps from.

udk_test1.jpg

This is where I seem to be spinning my wheels. After a lot of trial and error, and researching I have a normal map that is approaching acceptable. I added a lot of edge loops and bevels to my low poly so that I could get a better bake that I then plan to use on a simple box (Is this a common way to do things?). I had the idea of creating a tileable texture from the middle of this map, but I'm not entirely sure if this is practical. I also plan to add some chips and noise detail to my normals in photoshop with the xnormal plugins.

brick_normals5.jpg

I would greatly appreciate any feedback on my process. I feel like it needs some serious tweaking.

Replies

  • Xelan101
    Options
    Offline / Send Message
    Xelan101 polycounter lvl 10
    Personally I'd rough them up a bit in Zbrush/Mudbox, rather than Xnormal I think you'll have more control. And achieve a better result. You say you decided against that approach, any specific reason why?

    Also one of the best ways I've found to do a tiling map like this is to offset your bricks nicely and then duplicate the high poly in all four directions (aka tile it) and then bake down to a plane you have positioned in the center square. If done correctly it should yield a perfectly tiling map, if done wrong nothing a few minutes in PS or a re-bake can't fix rather easily.
  • PixelMasher
    Options
    Offline / Send Message
    PixelMasher veteran polycounter
    yea I would agree with the tiling texture method. especially for a large surface like this, using a tiling texture with some decals/vertex blending would be the best way to go about it, especially when you factor in the reusability of a texture like brick which can be tinted or modified through a shader to texture surrounding buildings for the same cost.
  • Steen
    Options
    Offline / Send Message
    Steen polycounter lvl 16
    Thanks for the replies! I did try to do some sculpting in Mudbox, but couldn't come up with an easy way to work on the whole wall at once. It seemed to be more than Mudbox wanted to handle geometry-wise. I also started sculpting on individual bricks that I could then take back into Max and build a wall out of. I'm a little unclear on how to handle this. Can I use normal mapped high poly bricks to bake a full normal map of the wall, or do I have to wrangle huge exported Mudbox bricks in Max?

    I still want to have a version of the wall with end pieces so that the corners look correct. I think I can simplify my low poly and still get an ok bake. I'll do a little more experimenting with that tonight. I imagined my corner pieces blending in seamlessly with my tiled bricks. This might be a pipe dream. Additional tips would be appreciated! I'm getting a little burned out on the bricks. Want to move forward!
  • joshmtyler
    Options
    Offline / Send Message
    joshmtyler polycounter lvl 5
    Hey. Looking good. I see one simple problem with your normals, your green channel is either being inverted or not being inverted upon import into UDK. It all depends on what you made the normals in.
  • Steen
    Options
    Offline / Send Message
    Steen polycounter lvl 16
    Joshmtyler, I baked the map in xnormal with -y set in the baking options. I saw that this was the way to do it if you are targeting Max and udk. I'm using xoliul shader in Max. I may be flipping the green in the shader. Thanks for pointing that out.
  • fragfest2012
    Options
    Offline / Send Message
    I have some advice as far as the texturing/materials. I can't help you with the high poly stuff, although, from my limited experience, it seems like roughing the bricks up in Mudbox/Zbrush is the way to go. Anyways, I would consider combining one or more of the following things. First, vertex shader; this is super powerful, and you can set up a vertex shader that just changes the tint of the red color of the bricks for virtually no extra cost. You could also use another channel that has a tiling grunge texture, so you can add extra variation. Next is decals, also super powerful but they will have a bit more of a performance cost. I think you could use around 3-5 decals (512 or 1024, depending on your texture budget) to give great variation as long as you mix them up a bit. You can also try a technique called a variation texture, which is basically applying a large texture (probably grunge in the case of bricks) over several pieces. This can be achieved using the texture coordinates and world position nodes to scale it up and keep it in the right place. Here is a tutorial for that: http://www.chrisalbeluhn.com/UDK_Asset_Position_Offsets_Texturet_Tutorial.html. Hope some of that helps.

    Also, for the corners, I would recommend you use a different larger brick (I recommend white) and put it on the corner pieces. You can see some examples of what I mean here: http://images.wikia.com/assassinscreed/images/8/89/Assassin's_Creed_Brotherhood_Concept_Art_009.jpg
  • Xelan101
    Options
    Offline / Send Message
    Xelan101 polycounter lvl 10
    When I work on high poly textures, specifically bricks which I've done a couple times, what I tend to do is build the whole wall, making sure that everything can tile first, and then export it into Zbrush.

    I'm not certain if Mudbox has a similar feature but in Zbrush I isolate each brick within the sculpting program ( CTRL-SHIFT + Click in Zbrush) I sculpt each brick on it's own, but this method allows them to stay in their already tiling formation. Maybe someone more familiar with Mudbox can explain if there's a similar feature there as well.

    As for the corner pieces, it'll depend on the actual geo but you should be able to create something that blends with the flat pieces. It'll just take some careful unwrapping to make sure the edges line up.
  • Steen
    Options
    Offline / Send Message
    Steen polycounter lvl 16
    Fragfest - I plan to do just that once I can get a good base to work with. Watched that really great 3d Motive video on vertex blending a while back and I've been excited to try it on something.

    Did a little test and I can get the whole wall into Mudbox and sculpt in a manner similar to what you are talking about, Xelan. I'm just not sure where to go from there. Should all of this geometry I'm creating go back into Max or xNormal for baking, or is that something that's usually done in the sculpting app in this kind of situation?
  • Xelan101
    Options
    Offline / Send Message
    Xelan101 polycounter lvl 10
    Personally I decimate/optimize in the sculpting application, and then import into Max to bake (or Xnormal depending) I'm uncertain if Mudbox has baking capabilities, I believe Zbrush does, which makes me think Mudbox does too. A bit of google hunting should probably turn up an answer.
  • Steen
    Options
    Offline / Send Message
    Steen polycounter lvl 16
    Mudbox has baking options, and some retopology stuff that may do the decimation thing. I installed Wayne Robson's reduction tools a while back, but didn't really get the hang of them. May have to spend a little more time with it. On the up side, I did a test and I was able to import my sculpted wall without a problem. Time to take another stab at sculpting.
  • Steen
    Options
    Offline / Send Message
    Steen polycounter lvl 16
    I discovered selection sets in Mudbox tonight. I can get the sub-object selection sets I create in Max to carry over if I export using FBX, but unfortunately not OBJ. Anybody know if there's a way to get selection sets in OBJ?
  • Steen
    Options
    Offline / Send Message
    Steen polycounter lvl 16
    I baked out a pretty decent tiling normal map from my sculpt, and created some test diffuse and specular textures. I'm still having some problems with my corner normals. Anybody got any tips on how to smooth them out? I'd also appreciate any feedback on how to improve this in general.
    brick_texture_test.jpg
    brick_normals6.jpg
  • Xelan101
    Options
    Offline / Send Message
    Xelan101 polycounter lvl 10
    To get a clean bake at a corner you'll need to either split the smoothing groups and UVs at that corner (if you keep it a harsh 90 degree angle) or champher your edges some what.

    If you want this to be a nice continuous normal, that you can use other places than just this mesh, I suggest the champher route so you can keep the UVs in one piece.
  • Steen
    Options
    Offline / Send Message
    Steen polycounter lvl 16
    Xelan, I do have a slight chamfer running the vertical length of the corner. I guess it needs to be a broader chamfer that is angled up to the point where there would be a gap. I'll have to experiment a little more.

    I also noticed that I forgot to pad the top and bottom rows of bricks so that my AO baked out correctly on the tiled version. You can see it as a lighter horizontal line of grout in the image above.
  • Xelan101
    Options
    Offline / Send Message
    Xelan101 polycounter lvl 10
    If you do have a champher, then yeah I'd maybe make it a bit bigger, also make sure you reset the smoothing groups once you've champhered. That way they'll be one continuous group and bake accordingly to the continuous UVs
  • Steen
    Options
    Offline / Send Message
    Steen polycounter lvl 16
    This doesn't seem to be working. I think due to the nature of this corner having grout that is recessed combined with the slight bevel of the bricks, I am fighting an unwinnable battle. I think the best way to approach this is to extend the length of my end bricks by the depth and bake the whole thing from straight on. That way I can just leave the curvature to the low poly model. The only other alternative I can think of is to do some hard core photoshopping on the red channel to get rid of the curve.
    brick_normals7.jpg
  • Sam Hatami
    Options
    Offline / Send Message
    Sam Hatami polycounter lvl 16
    You have to put a split in the uvw aswell as in your mesh to be able to get correct tangent for a hard edge. Because of mip mapping, you will need to offset your uvw islands a couple of pixels. And then rebake this.



    steen_wall.png


    Beyond this, it's quite a unefficent way of using a brick texture. The corner grouting is something you probably won't look at very often, creating a separate texture for something that is shown about a fraction of the rest of the scene isn't very smart usage of resources. Of course a scene wouldn't fall on something like this, but something to take in consideration.

    But for a study of smoothing groups vs tangent normals, yes.

    If you want a soft edge with a tiling texture and inhibit some sort of edge effect, you can work with your smoothing groups to do so as well.
  • Steen
    Options
    Offline / Send Message
    Steen polycounter lvl 16
    Sam Hatami, thanks for the input. I understand where you're coming from about the overall practicality of having an extra texture for the corners. It really has just become a matter of trying to understand how it works in the case of future similar issues.

    In reference to splitting the uv shells, wouldn't I get ray misses where the grout is inset? It was the reason I beveled the corner initially.

    I hadn't considered the mipmapping concern before. Would it be a problem to have the top and bottom of my shells touching the edge of the uv space?
  • Sam Hatami
    Options
    Offline / Send Message
    Sam Hatami polycounter lvl 16
    If you have a split in your uvw, you have to reflect that in your model (and vice versa), which consequently should affect your projection cage. If you have create split in your mesh, the cage should be seperate in those parts.

    In max, giving surfaces smoothing groups doesnt create the actual split physically. You have to create the split yourself (my bad).

    steen_Cage_split.png

    If you have a tiled textures, flushing it to the "borders" of your uvw, is just good. However, if you have a individual asset, flushing edges to the might give some odd mip mapping issues, but it depends a bit on the geometry aswell. Just keeping away 2-4 pixels and giving the same amount of padding should be sufficent.
  • Steen
    Options
    Offline / Send Message
    Steen polycounter lvl 16
    Well, I ended up trying out my idea of extending the corner bricks and letting the smoothing groups on the low poly do the work of shading the corner. I also did lots of texture work including adding some texture detail to my normal map. I re-uv'd the low poly bits for consistency, but I think I may have done a dumb thing by padding my tiled texture. Gotta take a break from these bricks and work on something else. Anyway, comments and suggestions are welcome as always.

    BrickTextures.jpg
  • Steen
    Options
    Offline / Send Message
    Steen polycounter lvl 16
    Sam Hatami, you ended up being very right about the corners being impractical. There are too few possible variations in width doing it that way. I'm going with the straight tiled.

    Anyway, here's a window texture test. Not sure I'm going to stick with these particular curtains, and I plan to do several variations.

    WindowTest.jpg
Sign In or Register to comment.