4
$\begingroup$

I have geometry node's group which creates building based on specified parameters. And I'm trying now to make grid of random buildings. I tried to do it like that: enter image description here

But connection between random value and my group is red. What the correct way to do something like this? And maybe you can point me to some documentation because I think I didn't grasp some concept pretty well which causes this issue. Inside of building group: enter image description here

$\endgroup$
8
  • $\begingroup$ I'm not sure what's inside that group, but a guess, taking under consideration the basic GEo Node system is to connect a vector math node after the Random value, so it will be something like RANDOM VALUE >VECTOR MATH NODE > BUILDING $\endgroup$
    – Emir
    Commented Dec 9, 2021 at 14:08
  • $\begingroup$ The output from this node is a field (diamond socket and dashed connector) and it needs to be connected to a field input (diamond socket). Could you show the inside of your node group too ? $\endgroup$
    – Gorgious
    Commented Dec 9, 2021 at 14:11
  • $\begingroup$ @Gorgious Added image of what inside "building" group $\endgroup$
    – Adam Levy
    Commented Dec 9, 2021 at 14:12
  • $\begingroup$ @Emir adding math node doesn't fix it $\endgroup$
    – Adam Levy
    Commented Dec 9, 2021 at 14:13
  • $\begingroup$ Did you try change random to integer? $\endgroup$
    – Chris
    Commented Dec 9, 2021 at 14:36

2 Answers 2

2
$\begingroup$

Unfortunately it seems (?) we lost the ability to generate one random value per node tree instance, now all random values are evaluated as fields. Thankfully there is a hacky workaround :

We capture the attribute generated using a random value field on geometry with only one vertex to prevent the overhead of computing the fields on denser geometry, and then we get the mean (or max, or min... doesn't matter since there is only one value to compute) value and use it afterwards.

enter image description here

It can be reduced to a handy node group to be reused later :

enter image description here enter image description here

Result :

enter image description here

$\endgroup$
4
  • $\begingroup$ Is it possible with this approach now instantiate this resulted cube on grid for example with each instance having it's own seed? To get grid of randomly sized cubes $\endgroup$
    – Adam Levy
    Commented Dec 9, 2021 at 16:54
  • $\begingroup$ Well then you don't even need to hack the random value, this is what the fields are for. i.sstatic.net/uNsZA.png $\endgroup$
    – Gorgious
    Commented Dec 10, 2021 at 7:43
  • $\begingroup$ Yes I understand how to make different scales on grid as you shown. But in my case it's not just scale but parameters which control amount of house's floors, windows positions etc. And I cannot find way to make it with fields. And with random hack value I'm still getting same house on each point $\endgroup$
    – Adam Levy
    Commented Dec 10, 2021 at 9:02
  • $\begingroup$ I think, the root cause of your problem is, that the Instance input of the Instances on Points node is not a field. $\endgroup$ Commented Mar 21, 2022 at 18:46
0
$\begingroup$

I think you have to take a different approach to solve this type of problem.

Instead of generating a shape with random features, then trying to duplicate it. You must generate ALL of your shapes first, then apply the random features to them all.

E.g.

This example makes a 'floor' shape and applies to cubes randomly to the outside of it, then instances that along the points on a line.
Example not working nodes layout

Trying to instance this mesh will give you the same mesh on every floor: Example output

This example takes a curve, instances some 'floors' along it, then realizes those instances and applies the transformation to the instances, giving you a different pattern on each floor.

Working Example Layout Working Example Output

I think this class of problem can normally be modified in this way, it just takes a different mindset.

$\endgroup$

You must log in to answer this question.

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