Appearance
인공지능(AI)으로 콘텐츠를 생성하는 프로시저럴 기술(Procedural) (9)
[칼럼 핵심 요약]
프랙탈 노이즈에서 가장 유명한 것은 역시 '펄린 노이즈'(Perlin Noise)일 것이다. 이 펄린 노이즈는 지금도 프로 시저 텍스처의 "종"으로 매우 자주 사용되는 프랙탈 노이즈이다. 덧붙여 발명자인 Ken Perlin씨는, 이 노이즈 함수의 발명으로 1997년의 아카데미 기술상을 수상하고 있다.🌐 원문 링크: 人工知性でコンテンツを生成するプロシージャル技術(9) (Mynavi News)
📅 원문 발행일: 2010-02-05 | ✍️ 저자: 西川善司 (니시카와 젠지 / Zenji Nishikawa)
NOTE
💡 현대 그래픽스 관점에서의 발전사 (Modern Retrospective)
- Houdini & 노드 기반 PCG 파이프라인: 2000년대 후반 프로시저럴 알고리즘(L-System, 노이즈 기반 지형)은 현재 Houdini 엔진 및 언리얼 엔진 5의 PCG(Procedural Content Generation) 프레임워크로 체계화되었습니다.
- 신경망 생성형 AI(Neural Rendering / Generative AI): 규칙 기반 프로시저럴 알고리즘에 더해, 신경망(NeRF, 3D Gaussian Splatting, Diffusion 기반 3D 생성)을 결합하여 복잡한 환경과 3D 에셋을 실시간 생성/복원하는 시대가 열렸습니다.
📖 본문 해설
[원문 리드문] > 프랙탈 노이즈로 가장 유명한 것은 역시 '펄린 노이즈'(Perlin Noise)일 것이다. 이 펄린 노이즈는 지금도 프로 시저 텍스처의 "종"으로 매우 자주 사용되는 프랙탈 노이즈이다. 덧붙여 발명자인 Ken Perlin씨는, 이 노이즈 함수의 발명으로 1997년의 아카데미 기술상을 수상하고 있다.
세계에서 가장 유명한 노이즈 "펄린 노이즈"란 무엇입니까?
프랙탈 노이즈에서 가장 유명한 것은 역시 '펄린 노이즈'(Perlin Noise)일 것이다. 이 펄린 노이즈는 지금도 프로 시저 텍스처의 "종"으로 매우 자주 사용되는 프랙탈 노이즈이다. 덧붙여 발명자인 Ken Perlin씨는, 이 노이즈 함수의 발명으로 1997년의 아카데미 기술상을 수상하고 있다.
아래 그림은 2차원의 펄린 노이즈의 생성 방법의 일례를 나타낸 것이다.
펄린 노이즈 생성 방법
왼쪽 위에서 오른쪽 위로 향하는 프레임에 대해 설명하면 먼저 특정 주목한 사변형의 한 꼭지점에서 난수로 결정된 기울기를 생성합니다 (A). 다른 세 점에 0으로 착지하는 적절한 곡면 감쇠 함수를 제공합니다 (B). 이 2개를 곱해 놓는다(A×B).
좌하로부터 3개는, 다른 3버텍스에 대해서도 마찬가지의 계산을 행해, 합계 4개의 「한 버텍스으로부터 일어나서 다른 버텍스에 착지하는 곡면」을 얻는다. 이 4개를 모두 곱한 것이 그림 우하의 최종 결과가 된다. 이와 동일한 처리를 다른 그리드에 대해서도 행하여 인접하는 그리드끼리는 적절히 보간하여 연결한다. 이 근처의 보다 자세한 해설은 Ken Perlin씨의 프레젠테이션 사이트에도 게재되고 있다. 또, 다른 실장법이 매일 커뮤니케이션즈간의 「DirectX 9 셰이더 프로그래밍 북」의 저자로서도 알려진 이마 급여 씨의 사이트에도 게재되고 있으므로 그쪽도 참고해 주었으면 한다.
왼쪽 위에서 아래를 향한 파형은 오른쪽 패턴 각각 (왼쪽 위 → 오른쪽 위 → 왼쪽 아래 → 오른쪽 아래)에 해당합니다.
개념적으로는, 복수의 주파수의 노이즈를, 저주파 노이즈를 강하게 하여 고주파 노이즈를 약하게 합성한 것 같은 느낌이 된다.
Ken Perlin씨는 이 펄린 노이즈를 이용해, 고차원의 텍스처로 생성해 텍스처로부터 흥미로운 조형을 얻는 「하이퍼 텍스처」(Hyper Texture)라고 하는 개념도 발표하고 있다.
프로시저 기술로 생성한 텍스처를 단순한 데칼 텍스처(이미지 텍스처)로 이용할 뿐만 아니라, 복수장의 프로시저 텍스처를 서로 관련성을 가지는 형태로 생성하고, 이것을 볼륨 렌더링적인 방법으로 렌더링하거나 혹은 마칭 큐브법 등을 사용하여 등가면 생성하여 폴리곤화하여 렌더링하는 것이다.
굳이 "어려워"라고 하면, 이 복수장의 프로시저르·텍스쳐로부터 「공간 충전 함수를 제작한다」라고 하게 된다.
하이퍼 텍스처의 예
하이퍼 텍스처의 예
꽤 고급 하이퍼 텍스처의 예
하이퍼 텍스처는 고차원 프로시저 텍스처를 얻고 나서 이것을 3D 모델로 한다는, 어쩌면 돌아다니는 수법이므로, 저작법으로서는 그다지 현실미는 없는 인상을 가지지만, 3D 형상 모델을 프로시져르게 얻는다는 점에서는 매우 흥미롭다.
아래 그림의 중앙 화구의 하이퍼 텍스처를 예로 해설하면, 이 화구는 구체 형상의 함수(Sphere)와 펄린 노이즈 기반의 난류 함수(Turbulence)를 조합하여 생성한 고차원 프로시저 텍스처로부터 렌더링한 것으로 되어 있다.
하이퍼 텍스처란 공간 충전 함수에 의한 프로시저 3D 형상 생성
험한 이름이 붙어 있는 이 난류함수란 그 실체는 2배의 주파수인 펄린 노이즈를 절반의 강도로 반복적으로 합성하여 형성된 합성 노이즈 함수이다.
이 주파수와 합성 바이어스를 여러가지 조정하여 펄린 노이즈를 조합한 다단의 합성 노이즈 함수는 매우 흥미로운 모양이 되므로 프로시저 텍스처 생성 테마에서는 다양한 실험과 연구가 반복되고 있다.
베이스의 펄린 노이즈를 구체에 적용한 예
펄린 노이즈의 합성 함수의 예. ∑(1/2 i ・noise(2 i x))
이전에 절대값을 적용한 합성 노이즈 함수. ∑ABS(1/2 i ・noise(2 i x))
삼각 함수를 이용한 합성 노이즈 함수. SIN (x + ∑ ABS (1/2 i · noise (2 i x)))
또한, 친밀한 소프트에서도 펄린 노이즈의 효과는 체험할 수 있다.
3DMark06에는 「Perlin Noise(SM3.0)」라고 하는 그대로 즈바리의 이름의 Feature Tests(항목 테스트)가 탑재되고 있다.
이것은 펄린 노이즈로부터 구름의 텍스처를 합성하는 것. 펄린 노이즈 그 자체를 픽셀 쉐이더로 텍스처에 생성하는 495명령으로 이루어진 상당히 긴 셰이더 프로그램에서의 실행이 되어, GPU의 픽셀 쉐이더 성능을 측정하는 벤치마크 테스트가 되고 있었다.
실행 결과 자체에 큰 의미는 없고, 「긴 셰이더 프로그램이 얼마나 빨리 움직이는가」를 시험하는 테스트였다
실행 결과 자체에 큰 의미는 없고, 「긴 셰이더 프로그램이 얼마나 빨리 움직이는가」를 시험하는 테스트였다
실제 게임에서는 어떨까.
「Conflict Vietnam」(SCI, 2004)은 펄린 노이즈를 활용한 게임으로서는 꽤 조기 타이틀이라고 할 수 있다. 이 작품에서는 「하늘의 구름」의 표현에, 512×512 텍셀의 구름의 텍스처의 생성을 5옥타브의 펄린 노이즈로부터 생성하고 있었다.
Conflict Vietnam (SCI, 2004)
독 CRYTEK의 1인칭 타입의 3D슈팅 어드벤처 「CRYSIS」(2007)에서는, 동결한 정글 장면의 생성에, 3차원 펄린 노이즈(3D Perlin Noise)가 이용되고 있었다. 눈이나 얼음알의 텍스처를 장면과 합성할 때 볼륨 텍스처로 생성한 3차원 펄린 노이즈를 키로 하여 실행하고 있다. (계속)
원래 상태
장면으로의 합성 비율을 펄린 노이즈로 랜덤 확산
(트라이Z 니시카와 젠지)