13
$\begingroup$

How can I adjust the random seed used for the textures in the Displacement modifier?

For example, I have a Displacement modifier using a Voronoi-Minkowski 4 texture that creates a nice look for a rock. However, I want to have multiple "random" variants of this rock. When I duplicate the rock and the texture, the pattern is identical:

Rocks with identical pattern

I can adjust the pattern by setting the texture space to Global in the Displacement modifier settings. However, this seems like a clumsy/hackish solution. What really makes sense is just a Seed property in the texture.

I have tried translating and scaling the texture space with ShiftT, but this does nothing (surprisingly).

What is the best way to accomplish this?

$\endgroup$
6
  • 1
    $\begingroup$ I think it's really the only way right now (object coordinates work too, but that's basically the same workaround as global coordinates). Would indeed be good to change that. $\endgroup$
    – JulianHzg
    Aug 19, 2013 at 18:40
  • $\begingroup$ Using object coordinates is not quite the same as using global coordinates, because it does not depend on the location of the object being displaced, only that of the displace object. So it's a lot more like a seed, and you can have different displace objects per modifier. $\endgroup$
    – gandalf3
    Aug 19, 2013 at 19:40
  • $\begingroup$ How about using the UV coordinates? You could randomize those with a script. $\endgroup$
    – CharlesL
    Aug 19, 2013 at 19:49
  • $\begingroup$ good way of doing it: blender.stackexchange.com/questions/1795/random-maps-in-cycles $\endgroup$
    – krivar
    Aug 21, 2013 at 19:08
  • 1
    $\begingroup$ @krivar I wish, but textures aren't node-based. This is a displacement texture, not a Cycles texture. $\endgroup$
    – wchargin
    Aug 21, 2013 at 22:35

4 Answers 4

6
$\begingroup$

To get the equivalent of translating and scaling the texture space, you will need to use Object coordinates for the displace modifier.

enter image description here

This allows for displacement independent of the location of the object being displaced.

For example, using Global coordinates, let's say you want a rock to be in a certain location, but it is not being displaced in the way you want.
using global coordinates the rock can only be displaced in one way per location.

Using Object coordinates, you can adjust the displacement by moving the object being used as Texture coordinates without moving the actual rock.

If you then decide to move the rock but want to keep the way it is displaced, all you have to do is move both the rock and the Texture coordinate object.

enter image description here

$\endgroup$
3
$\begingroup$

The trick to random variations is to use drivers for the desired value.

To start, create a new text block in the text editor. Give the text block a name ending in .py (this allows you to register the script so that it will be automatically run on opening the blend file).

Fill the script with the following text -

enter image description here

After running the script you will have access to the specified functions within your driver expressions.

Right click on a value and Add Driver (or press D with cursor over value). Within the graph editor you can modify the driver expression to suit your needs.

enter image description here

Credit goes to Dave Miller for his drivers tutorial which contains more info.

$\endgroup$
3
  • $\begingroup$ I'm not sure I understand completely. Where would one plug this driver in, to act as a displacement seed? $\endgroup$
    – gandalf3
    Sep 13, 2013 at 6:55
  • $\begingroup$ Any value that alters the appearance of the displacement. Most likely this will be values within the texture used to displace. You can add a driver to the colour and location of stops within a colour ramp, the brightness/contrast, Basis, even the texture type. $\endgroup$
    – sambler
    Sep 13, 2013 at 8:11
  • 1
    $\begingroup$ I don't think that's a good solution because 1) changing any of those inputs changes the characteristics of the texture, rather than making it another version of the same texture. When you've found a set of texture settings that do what you want, you REALLY don't want to change the fundamental values (bright, contrast, color, etc), you just want another one that doesn't look identical. 2) the texture will not look "different," just modified. E.g. changing the contrast will leave the hills and valleys (lights and darks) in the same place, they'll just be more or less extreme. $\endgroup$
    – Matt
    Dec 18, 2013 at 15:45
0
$\begingroup$

It sounds like you want to be using UV coordinates. If you don't want to modify them directly you can use a UV Warp modifier before your displacement.

UV Warp uses 2 objects to define a transformation which is applied to the UV coordinates.

$\endgroup$
0
$\begingroup$

I often encounter this same problem, but I solve it a different way.

Firstly, as @gandalf3 suggests in his comment on the first answer, I don't think it's possible to modify the seed of the texture, with or without a driver.

I usually add a mapping node for each texture that I want to be different. I'll give each one some different x, y, and/or z translation. This uses a different part of the texture without affecting its scale or other characteristics, and doesn't require another object to keep track of.

$\endgroup$
2
  • $\begingroup$ Yes, this would work for Cycles textures, but this is a texture for a displacement modifier. $\endgroup$
    – wchargin
    Dec 18, 2013 at 23:50
  • $\begingroup$ You can still use the node editor to create the texture, IIRC there's a texture output node? Something like that? Sorry, not sure. Or you can just adjust the mapping in the texture panel, for each texture. $\endgroup$
    – Matt
    Dec 19, 2013 at 17:34

You must log in to answer this question.

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