1
$\begingroup$

is it possible to set an image texture to tile at a specific real world size? For example, if it's a picture of 10 rows of bricks, that would equate to 0.75m high. Is there a way of inputting this directly to generate the correct scaling? Or do I need to do a time-consuming sum of working out how many times the image should fit over the size of my object?

Ideally it would be tied to the material rather than being object-dependent, as my brick texture would need to appear the same size, regardless of what objects I apply it to.

$\endgroup$
4
  • $\begingroup$ not sure what you mean, the size of your Image Texture will depend on the size of the object on which it is projected, so what counts is the object size, the Image Texture has no direct relation to your world size $\endgroup$
    – moonboots
    Jun 25, 2020 at 9:25
  • $\begingroup$ But is there a way to tie the size to the texture? In CAD software, you tend to define the real world size of each material. So your timber board texture might relate to 2.95m wide, say. You'd input this into the material, and whenever used it would start off tiling at 2.95m, regardless of the object - given that the width of a real life timber board would be consistent. Blender seems to want me to calculate it each time it's used on each object, which seems a bit inefficient. Can it not be set to ignore the size of the object, and just appear consistently across different sized objects? $\endgroup$ Jun 25, 2020 at 9:54
  • $\begingroup$ If you use the Object output of the Texture Coordinate, and if you resize the object in Edit mode, or in Object mode and apply the scale, the texture will keep the same size, maybe it's what you're looking for? It won't work anymore if you unwrap though $\endgroup$
    – moonboots
    Jun 25, 2020 at 10:16
  • $\begingroup$ Thanks, that sounds pretty good. I need to experiment a little more I think! $\endgroup$ Jun 25, 2020 at 14:02

1 Answer 1

1
$\begingroup$

I'm a little late because I wanted to say something similar to what moonboots gave as an answer. I'll give you a short example how I would do it:

  1. Let's say the texture should be real life size 75 x 50 cm
  2. Import the textures with "Images as Planes"
  3. In the Image Texture node of the material, set the extrapolation mode to "Repeat" instead of "Clip"
  4. Connect a Mapping node and a Texture Coordinate node to the image
  5. Connect the Mapping node to the "Object" output of Texture Coordinate
  6. In the Mapping node set Scale X to 1 / 0.75 (75 cm) and Y to 1 / 0.5 (50 cm)

Now you can scale the plane to the size you need it for a floor or wall or whatever - the texture will be the correct real life size as long as you apply the objects scale so that it's 1/1/1.

The only problem is that - since the texture is not connected to any UVs or geometry of the new object - it will definitely not work well on curved objects and is only suitable for things like floors or walls or similar flat, even surfaces. To position it as desired you can use "Location" in the Mapping node.

Note: to move the texture for example 20 cm in X direction, you have to divide this by the X dimension of 75 cm: 0.2 / 0.75

The easiest would be to connect the "Location" input to a Vector Math node set to "Multiply" where you already set the same factors as in "Scale".

$\endgroup$
4
  • $\begingroup$ Thanks - that's really helpful. Aiming for arch vis output so the majority of surfaces will be planes / boxes anyway. Thanks! $\endgroup$ Jun 25, 2020 at 14:01
  • $\begingroup$ Okay, I've been playing with this workflow and it seemed great, until I realised I needed to have three separate tiling origins for my three different walls. What happens then - I need to create three copies of the material, each with a unique Location input? Or is the more standard workflow simply to create a single material at "100%" and then apply the scale and location separately to each object that uses it via UV unwrapping? $\endgroup$ Jul 2, 2020 at 10:24
  • $\begingroup$ Well, my way of doing this is creating one wall, then duplicate it and rotate it. This way you need only one material, because the material orientation changes with the object orientation. Then I scale the wall in edit mode (or move the vertices to the correct dimensions) and the tiles stay the real world size. $\endgroup$ Jul 3, 2020 at 11:12
  • $\begingroup$ Okay, thanks. I'll investigate further! $\endgroup$ Jul 3, 2020 at 14:34

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .