As I was able to understand, today the industry standard (well, one of) is using trim sheets, that are texture with bunch elements that can be seamlessly tiled on the model. I think old plain regular tileable textures also considered a part of that technique, but I'm not sure...
But how do you work with them? Not in a technical sense "how do I model a stripe of polygons", but... well, philosophy, I guess? You have an abstract mincemeat of a texture without clear indication what part of it goes where, and you need to visualize ahead both what kind of trims you will need on the model, where to place them, and keep all that in mind during modelling to be able to see final result without any UVs done yet and... It just makes my head spin and I stumble blindly not sure on how to proceed. I mean yeah, placing simple linear trim stripes on edges of stuff is easy to keep in mind, but that's the most rudimentary application of that technique, right? It's adding the elements and detailing, or even constructing your whole workflow to texture just with trimsheets is where I begin feeling lost and outsmarted.
Replies
I suggest hanging onto these maps because you can drop them in at any point in development and see which objects are using which part of what texture. Which is useful when you're strolling through a level and you see something odd.
I've even gone as far as to create a material switch that toggles them on/off that way I can pinpoint a spot on the texture and see where else it pops up. Of course you don't ship that way and it helps to build in a filter that strains out those branches but that's a very different discussion for another thread.
Trimsheets are mostly used for trim details but really can apply to anything that needs to tile in one direction. Normally each asset only uses a small piece of the tile and the UVs for other parts are offset so they use another tiny part of that rail. Stairs and trim are probably the easiest to think about, but really there are a lot of uses for trim sheets.
Some examples:
http://hectormateopino.com/beneath-the-waves-korindis-temple/rz5qx0hhut61zu05d2uy85bxqkeqhe
http://1.bp.blogspot.com/-4s41VHcEpXU/Uj3qXgp5fVI/AAAAAAAAHZI/jlgtm4vSCxM/s1600/zz+Dean+Street+Brooklyn+jpeg+c.jpg
https://c1.staticflickr.com/5/4134/4862285040_4760941ecf_b.jpg
You WON'T texture ONLY with trim sheets, you can try, it might cover a lot, but like any rule when you take it to the extreme it tends to make things harder and look worse or only works within a narrow artistic aesthetic. So you have to balance out several techniques to make things work, all within whatever your technical constraints happen to be.
Keep in mind how thing fit or work together, how they'll be loaded and use that efficiently. You might end up in a position with extra space and you might be tempted to slot in objects that might not belong with that set. While it might save you from creating another texture it might cause a situation where a mug or a window gets dropped into a scene and loads a giant texture file, only to use a tiny part of it. So keep things as sets and pieces, keep them organized and don't hodge podge your scenes together. This is especially important if you're working with level designers, especially if they're new to the industry. They tend to pull stuff in from all over just to fill out areas and before you know it they've killed the perf just by cluttering up an office.
Sometimes it's more efficient to duplicate an asset and assign it to an already used trim sheet that has some empty space but belongs to the correct texture set. that way they aren't pulling in dozens of textures to prop that one office, they're pulling 1. Because its a new texture you can change it up a bit adding variety to the world.
"I have empty space what do I do with it? I don't want to waste it" Just know that almost all games end up with some percentage of wasted space, it happens... you have to spill a few pixels to break a few eggs... or however that saying goes =P
Most of the time you can use that extra space to break up repeating patterns by moving some of the trim to another rail. Or invent new trim details for something with the empty space.
Really all you're trying to do is texture a large number of details with as little textures as possible without giving away that its the same texture. Breaking up that repetition is important, you can do that a few different ways. Trim is just one of them, you still have other tools in the toolbox to help vanquish tiling details.
Stuff like...
https://docs.unrealengine.com/en-US/Engine/UI/LevelEditor/Modes/MeshPaintMode/VertexColor/MaterialSetup/index.html
Tag team this technique with height data and you get sand, snow water and dirt in the cracks of a tillable ground texture. But you can also use it to paint plaster over bricks.
http://wiki.polycount.com/wiki/Terrain_in_The_Last_Of_Us
Other Resources on the subject:
http://wiki.polycount.com/wiki/Modular_environments
https://mathsgame.art/projects/gJ04L8
https://www.artstation.com/artwork/qA9gRD
https://polycount.com/discussion/144838/ue4-modular-building-set-breakdown/p1
https://cgsociety.org/news/article/3833/ue4-modular-environments-with-peter-nicolai
https://www.gdcvault.com/play/1022324/The-Ultimate-Trim-Texturing-Techniques
https://80.lv/articles/how-to-build-a-sci-fi-cockpit-for-a-game/
https://docs.cryengine.com/display/SDKDOC2/Using+Decals+for+Destroyed+Structures
https://polycount.com/discussion/160794/the-ultimate-trim-technique-from-sunset-overdrive
http://technical-eden.blogspot.com/2011/12/beauty-of-tiling-trim-textures.html
https://www.youtube.com/watch?v=IziIY674NAw
Good luck and happy art'ing!
If you haven't seen it yet, be sure to watch Tim Simpsons video about trims. Before watching it, I knew what they were but they didn't really 'click' in my head till @PixelMasher went over them.
https://www.youtube.com/watch?v=IziIY674NAw
So you can see that at the sides it is looking "okay" but at the top and at the bottom there is no detail like at the left and right edges. That is what I meant. If you have 4 sides you can just cover 2 sides with a regular trim sheet.
So at the moment I have no idea how I would fix this problem. More complex models assume much more knowledge. A PDF I've read:
https://www.gdcvault.com/play/1022324/The-Ultimate-Trim-Texturing-Techniques
said that there is no excuse for having ugly low poly edges.
So that is why I ask, how to avoid them in a simple problem like that?
Also, how is it supposed to work with something like this:
In the UV space you can see two examples. The left UV Island is the normal one (without stretching). The right one is the one needed for a vertical tileable trim sheet but the stretching is too much. Isn'it? At the moment I feel realy uncomfortable with this method and I have no idea how to do solve problems like that. Though I would love to make use of it because it sounds realy "fancy".
This is realy importent to know actually. Thanks for your answer!
For anyone who is reading this and also struggles with stretching:
If you add bevels to your model and split the uv islands you can avoid stretching by scaling it to fit to the trim. This is at least how I understood it and I think this is correct.
Share your results.
If those automated ways don't work you can do go old school, planar map position each face so it lines up in a strip, then align the edges so the pattern fits. Working with UVs back in 2000 was sooo much fun.
Here is a demo showing how I would tackle the corridor shape you showed...
https://www.youtube.com/watch?v=VLtL6wagnG8&feature=youtu.be
Malcom made a video that shows what I am talking about.
https://www.youtube.com/watch?v=sCZpsqB8ouo&t=217s
Mario keep in mind that where there is a change in smoothing groups (hard edge/ soft edge), uv splits, verts are created behind the scenes to get things to work. So if you make your bevels, uv seams, and uv splits line up you optimize the process.
This video shows how adding in loops can help fix the distortion. It's shown at the 3 min mark. This may or may not work.
https://www.youtube.com/watch?v=P3GfCuRFPCM
Its seems your tool does the same thing faster though...
I also think that the straighten tool in Rizom is doing the same thing you do in Maya if I am correct. It is faster but the downside of it is that you cannot manipulate the mesh in there. If you want to add edge loops you have to get it back to your 3d software. Exception is buying a bridge I guess. Though you can add your texture to Rizom and check how it looks afterall. I am using Blender 2.8 by the way.
EDIT:
Oh and by the way. I've read that you don't have to straighten everything. It just has to fit into the trim sheet and basically look good. Here is the PDF, realy helpful. Look at page 43.
https://www.gdcvault.com/play/1022324/The-Ultimate-Trim-Texturing-Techniques
How do you do utilize trims with connecting edges, I have a hard time getting it to work.
Say I want to make a connecting wall or as in my picture a brick. How would I approach this to make the seams go away?
I've read and watched multiple videos on the subject, but don't seem to be able to do it myself, when I'm making my trim sheets. Is it something I need to think of when creating the trim it self or does it have to with the uvs?
The thing I can't really understand is how one brick side should be able to connect with the other side as they would have both different edge wear.
That being that if the texture doesn't line up you're buggered
Trim sheets are a great way to handle large bits of architecture or anything that can take advantage of 1dimensional tiling but when you want to use them on a unique prop you will encounter a lot of restrictions.
Not to say it cant be done, it's just a pain in the arse.
Alright, so you're suggesting in a case like this to make a bunch of bricks that are mapped to blocks instead? But let's say I want to create a large block for an example, it would require to much resolution for being uniquely unwrapped and wouldn't have the necessary details with a tileable texture. Or would you go with tileable+edge decals then? Or maybe just unwrapped with detail textures?
I would love to come up with more examples than blocks really, but I guess I'll have to check when I get this problem another time aswell
As to the other part..
On a recent title we used tileables for large (4m plus) rocks. The rock shader uses the main tileable plus a noisy, small tileable masked in by a curvature map to cover UV seams and add some variation on the edges of the asset.
We chose that method because it worked and it's cheap - edge decals are comparatively expensive , a pain the arse to author and in this case unnecessary.
Thanks for the insight! Yeah that sounds smart, decals on such a organic asset sounds like a pain haha. Anyway, great tip!
So I thought about it and I came up with this process:
The idea behind my process is that I'm working on all the trimsheets at the same time. Basically I started a block out, then moved to medium poly to get a sense detail scale, from there I layout the trimsheets and do a highpoly pass on the trim geometry. For the Multi-Material I have one for flat repeating texture, one for trim, one for repeating panels, lastly one for prop objects. (I'm using 2x2m with .5m overlap dither so I can overpaint in substance). After baking just do a quick intial pass in substance and bring the albedos back into you modeling program. Use that to set up your UV's using the same Multi-Mat from before. Then attach the UV'd blockout to the geom from step 3, export that (everything in green in the example). Open up the intial pass substance project and import your new combined model.
Now you're all set up in substance painter with your 4 texture sets and your model and trim sheets. So now you can do a final pass, and the cool thing is you can paint directly on your model and be adjusting the trim sheets at the same time. In SP you can add more dirt passes and tweak your scratches.
I hope this helps. It's a lot of steps but I think it is an easier process than setting up 3 separate trimsheets and trying to fit them together after. This is the first model I've tried using this process, but so far I'm pretty happy with the workflow.
Edit. Oops already mentioned by poopie. https://polycount.com/discussion/comment/2738124/#Comment_2738124