Chaos Corona Forum

Chaos Corona for 3ds Max => [Max] I need help! => Topic started by: cjwidd on 2020-01-15, 13:25:04

Title: [RESOLVED] Texturing Large Surfaces
Post by: cjwidd on 2020-01-15, 13:25:04
Attached is an example of scene by Juraj Talcik containing multiple large surfaces in camera, but no noticeable tiling. Is the solution to texturing large surfaces like this while also avoiding noitceable tiling just big a** textures (>8k)?
Title: Re: Texturing Large Surfaces
Post by: Br0nto on 2020-01-15, 15:47:46
Could also be procedural using noise maps and layers/masks.
Title: Re: Texturing Large Surfaces
Post by: GeorgeK on 2020-01-15, 16:17:35
Attached is an example of scene by Juraj Talcik containing multiple large surfaces in camera, but no noticeable tiling. Is the solution to texturing large surfaces like this while also avoiding noitceable tiling just big a** textures (>8k)?

Ofcourse resolution helps alot, but the secret I believe lies in seamless tileability. No matter how much you repeat it, it's almost undetectable.

Many 2k maps can do the job just fine, also when facing the surface in angle usually won't notice tilling so easily (especially in glossiness-reflection channels), but things change when facing something perpendicular.

Title: Re: Texturing Large Surfaces
Post by: Juraj on 2020-01-15, 16:41:58
Heh..hey :- ) Nice to see this pop-up. Can't believe this is project from 2014..

Here it's simple, most of these (like the flooring and ceiling) are just pretty big texture, I think 4x3 (or 3x3) meters. Those kind of textures are rather rare though.
The Corten I made in Photoshop to Tile on 3x2 meters.

Rest of materials do tile visible...at least the DesignConnected carpet which I didn't spend much time on.

Could also be procedural using noise maps and layers/masks.

I didn't know about this technique in 2014, so here it is not used, but I did learn about it year later or so from Bertrand Benoit's tutorial of Tribeca House.
This is super smart technique, but it is mostly for high-frequency noisy kind of maps, like dirt, scratches, or micro-fabrics. You can't do it for something with big patterns like Wood & Marble because it will fuck up those patterns :- ).

I would just google that tutorial, Bertrand describes it the best. It's similar to stochastic texturing that people requested and Fstorm has. It would be cool to have, but it wouldn't just solve all tiling issues... just the most annoying ones.

seamless tileability.

This is very laborious btw and requires shit ton of experience. So far I have only seen the guy behind TextureCom know how to do this well. Majority of textures (like Megascan,etc..) are tiled procedurally and it really shows... it's ok-ish job for rocks, but it sucks for everything else.

In recent years I have been on private beta for some new AI solutions that help with tiling. Let me tell you... it's not exactly answer either :- ).
Title: Re: Texturing Large Surfaces
Post by: Br0nto on 2020-01-15, 17:23:57

Could also be procedural using noise maps and layers/masks.

I didn't know about this technique in 2014, so here it is not used, but I did learn about it year later or so from Bertrand Benoit's tutorial of Tribeca House.
This is super smart technique, but it is mostly for high-frequency noisy kind of maps, like dirt, scratches, or micro-fabrics. You can't do it for something with big patterns like Wood & Marble because it will fuck up those patterns :- ).

