심플렉스 노이즈

Simplex noise

심플렉스 노이즈(Simplex noise)는 Perlin 노이즈("클래식" 노이즈)에 필적하는 n차원 노이즈 함수를 구성하는 방법이지만 방향 아티팩트가 적고 차원이 높을수록 계산 오버헤드가 낮다.켄 펄린은 특히 더 높은 차원에 있어서 그의 고전적인 소음 기능의 한계를 해결하기 위해 2001년에[1] 이 알고리즘을 설계했다.

Perlin 노이즈에 비해 심플렉스 노이즈의 장점:

  • 심플렉스 노이즈는 계산 복잡성이 낮고 배수가 적게 필요하다.
  • 단순 노이즈 확장(4D, 5D) 계산 비용이 훨씬 적은 더 높은 차원(4D 5D)으로: 은 고전적 O ) 차원에 대해 2n ) {\가 아닌 O(n)[2] displaystystytympatchstylease n)입니다
  • 심플렉스 노이즈에는 눈에 띄는 방향 아티팩트가 없지만(시각적으로 등방성) 다른 차원에 대해 발생하는 노이즈가 시각적으로 구별된다(예: 2D 노이즈가 3D 노이즈의 2D 슬라이스와 다른 외관을 가지며, 더 높은 차원에[3] 대해서는 점점 더 나빠 보인다).
  • 심플렉스 노이즈에는 어디에서나 상당히 저렴하게 계산할 수 있는 잘 정의되고 연속적인 구배(거의)가 있다.
  • 심플렉스 노이즈는 하드웨어에서 구현하기 쉽다.

고전적 소음은 주변 하이퍼그리드 끝점(즉, 2D에서[citation needed] 북동, 북서, 남동, 남서)의 구배 사이에 보간되는 반면, 심플렉스 소음은 공간을 단순화(즉, - 차원 삼각형)로 나눈다.이것은 데이터 포인트의 수를 감소시킨다. 차원의 하이퍼큐브에는 모서리, n } 에는 n + 1 +1} .삼각형은 2D로 등각형이지만, 더 높은 차원에서는 단순화가 거의 정규일 뿐이다.예를 들어, 기능의 3D 케이스에 있는 타일링은 사방형 분산형 벌집모양의 방향이다.

심플렉스 노이즈(Simplex noise)는 보통 2, 3, 4 또는 5차원에 걸쳐 노이즈가 계산되는 컴퓨터 그래픽 애플리케이션에 유용하다.보다 높은 치수의 경우, n-심플렉스 코너 주변의 n-spare가 충분히 밀도 있게 포장되지 않아 함수의 지지도가 감소하고 공간의 큰 부분에서 0이 된다.

알고리즘 디테일

심플렉스 노이즈는 가장 일반적으로 2차원, 3차원 또는 4차원 함수로 구현되지만, 어떤 치수에 대해서도 정의할 수 있다.구현에는 일반적으로 좌표 왜곡, 단순 하위 분할, 구배 선택 및 커널 합계의 네 단계가 포함된다.

좌표 기울기

공식을 사용하여 입력 좌표가 변환됨

, where

이것은 좌표를 A*
n
격자에 배치하는 효과가 있는데, 이것은 기본적으로 점 사이의 거리(0, 0, ..., 0)와 (1, 1, ..., 1)가 점 사이의 거리(0, 0, ..., 0)와 같을 때까지 주 대각선을 따라 뭉쳐진 고주방 벌집정점 배열이다.

그 다음 결과 좌표(x', y', ...)를 사용하여 입력 지점이 있는 기울어진b 단위 하이퍼큐브 셀과 그 내부 좌표(x' = floor(xi' = floorb(xb')를i 결정한다(xb' = floor(x' = x' - x', y', ...).

단순분할

위의 사항이 결정되면 내부 좌표 값(xi', yi', ...)을 감소 순서에 따라 정렬하여 점이 위치한 Schléfli Orthoscheme simplex를 결정한다.그러면 결과 심플렉스(simplex)는 (0, 0, ..., 0)에서 (1, ...), (1, ..., 1)까지 순서 에지 통과에 해당하는 정점으로 구성되며, 중 n! 가능성이 있으며, 각각은 좌표의 단일 순열에 해당한다.즉, 0 좌표에서 시작하여 내부 좌표의 최대 값에 해당하는 값에서 시작하여 연속적으로 추가되며 가장 작은 값으로 끝난다.

예를 들어 점(0.4, 0.5, 0.3)은 정점(0, 0, 0), (0, 1, 0), (1, 1, 0), (1, 1, 1)이 있는 심플렉스 내부에 위치한다.yi' 좌표가 가장 크기 때문에 먼저 추가된다.그 다음 xi' 좌표, 그리고 마지막으로i z'가 뒤따른다.

그라데이션 선택

각 단순 정점은 비스듬한 하이퍼큐브의 기본 좌표에 다시 추가되고 의사 무작위 구배 방향으로 해시된다.해시는 순열표나 비트 조작 방식을 가장 많이 사용하지만 여러 가지 방법으로 구현될 수 있다.

방향 아티팩트를 최소한으로 유지할 수 있도록 포함할 그라데이션 세트를 선택할 때 주의를 기울여야 한다.

커널 합계

심플렉스 각 n + 1 정점의 기여는 각 정점을 중심으로 반경방향 대칭 커널의 합계로 계산된다.첫째, 각 정점의 짝짓기되지 않은 좌표는 역식을 사용하여 결정된다.

, where

이 점은 입력 좌표에서 차감하여 보정 벡터를 구한다.이 부동 변위 벡터는 다음 두 가지 목적으로 사용된다.

  • 도트 제품을 사용하여 외삽된 그라디언트 값을 계산하는 방법.
  • d2 결정하기 위해 점까지의 거리 제곱.

거기서 각 정점의 총 커널 기여도는 방정식을 사용하여 결정된다.

여기서 r2 대개 0.5 또는 0.6으로 설정된다: 0.5 값은 불연속성을 보장하지 않는 반면, 0.6은 불연속성이 눈에 띄지 않는 애플리케이션에서 시각적 품질을 높일 수 있다; 0.6은 켄 펄린의 원래 기준 구현에서 사용되었다.

법적현황

질감 영상 합성을 위한 3D 이상의 구현 사용은 2022년 1월 8일에 만료될 때까지 특허청구에 기술된 특정 기법을 사용하여 알고리즘을 구현한 경우 미국 특허 6,867,776이 다루었다.

참고 항목

참조

  1. ^ 켄 펄린, 노이즈 하드웨어야실시간 음영 SIGRAPH 과정 노트(2001), Olano M, (Ed.)(pdf)
  2. ^ 켄 펄린, 시끄럽다.GDCHardcore(1999년 12월 9일)에서 제시된 강연에 기초한다.(iii)
  3. ^ "image processing - Why does increasing simplex noise dimension wash it out?". Computer Graphics Stack Exchange. Retrieved 2021-03-10.

외부 링크