Seeded Procedural Object Placement
Hi,
I'm sorry if this is a bit basic (it feels like it should be simple but my brain has given up). I'm making a procedural world (for fun, I'm that interesting) and I'm having a bit of trouble getting my head around a particular aspect.
So I have my terrain mesh chunks and whatnot, and I have object placement (just trees and rocks for now). Everything is is working from an unseen grid so that I can keep track of objects for a possible game mechanic I might do, but to make it look a bit less sterile, I've introduced some random aspects. So for a bit of a code example;
GameObject newTree = Instantiate (
treeModel[randomIndex],
new Vector3(x + randomOffset, y, z + randomOffset),
randomQuaternion
);
newTree.localScale *= randomScaleModifier;
I'm typing from memory so ignore any syntax errors, it all works in my project. What I'm struggling with is a good way to make these random values repeatable.
I pass my seed to the terrain mesh generator and I can recreate the same terrain every time, but how do I translate that to these values so that an object placed in a specific position will generate the same offset, rotation, and scale modifers each time?
Thanks for any help, and again, I apologise if I'm missing something obvious. I lost track of time and just realised I'd be coding away for about 5 hours straight (at the end of a regular work day) so it wouldn't surprise me if my brain is just firing blanks.
John
Answer by graviteegames · Jan 27, 2018 at 05:22 PM
@beagrie83 I would suggest a Perlin noise generator since it generates the same values per input.
{
PerlinNoiseGenerator = new Perlin();
}
public float GetValue(float x, float z)
{
return (float)(PerlinNoiseGenerator.GetValue(x, seed, z) / 4f) + 0.5f;
}
also you need to use libnoise.generator for this to work
Your answer
Follow this Question
Related Questions
Trying to implement xorshift with deplorable results (PRNG) 0 Answers
Is Random.InitState's Seed's random generated numbers change computer to computer? 0 Answers
Best algorithm for large scale procedural level generation? 0 Answers
Only instantiate random seed once 1 Answer
Dungeon Generator script 0 Answers