심플렉스 노이즈

심플렉스 노이즈 **심플렉스 노이즈**(Simplex noise)는 펄린 노이즈("고전적" 노이즈)와 유사하지만 더 높은 차원에서 등방성 결함이 적고 계산 오버헤드가 낮은 n차원 기울기 노이즈 함수의 결과이다. 켄 펄린은 2001년에Ken Perlin, Noise hardware. In Real-Time Shading SIGGRAPH Course Notes (2001), Olano M., (Ed.). (pdf) 그의 고전적인 노이즈 함수의 한계, 특히 고차원에서의 한계를 해결하기 위해 이 알고리즘을 설계했다. 펄린 노이즈에 대한 심플렉스 노이즈의 장점: * 심플렉스 노이즈는 계산 복잡성이 낮고 곱셈 횟수가 적다. * 심플렉스 노이즈는 훨씬 적은 계산 비용으로 더 높은 차원(4D, 5D)으로 확장된다. 복잡도는 고전적 노이즈의 O(n\,2^n) 대신 n 차원에 대해 O(n^2)이다.Ken Perlin, Making noise. Based on a talk presented at GDCHardcore (Dec 9, 1999). (url) url=https://web.archive.org/web/20150217235234/http://www.noisemachine.com/talk1/32.html * 심플렉스 노이즈는 눈에 띄는 방향성 아티팩트가 없다(등방성적으로 보이지만, 다른 차원에서 생성된 노이즈는 시각적으로 구별된다(예: 2D 노이즈는 3D 노이즈의 2D 슬라이스와 다른 모양을 가지며, 더 높은 차원에서는 점점 더 나빠 보인다website=Computer Graphics Stack Exchange)). * 심플렉스 노이즈는 잘 정의되고 연속적인 기울기(거의)를 가지며, 이는 상당히 저렴하게 계산할 수 있다. * 심플렉스 노이즈는 하드웨어로 구현하기 쉽다. 펄린 노이즈가 주변 하이퍼그리드 끝점(예: 2D에서 북동, 북서, 남동, 남서)의 기울기 사이를 보간하는 반면, 심플렉스 노이즈는 공간을 단체(즉, n차원 삼각형)로 나눈다. 이는 데이터 포인트 수를 줄인다. n차원 하이퍼큐브는 2^n개의 꼭짓점을 가지지만, n차원 단체는 n + 1개의 꼭짓점만 가진다. 2D에서는 삼각형이 정삼각형이지만, 더 높은 차원에서는 단체는 대략적으로만 정규적이다. 예를 들어, 함수의 3D 경우 타일링은 사각이등변사면체 허니콤의 방향이다. 심플렉스 노이즈는 일반적으로 2, 3, 4, 또는 5차원에서 노이즈를 계산하는 컴퓨터 그래픽스 애플리케이션에 유용하다. 더 높은 차원에서는 n-단체 모서리 주변의 n-구체가 충분히 조밀하게 채워지지 않아 함수의 지지대가 줄어들고 공간의 많은 부분에서 0이 된다.
# 알고리즘 세부 사항
심플렉스 노이즈는 일반적으로 2차원, 3차원 또는 4차원 함수로 구현되지만, 임의의 수의 차원에 대해 정의될 수 있다. 구현은 일반적으로 좌표 기울이기, 단체 분할, 기울기 선택, 커널 합산의 네 단계를 포함한다.
## 좌표 기울이기
입력 좌표는 다음 공식을 사용하여 변환된다. : x' = x + (x + y + \cdots) \cdot F, : y' = y + (x + y + \cdots) \cdot F, : \cdots, 여기서 : F = \frac{\sqrt{n + 1} - 1}{n}. 이는 좌표를 An 격자에 배치하는 효과를 가지며, 이는 본질적으로 점 (0, 0, ..., 0)과 (1, 1, ..., 1) 사이의 거리가 점 (0, 0, ..., 0)과 (1, 0, ..., 0) 사이의 거리와 같아질 때까지 주 대각선을 따라 압축된 초입방 벌집의 꼭짓점 배치이다. 결과 좌표 (x', y', ...)는 입력 점이 놓여있는 기울어진 단위 하이퍼큐브 셀 (xb' = floor(x'), yb' = floor(y'), ...)과 그 내부 좌표 (xi' = x' − xb', yi' = y' − yb', ...)를 결정하는 데 사용된다.
## 단체 분할
위가 결정되면, 내부 좌표 (xi', yi', ...)의 값이 내림차순으로 정렬되어 점이 놓여있는 기울어진 슐래플리 직사면체 단체를 결정한다. 그런 다음 결과 단체는 (0, 0, ..., 0)에서 (1, 1, ..., 1)로의 정렬된 모서리 이동에 해당하는 꼭짓점으로 구성되며, n!가지 가능성이 있으며, 각 가능성은 좌표의 단일 순열에 해당한다. 다시 말해, 0 좌표에서 시작하여 가장 큰 내부 좌표 값에 해당하는 값부터 시작하여 1을 연속적으로 추가하고 가장 작은 값으로 끝낸다. 예를 들어, 점 (0.4, 0.5, 0.3)은 꼭짓점 (0, 0, 0), (0, 1, 0), (1, 1, 0), (1, 1, 1)을 가진 단체 내부에 놓인다. yi' 좌표가 가장 크므로 먼저 추가된다. 그 다음 xi' 좌표가 추가되고 마지막으로 zi'가 추가된다.
## 기울기 선택
각 단체 꼭짓점은 기울어진 하이퍼큐브의 기본 좌표에 다시 추가되고 유사 난수 기울기 방향으로 해시된다. 해시는 다양한 방법으로 구현될 수 있지만, 대부분 순열 테이블 또는 비트 조작 방식을 사용한다. 방향성 아티팩트를 최소화하기 위해 포함할 기울기 세트의 선택에 주의해야 한다.
## 커널 합산
단체의 n + 1개 꼭짓점 각각의 기여는 각 꼭짓점을 중심으로 하는 방사형 대칭 커널의 합산으로 고려된다. 먼저, 각 꼭짓점의 기울어지지 않은 좌표는 역 공식을 사용하여 결정된다. : x = x' - (x' + y' + \cdots) \cdot G, : y = y' - (x' + y' + \cdots) \cdot G, : \cdots, 여기서 : G = \frac{1 - 1/\sqrt{n + 1{n}. 이 점은 입력 좌표에서 빼서 기울어지지 않은 변위 벡터를 얻는다. 이 기울어지지 않은 변위 벡터는 두 가지 목적으로 사용된다. * 스칼라곱을 사용하여 외삽된 기울기 값을 계산한다. * 점까지의 제곱 거리인 d2를 결정한다. 거기서부터 각 꼭짓점의 합산된 커널 기여는 다음 표현식을 사용하여 결정된다. : \big(\max(0, r^2 - d^2)\big)^4 \cdot \big(\langle\Delta x, \Delta y, \dots\rangle \cdot \langle\operatorname{grad} x, \operatorname{grad} y, \dots\rangle\big), 여기서 r2는 일반적으로 0.5 또는 0.6으로 설정된다. 값 0.5는 불연속성이 없도록 보장하는 반면, 0.6은 불연속성이 눈에 띄지 않는 애플리케이션에서 시각적 품질을 향상시킬 수 있다. 켄 펄린의 원본 참조 구현에서는 0.6이 사용되었다.
# 법적 지위
텍스처 이미지 합성을 위한 3D 이상 구현 사용은 6867776에 의해 보호되었으며, 이 특허는 2022년 1월 8일에 만료되었다.