Ah, very good point, I was looking primarily at the ceiling and dark wall on the left, both of which have more noise-type textures than stuff like the wood or marble.
Title: Re: Texturing Large Surfaces
Post by: cjwidd on 2020-01-15, 20:54:05
Making Of 'Tribeca Loft' by Bertrand Benoit article (https://3dtotal.com/tutorials/t/making-of-tribeca-loft-bertrand-benoit-scene-house-room-interior) for anyone that's reading this
Title: Re: Texturing Large Surfaces
Post by: zaar on 2020-01-16, 11:36:15
One day I'm going to write an article on this, or maybe someone already has.

But the way I've come to think about this as two different things: seams and tiling. Seamless is easy. Getting rid of visible tiling might be harder depending on the nature of the texture.

At first I thought the goal was to have as large as possible texture, both resolution wise and in physical dimentions, because then it would repeat less often. This is approach is not good at all as it just bloats everything with large textures and doesn't really solve the basic problem. There are of course plenty of cases where a large texture is necessary, but that shouldn't be the default mindset!

To just explain my principle, and not talk about very specific examples such as wood, just imagine we are talking about some random noise texture. And if you have a cross section through the noise and it looks like this:

A:   cvcvcvcvcvcvcvcvcvcvvcv

you don't have to make such a large texture, because it's all pretty much the same. Just make a "cv" texture. I think about it as texture frequency, how often does a reoccuring feature repeat itself over the texture sample? And how few can you get away with? For a stupid checkerboard texture, you might only need 4x4px. Or with a more varied version of the above:

B:  OcvovOvcvOvcvcocOcvcOvcv

Then you need a larger sample area. I think it is possible to make some sort of formula for this that says that the frequency (or wavelength?) has to be X in relation to the texture width and also take into account amplitude (local contrast) or something... I don't know. It's easy to eyeball this and just say that a rule of thumb is that from a far it should look homogenous. Just tile it, scale down and see if any feature pops out.


But if you have something that looks like this:

B:   cvcv_I_vcvcvcvcvcvcvvcv

the _I_ part is really going to stand out, and you will need strategies for how to manage stuff like this. Either you need a larger sample area so those parts "sink" in to the texture, or you need to start layering and masking stuff. The world of gaming and real-time graphics has gotten really good as this and even high-end archvis benefits from learning these strategies. There must be hundreds tutorials for this if you search for game related stuff. Apart from layering and masking (with vertex paint also) to get rid of repetition, I think they also have fewer large empty surfaces in general. And there's always lots of debris, decals and stuff on top.

Speaking of decals... One of the great mysteries of all time is how bad handling of decals in 3dsMax (and the likes) always has been! It was one of the first tutorials I looked for twenty years ago or something, and was baffeled by how complicated it is, and the approach is still pretty much the same. And then you look at game engines and your jaw drops, you can do that?

GeorgeK: That was a really interesting example! I hadn't thought about that reflection also contributes to breaking things up in lower angles.

Title: Re: Texturing Large Surfaces
Post by: Juraj on 2020-01-16, 11:52:04
F-Storm has really nice 'Decal' feature introduced last year. I guess it might be added onto Corona's roadmap eventually, that would be pretty nice but the roadmap is already pretty dense = )

Title: Re: Texturing Large Surfaces
Post by: zaar on 2020-01-16, 13:10:33
F-Storm has really nice 'Decal' feature introduced last year. I guess it might be added onto Corona's roadmap eventually, that would be pretty nice but the roadmap is already pretty dense = )

Yes! I've seen it. And I drooled ;)

I would much rather see it on a roadmap for 3dsMax. No matter how much I like Corona and the development of good stuff in it. I'm very tired of plugins, all in their own way, fixing things that are lacking in the core application. For example color management.
Title: Re: Texturing Large Surfaces
Post by: Juraj on 2020-01-16, 13:20:17
Absolutely agree, that's the most ideal way!

But the sad reality, not talking about development speed on Max side, more that the features they implement seem to have trouble communicating with other plugins, that is if they even provide API for it.
It seems that since Max integrated Arnold, a lot of features they developed for Arnold that would perfectly work with other renderers, simply don't.

They don't seem to care about the whole ecosystem much outside of Arnold. In fact I can perfectly imagine them integrating OCIO only for Arnold and not globally like it is Maya.
Title: Re: Texturing Large Surfaces
Post by: zaar on 2020-01-16, 14:00:29
and on the same note (and totally OT), I would like if Corona and V-ray could consolidate all their nifty little maps to work across both renderers. So instead of Corona Triplanar and V-ray triplanar, there would only be Chaos Triplanar. Which is of course a bad example because there is now a triplanar in Max that is render agnostic. But it would never have been there if it Niel Blevins hadn't nagged Vlado about it, which in turn led to everyone creating triplanars (this is my understanding anyway). And maybe this is the way things have to go. I don't want to bash Autodesk too much because it's an impossible task to keep everyone happy. But they could provide a better starting ground and playing field. And maybe look more at workflows than adding specific features. And here decals are a perfect example of something that I guess people just avoid because it's a pain to add more than a few decals to an object.
Title: Re: Texturing Large Surfaces
Post by: Juraj on 2020-01-17, 11:31:45
if Corona and V-ray could consolidate all their nifty little maps to work across both renderers

I believe this is still in their long-term plans and always was. I definitely ask them about this pretty often :- ) I personally like the idea of switching between Vray & Corona per project basis (Archviz-Corona, Cars-VrayNext on GPU, for example).
But this seems to be somewhat in backburner for now.
Title: Re: Texturing Large Surfaces
Post by: John.McWaters on 2020-01-17, 21:11:22
I used the noise component to create a mask in order to differentiate the tiling. I use it often for grunge maps that may be plugged into an Corona AO or Corona Distance component.

I'll take an existing hi-res grunge map and pass it through a Corona UVW Randomizer. I'll then plug both of these (original map and randomized map) into a Corona Mix with the mode send to Mix. The noise map is plugged into the mask input. Make sure you get the size of the noise map right. For the noise, I'll move the values closer to one another, so the default of 1.0 and 0.0 becomes something like .6 and .4. This creates a noise map with sharper transitions from black to white. You can repeat this progress if needed to introduce further variation.

As already stated, this works best for textures that don't have an intended grain, so definitely not wood or marble, etc.)