Chaos Corona Forum
Chaos Corona for 3ds Max => [Max] I need help! => Topic started by: aaouviz on 2024-04-11, 10:07:47
-
I'm wondering if anyone has a tip for me.
I often work with HDRI direct visibility override, but the HDRI image/file is the same as the environment texture, just rotated somewhat. See the attached image below.
The problem is that I need to have a duplicate of the HDRI. If I change the hdri or edit its settings I have to do it twice. Once for the environment and again for the direct override.
Is there some sort of node I can plug in a texture into as an intermediate so it takes the texture and rotates it more? Does this make sense?
Again, see the attached image for how I expect it could work.
Thanks for any help!
-
Corona mapping randomizer should do the trick for you.
-
Dammmmm, so simple I never thought of it!
Thanks Romullus, that will indeed do the trick
-
You're welcome!
-
Actually, I jumped the gun there!...
Testing this... it doesn't work?
What should my settings in the randomizer be? Say; I want to rotate the direct one by 90 degrees (so the sun moves left or right) what should I do? Nothing seems to work.
-
Indeed it doesn't. Strange, but i think i remember that this used to work, maybe something got broken at some point? I also found that W rotation in Corona bitmap rotates in wrong axis when in spherical mode. Something seems not right here. Anyway, sorry for misleading, it seems you'll need to find other solution.
-
You could try the following setup: plug the Default Output to the Environment slot, and apply a self illuminated CoronaMtl to a geosphere that will act as a "geometry direct override" if that makes sense.
If you rotate the HDRi, the rotation is reflected on the geosphere as well. But if you want the geosphere to have a different orientation than your HDRi all you have to do is to rotate it in the Top viewport.
You will have to find the correct orientation of the geosphere first so that its mapping matches the one of the environment slot, and play with the self-illumination intensity as well but this setup works.
I hope it helps.
-
Another possible option would be to use controller nodes for parameter linking.
-
Yes, I was thinking of that possibility too, but didn't find how to do that.
Could you explain a bit further?
-
Sure, it's very simple operation. You don't have to wire every single control, just those that you want to be instanced.
-
Thanks.
But this is not what he wants: he doesn't want to instance the rotation value, he wants a control to change the rotation of only one map, and the two maps being instanced.
-
Then you don't wire rotation and wire everything else. I think the only option that can't be instanced is loading of bitmap itself, so if you'd want to change HDRI, you have to do it on both nodes.
-
Surprisingly difficult problem :D
I thought BerconMapping Map could help but it doesn't work on environment maps, only 2D/Object/Screen.
UVW Randomizer does funny things, too.
-
Indeed it doesn't. Strange, but i think i remember that this used to work, maybe something got broken at some point? I also found that W rotation in Corona bitmap rotates in wrong axis when in spherical mode. Something seems not right here. Anyway, sorry for misleading, it seems you'll need to find other solution.
Hey Dev's, any idea why this is happening? It should work, right?
My guess is because there is no checkbox for 'env' randomization then it doesn't know to apply the randomness to the env slot?
-
OSL might do what you're after, maybe?
-
Ideally, you would use the OSL UVW Transform map and it should be enough, but it simply multiples the input values, does not transform.
While this:
OSL might do what you're after, maybe?
works exactly as you would expect. So give it a go.
P.S. it actually works for CoronaBitmap too (instead of OSL file name map), it is just 3ds Max that does not show the node connection lines, but it is there.
-
I would love for the uv randomizer node to be able to work on HDRI/envir bitmaps. I have the exact same issue as OP. Having to load multiple bitmap nodes of the same HDRI for different camera angles or reflection overrides feels like a waste. Just being able to drop a rotation node inbetween would be amazing. Just like we can do with color correction etc and reuse the same HDRI/bitmap.
If uv randomizer node had an "environment" checkbox so we could just do a fixed rotation, would be lovely :)
-
I would love for the uv randomizer node to be able to work on HDRI/envir bitmaps. I have the exact same issue as OP. Having to load multiple bitmap nodes of the same HDRI for different camera angles or reflection overrides feels like a waste. Just being able to drop a rotation node inbetween would be amazing. Just like we can do with color correction etc and reuse the same HDRI/bitmap.
If uv randomizer node had an "environment" checkbox so we could just do a fixed rotation, would be lovely :)
Hi,
Not sure what your workflow is, but randomizer is not a "rotate-only" node, so maybe another thing should be used or should be done in another way.
Do per-camera environment overrides apply to your case by the way?
-
Well it can be, just leave all values at 0 (including blending and uncheck randomize tile) and put in a fixed interval in rotation like 45-45. Or am I missing something here?
It does, but I use Pulze scene manager for this. It works great, but I still find it a hassle and silly having to load in the same HDRI multiple times just to be able to rotate it on a per camera basis.
I've just posted it as a feature request btw.
-
Well it depends what exactly you need.
If the same background/environemnt for all cameras - then it is environment overrides.
If the same environment rotated in real as camera rotates - then no rotation is needed I think, if the environment is full (spherical e.g.).
I think I am don't fully understand the use case and what exactly you need rotated in which case.
Aren't the available 3ds Max maps working for you?
-
Let me try and give an example:
We have an archviz scene: A new office building on a busy street.
Two images are needed of this building. One street view, and one from the courtyard behind the building. Client wants weather to be the same for consistency.
I start with the street view. I set up the scene with a corona bitmap and load and HDRI as primary light source, sky background and to get some reflection in the glass of the facade. I rotate the bitmap on the bitmap properties to get the effect I want.
Now, it's not always that you can get the light you want, the reflections in the glass of the sky AND the look of the directly visible sky you want. Sure you can change the directly visible sky in post etc. but thats not the point.
In order to achive control of the above, I would have to copy the HDRI bitmap node 2 times so I have a total of 3 of the same HDRI bitmap nodes. Now I can control environment rotation and output of each of them. One for environment lighting, one for reflection override and one for direct visibility override.
Now I want to reuse the same HDRI for camera angle 2 (the courtyard shot). However the HDRI used for the street scene doesn't give optimal light or might look wrong in reflections/direct visibility. If I just go in and rotate the HDRI directly, I lose the setup for the street view. Hence I would have to copy those 3 HDRI bitmap nodes again so I can adjust them as I want for the new camera angle. Ending up in a total of 6 copies of the same 1gig .exr file, just because I can't rotate it with nodes that I can hook into environtment/refl, refrac and direct override. Like in the way you could reuse a brick texture plugged in to different color correction nodes to reuse same file for different look.
What we want is to be able to do the above, but with only the same 1 HDRI bitmap node connected to any number of individual UV rotation nodes.
It keeps the max scene tidier, easier to control, less clutter/confusion/renaming in material editor and smaller max file size (i think).
Hope this helps :)
-
An image files that is loaded in Max will be loaded only once in memory, regardless of whether it's copied or instanced or uses different mapping/tiling settings, so there is no memory saving.
I can totally understand the need though and have wished for such a node many times.
Internally, the coordinates rollout is actually a separate node, it's just that Max doesn't offer it as a separate node, probably because Max developers never saw a need.
If you're open to using 3rd party maps, Bercon Maps plugin has a BerconMapping node, which is exactly what you're looking for. It also offers an additional 'Distortion' slot, also very useful in some cases.
(https://forum.corona-renderer.com/index.php?action=dlattach;topic=42435.0;attach=204829;image)
Personally, I'd also prefer Corona would offer such a map node (and also offer some sort of distortion/perturbation, too). 3rd party stuff can be problematic (some studios will not allow using them) or not recompiled on time for new Max versions etc.
-
Let me try and give an example:
We have an archviz scene: A new office building on a busy street.
Two images are needed of this building. One street view, and one from the courtyard behind the building. Client wants weather to be the same for consistency.
I start with the street view. I set up the scene with a corona bitmap and load and HDRI as primary light source, sky background and to get some reflection in the glass of the facade. I rotate the bitmap on the bitmap properties to get the effect I want.
Now, it's not always that you can get the light you want, the reflections in the glass of the sky AND the look of the directly visible sky you want. Sure you can change the directly visible sky in post etc. but thats not the point.
In order to achive control of the above, I would have to copy the HDRI bitmap node 2 times so I have a total of 3 of the same HDRI bitmap nodes. Now I can control environment rotation and output of each of them. One for environment lighting, one for reflection override and one for direct visibility override.
Now I want to reuse the same HDRI for camera angle 2 (the courtyard shot). However the HDRI used for the street scene doesn't give optimal light or might look wrong in reflections/direct visibility. If I just go in and rotate the HDRI directly, I lose the setup for the street view. Hence I would have to copy those 3 HDRI bitmap nodes again so I can adjust them as I want for the new camera angle. Ending up in a total of 6 copies of the same 1gig .exr file, just because I can't rotate it with nodes that I can hook into environtment/refl, refrac and direct override. Like in the way you could reuse a brick texture plugged in to different color correction nodes to reuse same file for different look.
What we want is to be able to do the above, but with only the same 1 HDRI bitmap node connected to any number of individual UV rotation nodes.
It keeps the max scene tidier, easier to control, less clutter/confusion/renaming in material editor and smaller max file size (i think).
Hope this helps :)
Much better.
I don't think you need a map for it, it will be a complicated setup for it, the best thing I can think of is to have "relative to camera" checkbox in environment mode, which will do the trick under the hood, which you will see in the attached video.
As I understand, you need a fixed environment no matter how the camera is rotated/placed.
For this you can use rotate with node option in CoronaBitmap, wire the node's Z rotation (I think this is the most important one unless you also want to tilt the environment map) to the camera's Z rotation.
The camera will be a placeholder for rendering - you will have the actual cameras in the scene, you will just align/place the dummy camera to them and and render from it, so the transformation's (and nodes rotation) are driven by it. And you will have a fixed environment. For animation/batch rendering, you can just keyframe the dummy camera.
Hope this helps.
-
Hmm... this serves that one example but still doesn't solve the general ability of a map that could:
- use one texture node and change only coordinates in a general scene-global way, without the need to wire things
- if the concept works the other way around (like with CoronaColorCorrection) one could use different maps and transform coordinates by a single coordinates map node
With scene tidiness in mind, wiring objects to maps in Max is highly problematic imo. Someone else in the studio opening your file might not understand what's wired where. Wiring parameters in Max is just hidden way too deep, and a person not selecting the right object might not find it at all. A map displays the stuff right in its properties in the most readable way there is.
Wiring is also problematic with animation playback, as wiring is reevaluated globally on all scene objects. Environment maps tend to be huge, so say good bye to scene responsiveness if you want to wire them.
---
-
I have reported this as a feature request at https://chaoscorona.ideas.aha.io/ideas/CMAX-I-143
Note: it is currently invisible since it's in "new" status and pending Tom's the Product Manager's review.
If you have any comments or would like me to change the description/title, please let me know. It was kind of hard for me to come up with a meaningful title.
-
I have reported this as a feature request at https://chaoscorona.ideas.aha.io/ideas/CMAX-I-143
Note: it is currently invisible since it's in "new" status and pending Tom's the Product Manager's review.
If you have any comments or would like me to change the description/title, please let me know. It was kind of hard for me to come up with a meaningful title.
Awesome, thanks
-
I have reported this as a feature request at https://chaoscorona.ideas.aha.io/ideas/CMAX-I-143
Note: it is currently invisible since it's in "new" status and pending Tom's the Product Manager's review.
If you have any comments or would like me to change the description/title, please let me know. It was kind of hard for me to come up with a meaningful title.
Thanks Maru, fingers crossed it passes the review ;)