Gå til innhold

Proseduralt generere en volumetrisk 3D planet


Anbefalte innlegg

I et privatprosjekt jeg holder på med nå, så har det kommet opp at jeg trenger å proseduralt generere voxel modell av en planet.

 

Det jeg har gjort inntill nå, er å danne et octree som omslutter hele planeten. I hvilket som helst av disse cellene skal det kunne on-the-fly genereres voxler som presenterer en vilkårlig bit av planeten som kan plasseres vilkårlig relativt til cellens posisjon. Det hadde også vært fint om dette gikk å danne på de ytre cellene også (altså ikke bare i de innerste), for å kunne danne en mipmap modell når man kommer et stykke unna.

 

Det som egentlig jeg fant var litt problematisk, var at en slik funksjon nødvendigvis må danne en sømløs figur

 

Foreløpig har jeg bare en slik funksjon:

 

bool GenerateVoxel(const float radius, const float x_angle, const float y_angle, Particle& result);

Den må føre til sømløs tiling, samt at samme verdi inn bør gi samme verdi ut.

Dette er geografiske koordinater, ikke kartesiske, av den grunn at jeg tenkte det var enklere å genere en rund kule med slike parameter. Dersom funksjonen returnerer true, så er det blitt plassert en ny partikkel i result. Så luft skal alltid returnere false.

 

Foreløpig har jeg bare tenkt perlin-noise i flere lag, men kunne tenkt meg noen innspill hvis noen har noe.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...