Author : disting


Reply
Reply
 
Thread Tools Display Modes
teaandcigarettes's Avatar
Old (#1)
Hey guys, I'm currently in the middle of working on my final year university project and had decided that it might be a good move to make a thread for it.



To give you a quick overview of what my project is about, I’m currently trying to develop a workflow for creating seamless and unique looking environments. Basically, I will be attempting to reduce the visibility of texture/shading seams and texture repetition while relaying mainly on lowpoly geometry and tiled textures. Essentially, I’m trying to bring the quality of the assets created this way closer to the ones made using the next-gen workflow without being limited to unique unwraps.


To develop this workflow I'll be making a small diorama that will act as a proof of concept and a playground for experimenting with different methods.

Here's a blockout mesh of that environment:


It's currently quite small, but once my report is submitted, I will have a few more weeks to expand it into something larger. That will be also a good test of that workflow, since making everything easily reusable is one of my goals.


Anyways, over the course of next two or three weeks I will be documenting everything I do.

Now here's where I need your help guys . I'm intending to use this thread as a basis for the last part of my report in which I'll be evaluating my own progress. I'm hoping to use your feedback and critique to back up my discussion, so please do rip my work to shreds. The more issues you find, the more I will have to write about

Once this environment is done I will compile my methods in a form of a tutorial that I will put up somewhere online. I’m hoping that you guys will be able to give me some feedback about its usability and its content as having it peer-reviewed would count as testing of my project’s product.

In any case, feel free to ask me question about the project and its purpose. After writing whole pages about this project, it’s difficult to summarise it in a few sentences ;) If there’s something that isn’t clear, just let me know and I will update this post.




I should be able to post my first update today if all goes well. Currently I'm at the stage of creating some of the tilling textures.

Last edited by teaandcigarettes; 02-11-2012 at 09:00 AM..
Offline , polycounter, 1,218 Posts, Join Date Aug 2009, Location Nottingham, UK Send a message via MSN to teaandcigarettes  
   Reply With Quote

