The function below uses Perlin noise octaves to calculate the height of a vertex based on its coordinates and the number of octaves to be applied. It is a slightly modified version of the original code introduced on TTG’s generation step 3. The values of the base frequency, persistence and lacunarity are constant for demonstration purposes.
static float GetHeight(float x, float y, uint octaves, Vector2[] offsets)
{
float height = 0;
var amplitude = 1f;
var frequency = 0.055f;
const float persistence = 0.5f;
const float lacunarity = 2.5f;
for (var i = 0; i < octaves; i++)
{
var offset = offsets[i];
var filterX = x * frequency + offset.x;
var filterY = y * frequency + offset.y;
var noise = Mathf.PerlinNoise(filterX, filterY);
height += amplitude * noise;
frequency *= lacunarity;
amplitude *= persistence;
}
return height;
}
A fairly similar function is used in TTG’s code, with parameterized values instead of hard-coded ones.
The outcome
The GIF below displays the usage of Perlin noise octaves, with four terrains: the terrain we’ve been using as an example in this section, and three other ones; each one with an increasing number of Perlin noise octaves, from 1 to 3 (check the left bottom corner of the image for octave count). All terrains were generated with a persistence of 0.375 and a lacunarity of 2.52.
The value of the octaves is clear: they add detail without changing the scale of the terrain, delivering a more natural-looking outcome. That’s exactly what we were looking for.
Perlin noise octaves are a simple, yet quite satisfactory solution for adding more detail to terraced terrains. This feature shipped as part of TTG 1.2.0, where both the API and the helper component were updated to support Perlin noise octaves. On the next release, I plan to add added (2.0.0) spheres as a basic terrain shape, allowing terraced planets to be created using TTG.
Estou aprendendo e desenvolvendo com geração de terreno usando duas coisas simples e poderosas: funções senoidais e Perlin Noise.
A senoidal uso como “estrutura base”: ela cria ondas grandes e suaves, tipo colinas e vales. Regiões mais altas, mais baixas, transições previsíveis. É matemática pura: sin(x) + sin(z) já te dá uma paisagem básica.
Por cima disso eu jogo Perlin Noise, que é um tipo de ruído gradiente, criado pelo Ken Perlin nos anos 80. A graça dele é que, diferente de um ruído aleatório comum, ele muda suavemente, criando padrões naturais: montes, erosões, irregularidades — tudo com “cara de natureza”.
O pipeline é basicamente:
height = baseSine(x, z)
+ perlin(x * freqLow)*ampLow
+ perlin(x * freqHigh)*ampHigh
a senoidal define o terreno macro
o Perlin de baixa frequência cria grandes formas orgânicas
o Perlin de alta frequência adiciona detalhes finos
O resultado final é um terreno que parece natural, mas nasce 100% de matemática e ruído controlado. Zero heightmap externo, zero modelos prontos: só funções.
Acabei de aprender duas coisas muito importantes que nem fazia ideia que existia. Noise (barulho) / matemáticamente, estatísticamente falando, seria como mapear numeros aleatórios, só que não existe realmente nada aleatório[no mundo computacional, infelizmente no mundo real.... seria demais pra esse post], tudo é determinístico e previsível. Não faz o menor sentido, mas faz, q porra louca é essa velho. Acho que vou pra facul só pra aprender essas coisas de forma correta velho. Patos. TÔ APAIXONADO. TÔ DOENTE.
Fui recrutado para ser Tradutor Voluntário no Skill Legend Royale
da Steam (Curioso, entreguei a tradução do rabino, hoje fiz o site do meu mano com o André e agora essa notícia maravilhosa, esse é meu segundo trabalho como tradutor.
(Trabalhei mais como tradutor do que T.I na vida amo as duas profissões igualmente, ambas só perdem pro meu desejo de falar sobre Torah
)
Fui tentar ouvir uma palestra do Rabino pra estudar as conexões tava difícil. Então fui pesquisar addons para transcrever o vídeo inteiro de uma vez. Achei pelo preço de 40 reais.
ChatGPT replicou e aqui está de graça:
https://github.com/walbarellos/Youtube-Transcript
Quem vai pagar 40 reais por um script com menos de 100 linhas? kkkkkkkkkkkkkkkkkkkkk
Gosto de programar e gosto mais ainda de judaísmo. Um Indigena no Norte do Brasil.