λ΄κ° μ΄κΈ°μ μκ°νλ λ°©λ²μ μ μ¬κ°νμ λ²μλ₯Ό μ§μ νκ³ , νΉμ μ§μ μ κ°μ μ μ¬κ°ν μ€μ¬μ κΈ°μ€μΌλ‘ λμΉμ μ μλκ°κ³Όμ μ€κ°κ°μΌλ‘ μ μνλ λ°©λ²μ.
μ΄λ κ² λλ©΄ λ Έμ΄μ¦λ§΅μ΄ μ€μμ κΈ°μ€μΌλ‘ λμΉμ΄ λκΈ° λλ¬Έμ, μ μ¬κ°νμ κ°μ₯μ리μμλ μ νν λ κ°μ μ€κ°κ°μ μ΄μ©νκ³ , μ€μ¬μμλ λ³Έλμ λ Έμ΄μ¦κ°μ μ΄μ©νκ³ ,
κ·Έ μ¬μ΄μμ κ·Έ λμ 보κ°λ κ°μ μ΄μ©νλ λ°©λ²μ μκ°νκ³ μμμ
μ΄μ°λλ μ°μμ μ΄κΈ΄ ν ν λκΉ μ΄μ΄μ§κΈ΄ ν κ±°μ. κ·Όλ° λΆνμ€ν΄μ μ΄κ²μ κ² μ°Ύμλ΄€μ
μμ§ν μ무λ κ΄μ¬μκ² μ§λ§, κ°νμ΄ λμμ μ μ΄λ³΄λ €κ³
https://gamedev.stackexchange.com/questions/23625/how-do-you-generate-tileable-perlin-noise
μ μμ μΈ λ°©λ²μ λ Έμ΄μ¦ν¨μλ₯Ό μ§μ λ§λ€μ΄μ, λλ€κ° μ체λ₯Ό λ°λ³΅λκ² λμ€κ² νλκ±°λΌλλ°,
λ μμ§λ νλ¦°/μ¬νλ μ€ λ Έμ΄μ¦μμ μ΄ λλ€κ°μ ꡬνλκ² λν΄νκ² λκ»΄μ§λλΌ
μ¬κΈ°μ νμ΄νκ° κ·ΈλΌλμΈνΈλΌκ³ κ·Έλ₯ (x,y)κ°μ΄λΌ μκ°νλ©΄ λ¨
grad[]λ°°μ΄μλ κ° μ’νμ λ€μ΄κ° μ μλ κ·ΈλΌλμΈνΈ κ°λ€μ λ£μ΄λκ³
perm[κΈΈμ΄ : 256? 512?]λ°°μ΄μ λλ€ν μλ€μ λ£μ΄λ . μ€μ ν μλκ°μ λ°λΌ μ΄ λ°°μ΄μ΄ μ¬μ λ ¬μ΄ λλ€λλ―ν¨. μ΄κ±΄ μ λͺ¨λ₯΄κ² λ€
grad[]μ μμκ° 8κ°κ° μλ€λ©΄
(x,y)μ’νμ λμνλ κ·ΈλΌλμΈνΈ κ°μ grad[perm[x + perm[y]] % 8] λΌκ³ ν¨.
λ κ² κ°λ€λ λλμ λλλ° perm[x + perm[y]]κ° μ λ§ λλ€ν κ°μ λ΄λμμ§κ° μ°μ°νκ² λκ»΄μ§
perm[]μ λλ€ν μκ° λ€μ΄μμΌλ λΉμ°ν λλ€νκ² λμ€κ² μ§λ§, κ·Έλ₯ μμ μ²μ보λ λ°©μμ΄λΌ μ κΈ°ν λ°λ¦.
μλ¬΄νΌ μ¬κΈ°μ (x,y)μ’νμ λμνλ κ·ΈλΌλμΈνΈ κ°μ ꡬνκΈ° μν΄ get(x,y)λ₯Ό μ¬μ©νλ λμ , get(x%4, y%4)λ₯Ό μ¬μ©νλ€λ©΄, 그리λ 4μΉΈλ§λ€ λ°λ³΅λλ ν¨ν΄μ΄ λμ€κ² μ§.
μ΄κ±΄ λ Έμ΄μ¦ ν¨μλ₯Ό μ§μ μμ ν΄μΌ νκ³ , λ€λ₯Έ λ°©λ²μ μ°Ύμλ΄€μ.
λ°λ‘ λ°μ μλλΌ
μ§μ§ μμλ λͺ»ν λ°©λ²μ΄μμ.
https://www.gamedev.net/blog/33/entry-2138456-seamless-noise/
https://ronvalstar.nl/creating-tileable-noise-maps
4dλ Έμ΄μ¦λ₯Ό μ΄μ©νλ λ°©μμ.
κ·Έκ±Έ μ€λͺ νκΈ°μ μμ
μ°μ 1dλ Έμ΄μ¦λ₯Ό 루νμν€λ λ°©λ²μ
2D λ Έμ΄μ¦ μμ μμ 그리면 λ¨.
μμ λ°λΌκ°λ©° κ°λ€μ λ΄λ³΄λ©΄, μ΄ κ°μ λ°λ³΅λλ λ
Έμ΄μ¦ κ°μ΄ λκ² μ§.
μ μ΄μ μ΄κ²λΆν° μ§μ§ μ°½μμ μΈ μμ΄λμ΄λΌκ³ μκ°ν¨. λ¬Όλ‘ μ΄ λ°©λ² μ체λ λ€λ₯Έκ³³μμ λ¨Όμ μ°μκ² μ§λ§
μνλ λ²μκ° 0~12λΌλ©΄,
noise(0)μ 12μλΆλΆ, noise(1)μ 1μλΆλΆ, noise(7)μ 7μλΆλΆ, noise(2.24)λ 2.24μ λΆλΆμ λ Έμ΄μ¦κ°μ ꡬν΄μ£Όλ©΄ λ¨.
μνμ΄κΈ°λλ¬Έμ, 12λ§λ€ λ°λ³΅μ΄ λ κ±°μ.
2dλ Έμ΄μ¦λ μ΄λ»κ² 루νμν€λλ©΄, 3d곡κ°, ꡬμ 2dνλ©΄μ λ§€νμμΌμ£Όλ©΄ λ§μ°¬κ°μ§λ‘ λ°λ³΅λλ ννκ° λμ΄.
κ·Όλ° 2dνλ©΄μ 3dμ λ§€νμμΌ°κΈ°λλ¬Έμ, μ¬ν μκ³‘μ΄ μκΈ°κ² λ¨.
1dμμλ 2dνλ©΄μ μλ²½νκ² μ’νλ§λ€ λμΌν 거리λ§νΌ λ¨μ΄μ Έ μκ² λ§€νν μ μμμ§λ§,
3dμμλ κ·Έλ°μμΌλ‘ μλ²½νκ² κ΅¬μ 2dνλ©΄μ΄ λ§€νλ μ’νλ₯Ό ꡬνλ 곡μμ΄ μ΅μ§λ‘ 꾸겨μ λ§€ννλ λ°©λ² μΈμλ μλ κ² κ°μ.
κ·Έλμ μ λ§ν¬μ μ΄ λ§ν¬μμ 4d λ Έμ΄μ¦λ₯Ό μ΄μ©νλ λ€λ₯Έ λ°©λ²μ μκ°νλλ°, μ΄κ² ν΅μ¬μ.
xμ’ν, yμ’νλ₯Ό λ°λ‘λ°λ‘ μκΉ 1dλ Έμ΄μ¦λ₯Ό μ΄μ©νλ― 2dνλ©΄μ μνμΌλ‘ λ§€νμμΌμ€μ,
(x,y)λ₯Ό ꡬν λ, xμ λμνλ 2dνλ©΄μ μμΉ (x1,y1)μ ꡬνκ³ , yμ λμνλ 2dνλ©΄μ μμΉ (x2,y2)λ₯Ό ꡬν¨.
κ·Έλ¦¬κ³ λ Έμ΄μ¦4D noise(x1,y1,x2,y2)λ‘ κ°μ ꡬνλ©΄ λ¨.
νμΌμ κ²½κ³λ₯Ό μ΄λ€ λ°©μμΌλ‘ λλλΌλ, μμ±λ (x1,y1,x2,y2)λ λΆλλ½κ² μ°μμ μΈ μ’νκ° λ¨.
κ·Έλμ μ΄κ±Έ μ μμλ΄€λλ©΄, μ νλ ν¬κΈ°μ 볡μ λ§΅μ μ μ°¨μ μμ±μΌλ‘ λ§μ, λμ λ± μΈμΈν λν μΌκΉμ§ κ³νν΄μ λ§λ€κ±΄λ°,
μ΄κ² λ§μ½ νμΌλ§μ΄ λλ€λ©΄? λ§μΉ 무νλ§΅μ²λΌ λ°λ³΅λκ² μ§νμ λ‘λμν¬ μ μλ€λ©΄?
μ§κ΅¬μ²λΌ νλ°©ν₯μΌλ‘ κ³μ κ±Έμ΄κ°μλ μλ μλ¦¬λ‘ λμμ¬ μ μλ€λ©΄?
λμΆ© κ°λ λ§ λ³΄κ³ μ λ§λ€μ΄ λ³΄λ €κ³ νλλ° λΉ‘λκ΅¬λ¦¬λΌ λͺ»ν κ·Έ ν¨μ - dc App
머리λ₯Ό μ°μ§λ§κ³ μκ°λ½μ μ¨λΌ...
https://observablehq.com/@sw1227/distorting-sphere-with-cyclic-perlin-noise