samcole's Avatar
Old (#2)
Wow, this sounds like it will be a fun, yet challenging project Tea. One suggestion would be to use Mudbox to do your texturing. After you unwrap whatever meshes you intend to unwrap, you can projection paint in Mudbox and it affords little to no seam issues, since your painting on the model, and straight to the UV's without having to worry about border issues and what not.

Check out the mudboxlive.com website where the guy released a From Mudbox to UDK tutorial series".
Offline , spline, 205 Posts, Join Date Feb 2010, Location MI  
   Reply With Quote

teaandcigarettes's Avatar
Old (#3)
Samcole: Thanks for the reply and thanks for the link Yes, I'm familiar with projection painting in Mudbox and normally that would be how I would work with smaller, uniquely painted assets. However, I should clarify that my goal is to avoid unique unwraps on large meshes and instead to use tilling textures that could be reused.

For instance, in case of this terrain mesh, I'm hoping to use multiple UVW channels and blend between them via vertex colour. I will also look into changing the shape of the mesh to hide the seams so that they are invisible to the viewer.
Offline , polycounter, 1,218 Posts, Join Date Aug 2009, Location Nottingham, UK Send a message via MSN to teaandcigarettes  
   Reply With Quote

benji's Avatar
Old (#4)
Sounds interesting, look forward to seeing your results and I'll be happy to give feedback. Which university are you at?

I've been working through your foliage tutorial on 3dmotive by the way, and learning a tonne, so cheers for that.
Portfolio - critiques welcome
Junior artist at Bohemia Interactive Simulations (UK)
Offline , triangle, 357 Posts, Join Date Jan 2011, Location Guildford, UK  
   Reply With Quote

d1ver's Avatar
Old (#5)
hey Damian, best of luck with the project!

I think that to make your point you need to make a conscious effort to include different kinds of surfaces. For example
yes everyone know tileable textures is pretty much the only way to do terrain/ground/cliffs, but will it work with props? Or maybe instead of making rocks, can you make planks with it, or maybe rusted metal objects, fabrics, plastic? etc. etc. this way you can show how much potential this approach has and if it could be used wider than it is now.
I'm pretty sure you're aware of this:
http://eat3d.com/free/zbrush_tile
but I think it would be hefty to include as a demonstration of the variety within a single tiling texture.

also are you planing any specific shaders to take it up a notch?

Maybe a mask for wear and tear to blend thorugh 2 different textures? etc...

Anyway, I'll be sure to check this thread once in a while

cheers!
Offline , dedicated polycounter, 1,418 Posts, Join Date Jan 2008, Send a message via Skype™ to d1ver  
   Reply With Quote

Prtofdacrowd's Avatar
Old (#6)
Hi this looks like a fun challenge, but dont limit yourself with the maps remember there are numerous ways to make an asset look unique!

If you stick to low poly tiling textures it will not do wonders for your portfolio, it will just say this guy can unwrap and go to cg textures.

Remember always the while your modeling your final product, how can i make this unique how can i trick the player. Can you simply make an asset that can be intersecting the ground plane but flipped on the z have an entirely new silhouette.

Even something as simple as using Unreal and the RGB channels to change colors and decals to break the monotony of tiling textures.

Or at the lowest level vertex painting add a few more verts, get in unreal have some fun. You can still hit very low optimization targets and meet next gen graphics.
Offline , line, 74 Posts, Join Date Mar 2011, Location UK Send a message via Skype™ to Prtofdacrowd  
   Reply With Quote

teaandcigarettes's Avatar
Old (#7)
List of changes:

- I have made two tilling textures; one for the ruined brick wall and one for the rocky parts of the ground mesh

Screenshots:








Description of the progress:

For both textures I have used Zbrush, Max, Xnormal and Photoshop.

Brick wall:

Here's the run down of the process for this mesh.

1. Sculpt three bricks of different sizes and shapes
2. Import them into max and decimate to keep make the scene easier to manage.
3. Arrange the bricks in front of a square plane (in my case, 1024x1024 units)
4. Duplicate the bricks that go over the border by the length of your plane on X and Z axes to avoid any seams when rendering AO/Normal/etc maps.
5. Import the bricks into Zbrush
6. Import the lowpoly plane that had been used in step 3. and subidivide it.
7. Sculpt the plane via a combination of Clay Tubes, Clay Buildup, Trim Dynamic and Clay Polish brushes to create the mortar.

Now at this point the bricks had been tilling pretty well, but mortar was producing some major seams. Here's what followed next:

1. Export the mortar plane and render out a heightmap in Xnormal (this is just a personal preference of mine)
2. Bring the heightmap into Photoshop and use the offset filter to center the seams.
3. Import a new plane into zbrush and subdivide it.
4. Use the heightmap to displace the plane.
5. Sculpt away the seams; since the mesh is very organic some random brush strokes should be enough.
6. Export the now seamless mortar mesh back into Xnormal
7. Bake out a heightmap.
8. Bring it back into Zbrush and apply it one more time to the plane.
9. Export bricks and mortar and render out your maps.

While this works pretty well and gives you seamless results it's a pretty cumbersome. Switching between apps, exporting meshes and waiting for the renders to finish is both tiring and difficult to manage. Also, getting the same shape of the mesh after displacing it is a little bit difficult if you are pedantic about precision. You need to guess what looks right.

While I could have used 2.5d sculpting to tile my mortar quite easily in Zbrush I'm not very fond of 2.5D sculpting brushes.


Cliff face:


With the cliff I have tried a different approach and I'm quite happy with what I came up with. This is my process:

1. Find a photo of a cliff that has the features you want.
2. Bring it into Photoshop and create a rough tilling texture
3. Convert that photo into a displacement map
4. Follow the rest of the steps that Bobby Rice discussed here: http://www.polycount.com/forum/showp...8&postcount=56


Now since my displacement map produced slightly "blobby" results, I had to go and sharpen up the cliff via a combination of Flatten, Flatten Planar, Trimd Dynamic, Planar, Polish Brushes and Smooth. I would often switch between the Subtractive and Additive modes when necessary. When sculpting I tried to avoid touching the edges of the plane as much as possible so that I wouldn't have to remove too many seams.


Now removing the seams was surprising easy. Here's how you can replicate my process:

1. Duplicate your subtool four times.
2. Import another lowpoly plane and subdivide it.
3. Offset each of the the cliff faces by exactly 100 units on X and y axes in both directions; surround the subdivided plane with your cliff faces like this
http://dl.dropbox.com/u/4361936/rock...projection.jpg
5. Go to the Subtool tab and select the subidived plane.
6. Go to the Projection section and change the Dist setting to 1 and Proection SHell to Z.
7. Hit Project All
8. You can now remove the seams.


Now this made sculpting my rocks incredibly easy and I no longer had to worry about getting too close to the edges of my plane. The process takes a little while to get used to, but the benefits of not having to leave zbrush or going into 2.5 d are great.



Planned updates:

-Create grass, dirt and roof textures.

-Try to avoid using external apps for baking normal/AO maps if possible.

Last edited by teaandcigarettes; 02-07-2012 at 10:41 PM..
Offline , polycounter, 1,218 Posts, Join Date Aug 2009, Location Nottingham, UK Send a message via MSN to teaandcigarettes  
   Reply With Quote

teaandcigarettes's Avatar
Old (#8)
Sorry for the doublepost; I'm want to keep the actual updates in different posts to make things easier to manage for myself.

benji, d1ver, Prtofdacrowd:

Thanks for the feedback guys You've made some good points. I will try to answer your questions a bit later; probably after I get a few hours of sleep
Offline , polycounter, 1,218 Posts, Join Date Aug 2009, Location Nottingham, UK Send a message via MSN to teaandcigarettes  
   Reply With Quote

m4dcow's Avatar
Old (#9)
Since you're talking about workflows, I always found it a bit cumbersome to do those tiling fixes you mention in your workflow, for both the mortar and the rock face.

What I do to avoid this, is make a plane that is double the size of what I want to tile, and turn on the zbrush wrapping mode of whatever brush I'm using to 2. You get the added benefit of previewing how the sculpt will tile.

The only problem that comes up is that you are now quadrupling the polygons you have active in zbrush. To alleviate that I setup a plane that has detail in the middle part, and the polygons on the edges are collapsed. I explain it a bit better here: http://www.polycount.com/forum/showp...22&postcount=2

The reason I don't set the wrapmode to 1 and just work on a regular sized plane, is that zbrush acts weird when it hit edges, and unless you constrain a brush to one axis it will mess up the tiling which is what the method was trying to avoid in the 1st place.
Online , polygon, 745 Posts, Join Date Jan 2010, Location St.Lucia, West indies  
   Reply With Quote

Computron's Avatar
Old (#10)
Mudbox tiling plane bitches!!!

I do prefer zBrush though, so I gotta try what m4dcow is saying.
Offline , dedicated polycounter, 1,451 Posts, Join Date May 2011, Location Minnesota, USA  
   Reply With Quote

alloa's Avatar
Old (#11)
OMG!!! your tilable ruined brick wall is just gorgeous! oO
You have increase your skill on this one, sculpt and texture.
Nice job
Offline , line, 70 Posts, Join Date Feb 2010, Location France  
   Reply With Quote

teaandcigarettes's Avatar
Old (#12)
Hey guys, sorry for the late reply.

benji: Thanks man. I'm currently in my last year at Northumbria University (it's in Newcastle).

d1ver:
Thanks Andrew, you make a good point. Unfortunately, I'm running on a tight deadline so there is a limit to what I can do within that time and I had to narrow down the focus on my project. So instead of dealing with different surfaces types, I've narrowed it down to the types of objects (organic, hard-surface, structural element) and to the type of patterns in the texture (organic, geometric or combination of both).

In fact, I think I might need to narrow down the scope even further and get rid of that water well. I've been thinking of raplacing it with a tower and focusing on applying this workflow solely to larger structures. I believe that might make the purpose of this project more clear.

I've been thinking of using some more advanced shaders, but unfortunately that might be something I might have to leave for later. It's something that's been interesting me for a long while, so I will continue working on this even once this assignment is finished. In fact, I really want to look into perhaps making a material that could fake this effect (you will need to skip to 36:00)


Unfortunately, that's something beyond my current level of knowledge, so I will need to read up much more on the shaders before I attempt to do something like this.




Prtofdacrowd: Thanks man. As I mentioned, there are some limitations and assumptions I need to make with this project. Don't worry though, I will be trying out some cool shaders




m4dcow: Thanks a lot for those tips man. I completely forgot about the wrap mode; I used it in the past, but I had the problems with getting seamless results around the edges that you had mentioned. I will definitely try this out; my laptop should be able to handle 4million points.


Computron: Thanks for the tip mate I've been under assumption that tilling plane could be used only for 2D texture. But I just looked it up and it looks like a great tool. Unfortunately it seems like you need to be on subscription model to use it. I'm on a student license, so I can't really get access to it.


alloa: Thanks a lot man
Offline , polycounter, 1,218 Posts, Join Date Aug 2009, Location Nottingham, UK Send a message via MSN to teaandcigarettes  
   Reply With Quote

d1ver's Avatar
Old (#13)
Thanks for the vid, Damian, can't believe I missed it.
interesting shader idea, though would need some research on my side as well.

Time constraints are nice and fun, so don't worry, I'm sure you'll still manage to do a lot.

I have one question though:
Why is your tiling textures process so cumbersome? Or am I missing something?

The video I linked makes heavy use of the tilde("~") button that allows you to manually offset your canvas - which is pretty much all you need to avoid seams.
Also zbrush has a sufficiently comfortable system of 2.5 layers that provide you enough flexibility to change things down the road in 2.5 documents.
http://www.pixologic.com/docs/index.php/Layer_Palette

I think Behroozes old vid pretty much covers it all:

And a bit more in depth here:
http://www.zbrushcentral.com/showthr...eable-Textures

I've tried the photo approach and it is pretty nice actually. Though generally I think you'll need 1.5 - 2 more hours tops on that kind of rock surfaces and this not so bad for having complete artistic control. But that's just a preference of course.

Also are you going to do any heightmap blending? Because if yes then adding moss in the bricks, might be jumping the gun a bit. It's pretty and subtle but tiled 20 times might become visible - hard to tell right now.

Keep it up man! Doing great so far.
Offline , dedicated polycounter, 1,418 Posts, Join Date Jan 2008, Send a message via Skype™ to d1ver  
   Reply With Quote

teaandcigarettes's Avatar
Old (#14)
Hi Andrew,

The reason why I avoid 2.5D like fire is because I don't feel that working in 2.5D offers me the same level of control that 3D does. Generally, I can achieve much better results if I can rotate my mesh in 3D and use all those cool brushes that Zbrush comes with.

In any case, the second workflow I posted (the one where you have to duplicate planes) is not really that cumbersome. It might seem complicated, but once you get used to it, it takes less than a few minutes to reproject your mesh onto a new plane. It seems like a reasonable tradeoff for being able to sculpt in 3D.

Speaking of blending, yeah I'm hoping to do that. However, I plan to blend in a layer of concrete/plaster on top of the bricks and I will be doing that to hide the brick pattern in places where it doesn't match the mesh. Hopefully this will make it easier to hide the seams at intersections.

On a side note, I have updated my blockout. I've decided to go with a larger mesh as that would fit the purpose a little better. I will post another update today.
Offline , polycounter, 1,218 Posts, Join Date Aug 2009, Location Nottingham, UK Send a message via MSN to teaandcigarettes  
   Reply With Quote

teaandcigarettes's Avatar
Old (#15)
List of changes:

- Created tilling roof, grass and dirt textures
- Unwrapped the ground mesh seamlessly by using multiple UV channels blending them via vertex colour

Screenshots:






Description of the progress:


Ground mesh:

Getting seamless results was quite easy with this type of a mesh. I have started by unwrapping its 3rd UVW channel first and then copied that layout into the first channel. Then, I split each UVW island in half and merged the halves in such way that I got a layout that looked like the opposite of the 3rd UVW channel.

But getting that right was a little bit tricky and at some point I got a bit confused with where my seams were originally. So instead of doing it blindly I've decided to stop and to preview my results in the viewport.

What I did first was I loaded up my 3rd UVW channel and painted all seams with Red vertex colour.

Next, I created a material that blends between both the UVW channels and grass and rock textures. Getting it to work was quite challenging, as Nitrous viewport completely died on me when I tried to preview any UVW channel other than the 1st. Instead, I enabled DirectX mode and everything worked flawlessly.

Now to get this material to blend correctly I had to do exactly what I would do in UDK. I created a Mix node that would blend between the UVW channels first and the connect to it two other Mix nodes that would blend between the grass and rock textures. Here's how my setup looks like:



With the way it works, I could unwrap the mesh seamlessly pretty easily, as I had completely dynamic preview in the viewport. The only problem was that this material seems to be quite taxing. I've planned to blend in a dirt texture as well, but decided to leave that till I import everything into UDK, since I didn't want to kill the performance completely.

Overall, it wasn't difficult process though certainly time consuming. Something like a blended box shader would be a much easier solution, though as far as I'm aware it would be much more costly. If I have some time I will try it out as well.



Roof texture:

For this texture I have tried follwoing what m4dCow had suggested. I simply aligned a few sculpted tiles along a plane, baked out a height map, tiled it in Photoshop and brought it into Zbrush to displace a plane. This way, I had my sculpt tile 4 times and I could sculpt it with the wrap mode enabled. That worked pretty well, but I've noticed that my some of my brushes seemed completely unresponsive when wrap mode was enabled. I'm not sure whther that was because my mesh was quite dense (4 million points) or because there are some issues with the Wrap Mode itself. If I can get these issues sorted out, then it would be perfect.


Last edited by teaandcigarettes; 03-26-2012 at 03:54 PM..
Offline , polycounter, 1,218 Posts, Join Date Aug 2009, Location Nottingham, UK Send a message via MSN to teaandcigarettes  
   Reply With Quote

samcole's Avatar
Old (#16)
Tea, you may have helped me speed up my sculpting of my own Canyon for my side project. I've been looking to capture some of the photo textures height information that I grabbed off cgtextures to be able to sculpt within Mudbox. I'm not a very good sculpture so this will help give me that realism without hours of toil. Thanks.
Offline , spline, 205 Posts, Join Date Feb 2010, Location MI  
   Reply With Quote

SnowInChina's Avatar
Old (#17)
your rock texture are really ace
Online , triangle, 419 Posts, Join Date Sep 2009, Location Germany  
   Reply With Quote

Oniram's Avatar
Old (#18)
those textures are looking amazing! do you plan on having tileable textures only for this? or will you create some tileable meshes that have some of the texture info modeled out?
Offline , card carrying polycounter, 2,031 Posts, Join Date Apr 2007, Location Belmont, CA Send a message via Skype™ to Oniram  
   Reply With Quote

breakneck's Avatar
Old (#19)
I like where this is going, keep it up!
Offline , polycounter, 778 Posts, Join Date Aug 2007, Location Kirkland, WA  
   Reply With Quote

brandoom's Avatar
Old (#20)
Great updates Tea!

This is going to be an awesome thread by the end of your project.
Brandon McCready - Gameloft Toronto
Offline , dedicated polycounter, 1,398 Posts, Join Date Apr 2009, Location Ontario Canada  
   Reply With Quote

Sean VanGorder's Avatar
Old (#21)
Awesome stuff as always man. Huge fan of your texturing.

Was there a certain technique you used to get the edge highlights on your bricks in the wall?
Available for full time and freelance work
Tweeeet
Bloog
Offline , Polycount.com Editor, 1,747 Posts, Join Date May 2009, Location Redwood City, CA Send a message via AIM to Sean VanGorder Send a message via Skype™ to Sean VanGorder  
   Reply With Quote

teaandcigarettes's Avatar
Old (#22)
SnowInChina, breakneck, brandoom:

Thanks guys

samcole:

Glad to hear you found that useful Now, be aware that this will only help you lay out the major shapes; there is still quite a lot of sculpting involved in getting a decent sculpt out of it.

Oniram: Thanks! My focus is on making things easily reusuable. So while I will be using mainly tiled textures, I will use some semi-unique pieces as well; like windows and doors for instance. I won't be making tilling meshes however, since I wish to look at things beside the the modular workflow.

Sean: Thanks! I usually use multiple Zbrush matcaps, overlay them on top of each other and mask the details out using a variety of brushes and blend-if tool. I believe that I extracted these highlights from one of them.


Anyways, I've made a nice breakthrough today, so I will post an update in a second.
Offline , polycounter, 1,218 Posts, Join Date Aug 2009, Location Nottingham, UK Send a message via MSN to teaandcigarettes  
   Reply With Quote

teaandcigarettes's Avatar
Old (#23)
List of changes:

- Made some progress on material that can be used to reduce the seams between static meshes and the ground.


Screenshots:






Description of the progress:



I have to say that I'm quite happy with the results so far, even though this solution is a simple and dirty trick. I won't be posting a full breakdown of it, as I still need to figure out if there is a more elegant way of doing this, but here is the basic overview.

The material uses vertex colour to blend between grass and a rock material (I've used one of the default UDK meshes) and between the phong lighting model and flat shading. I've used a MLM_Custom lighting model and rebuilt the phong setup as seen here: http://udn.epicgames.com/Three/CustomLighting.html


Next I created another network below it and replaced the setup responsible for calculating the shading (Dot product of the Light Vector and Normal) with a Constant parameter. Tweaking that value changes the brightness of the mesh within the painted area of the mesh and allows to match the shading of the mesh to the shading of the ground.

Now the problem with this setup is that while it works greats for the lit areas, the shaded areas look the same as they normally would. So to brighten them up, I've multiplied my Diffuse by a constant parameter and plugged it into a Lerp node. Then, I plugged the Lerp into Emissive slot, made a constant node with a value of 0 (solid black; meaning it won't affect the emissive) and used Vertex Color again as the alpha.

At this point, I only needed to tweak the constant parameters until the seam between the ground and the rock was almost unnoticeable. It's not a perfect solution and the seam is still there if you look really closely, but this approach seams to be very flexible and is a bit similar to the method that Blizzard uses. One of the main issues with this material is that changing the brightness of the lighting or the ambient lighting requires the parameters to be tweaked.


On the other hand, I've tried using floating geometry with alphas before and while that produced slightly better results modelling transition geometry around each object would be much more difficult to setup and would make it very difficult to modify anything once these floaters are in place. Moreoever, using alphas with soft transparency would be more costly, while using 1-bit alphas didn't produce very good results.

Anyways, this approach seems like the way to go. I should be able to achieve even better results if I model my meshes accordingly and create slopes in the area where they intersect with the ground. If I could somehow figure out how to project the UV coordinates of one mesh onto another, then I would be able to get completely seamless results.

Planned updates:



- Finish the textures for the building
- Finish the ground-blending material
Offline , polycounter, 1,218 Posts, Join Date Aug 2009, Location Nottingham, UK Send a message via MSN to teaandcigarettes  
   Reply With Quote

JasonLavoie's Avatar
Old (#24)
Really awesome progress so far Damian, you are quickly becoming one of my favourite artists on polycount.

I'm looking forward to digging deep into this thread as your progression continues, should be a lot of nice tips and tricks to come from this
Jason Lavoie | Environment Artist - Digital Extremes | enviro wiki | The Game Dev Cast
Offline , card carrying polycounter, 2,396 Posts, Join Date Jan 2005, Location London, Ontario  
   Reply With Quote

teaandcigarettes's Avatar
Old (#25)
List of changes:

- Modified the material to project the grass texture on top of the mesh

Screenshots:




Description of progress:

I've had some luck and figured out a solution to my previous problem. Making the grass texture to be projected from the top was surprisingly easy. I used the World Position node and derived the blue channel (Z direction) by connecting it to the component mask node and stripping away the red and green channels. Then, I multiplied the results by a constant 2 vector with low values (0.01, 0.01) to make the texture tile reasonably. As you can see on the image above, the results are completely seamless.


There is some stretching and I could probably get rid of it by turning it into a blended box material, but I would like to keep it simple. I don't want this material to be too demanding; currently it uses 49 instructions, although I didn't add specular yet. In any case, stretching could be easily reduced by making the bottom part of the mesh sloped.

I could make this material completely procedural by replacing the vertex colour input with a height based gradient, but I'm currently not sure if I can make that gradient relative to the surface of my ground mesh.

In any case even with vertex colour as input and stretching this material should be quite flexible, given that objects are modelled to compromise for the shortcomings

Last edited by teaandcigarettes; 02-12-2012 at 05:15 PM..
Offline , polycounter, 1,218 Posts, Join Date Aug 2009, Location Nottingham, UK Send a message via MSN to teaandcigarettes  
   Reply With Quote

Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Copyright 1998-2012 A. Risch