1
$\begingroup$

I can take a plane, cover it in grass and drop it into an HDRI meadow for background lighting. Parts of the meadow are dark others not. Awesome... Except, my plane is tiny and my HDRI meadow is huge. Blender allows me to rotate the HDRI so that I can put the dark bits on the left, or the right. But what I really want is to stretch the plane, or shrink the HDRI, so that the plane really looks like it is at the same scale dropped into the background HDRI. If I type in two scale values then the HDRI stretches unpleasantly, but as soon as I type in three identical scale values it takes me right back to the start again.

Why is rotation of the HDRI allowed but not scale or translate. Or maybe it is allowed and I'm just messing up?

$\endgroup$
1
  • $\begingroup$ Thanks for the replies. Adding the scale doesnt work, once you type in three equal values it goes away again. I liked the answer from Alexis which is "because it is an infinite sphere". So deformation and rotation make sense, but translation and uniform scale do not. At least, his answer "clicked" for me. And that I should probably always make sure that world is transparent in the render so that I'm never tempted to try to match it. Thanks for feedback. $\endgroup$
    – Tunneller
    May 6, 2021 at 9:36

2 Answers 2

3
$\begingroup$

Lighting provided by the World environment is always considered to be infinitely far away from the scene. In other words, when you use HDRI lighting via an Environment Texture node connected to a Background node, you are essentially projecting the HDRI onto an infinitely large sphere wrapped around your scene. Correspondingly, the actual information recorded in a HDRI is generally a spherical capture of an environment mapped onto two flat dimensions using an equirectangular projection.

Since the World is an infinitely large sphere, the notion of “proportionally scaling” it doesn’t make very much sense. If you start with an infinitely large sphere and halve its size, it’s still infinitely large. Since this does not in any way affect how the HDRI is projected onto the sphere, such an operation has no effect whatsoever.


Rather than thinking about scaling or otherwise transforming the World sphere itself, it’s more useful to think about altering the way the HDRI is projected onto the sphere. For example, suppose we use this HDRI for our world lighting, which looks like this using the standard projection:

We can smoothly distort the projection along the Z axis using a Vector Curves node, effectively adjusting the position of the equator:

This produces an image like this:

Note that any smooth reprojection fundamentally distorts different parts of the image differently. In the above example, our remapping of the Z axis stretches the sky and pinches the ground, leading to a curved horizon line. This probably isn’t what you want.


In practice, it is likely to be difficult to get exactly the transformation you want. This might seem frustrating, since all you want to do shrink the ground plane without distorting other parts of the image. Unfortunately, an HDRI just doesn’t contain enough information to do that.

If you wanted to perform such a transformation without any distortion, you’d need to know the depth of the various points in the HDRI so you could perform perspective correction as part of your reprojection. Of course, HDRIs have no such information: they’re just a spherical capture of the light that reaches a given point in space, which effectively bakes the projection of that point into the image data.

In other words, you can no more adjust the size of individual objects in an HDRI than you can rescale or reorient individual objects in an ordinary photograph. The information just isn’t there.

$\endgroup$
1
$\begingroup$

Yes you can. Go into the shader editor and switch to 'world' in the window's menu bar:

selecting world in the drop down

Make sure "Use Nodes is checked. You'll see your HDR world shader look something like this:

simple hdr world shader

You need to add the texture coordinate node and mapping node as shown here:

full world shader

Then you can use the mapping mode to modify your HDR as you wish, within the limits imposed by it being an HDR.

$\endgroup$

Not the answer you're looking for? Browse other questions tagged or ask your own question.