3D 텍스처 란 무엇입니까?


31

Google이 실패했습니다. 유익한 정보를 찾을 수 없습니다. 아마 GameDev는 :).

  • 3D 텍스처 란 무엇입니까?
  • 그들은 언제 사용됩니까?
  • 성능 비용?
  • 그들은 어떻게 저장됩니까?

모호한 아이디어가 많지만 '정의적인'정의는 없습니다.

특히 3D 텍스처를 통해 파티클 시스템을 렌더링 할 때 예제 나 튜토리얼에 대한 참조가 인정됩니다.


나는 당신이 무엇을 요구하는지 잘 모르겠습니다. "평평한"영역에서 표면 변형을 시뮬레이션하기위한 법선 및 범프 매핑을 의미합니까?
coderanger

2
그가 의미하는 바는 GL_TEXTURE_3D 등과 비슷하다고 생각합니다.
Luker

1
또한이 질문을 참조하십시오 : UVW 텍스처 매핑은 어떻게 작동합니까? (그리고 그 답변).
George Duckett

답변:


34

3D 텍스처는 일반 텍스처처럼 작동합니다. 그러나 실제로 3D입니다. 2D 텍스처에는 UV 좌표가 있고 3D에는 UVW가 있습니다 (적절하게 사용해야합니다). 텍스처 좌표는 단위 큐브 (0-1, 0-1, 0-1)입니다.

가능한 사용법 :

  • 게임의 체적 효과 (화재, 연기, 광선, 사실적인 안개)
  • 실시간 전역 조명을위한 빛 캐싱 ( 예 : CryEngine )
  • 과학적 (MRI, CT 스캔은 볼륨에 저장 됨)

성능 :
일반 텍스처와 동일-초고속 (GPU에서 가장 빠른 메모리 액세스) 스레드를 위해 캐시되고 니어 스레드 (픽셀 셰이더)가 가까운 값을 찾는 상황에 최적화

점으로 읽거나 선형 샘플링을 사용할 수 있습니다 (기본 3 선 보간. 2D 텍스처의 등가 이중 보간).

그것들은 2D 텍스처 배열처럼 메모리에 저장됩니다.

3D 텍스처에서의 밉 매핑 :
여기에 이미지 설명을 입력하십시오


14

3D 텍스처 또는 '볼륨 텍스처'는 카드 데크처럼 슬라이스로 배열 된 일련의 일반 텍스처입니다. 이들은 CT 렌더링과 같은 실제 데이터를 가져온 다음 조작하는 볼륨 렌더링에 사용됩니다. 게임과 그래픽에서는 입자 시스템의 유연성을 고정 된 비용으로 거래하고 볼륨 텍스처를 쉽게 (그리고 쉽게 병렬화 할 수있는) 계산하는 연기와 같은 볼륨 효과에 대한 경우가 있습니다. 볼륨 텍스처에서 가장 가까운 이웃을 찾는 것이 실제로 쉽지만, 이것은 느슨한 점으로 구성된 더 전통적인 입자 시스템입니다.

또한 잔디와 같은 볼륨 텍스처를 사용하면 몇 가지 복잡한 오브젝트 이점이 있습니다.

상자에서 Nvidia의 연기가 좋은 예입니다.

http://www.youtube.com/watch?v=9AS4xV-CK14

또한 렌더링 할 볼륨이있을 때 광 산란 렌더링이 더 쉽습니다.


7

기존의 답변 외에도 3D 텍스처를 절차 적으로 생성하는 방법 (실제로는 2D 절차 텍스처보다 더 의미가 있음), 노이즈 및 프랙탈과 같이 변형되지 않은 텍스처 세부 정보를 모든 각도 표면에 제공합니다. 투영 모델 (UV, 평면, 원통형, 구형 등)을 선택합니다.

3D 공간에서 비트 맵 레이어를 샘플링하는 대신 기본 알고리즘을 사용하여 3D 공간의 각 포인트에 대해 고유 한 값을 얻습니다. 기본 알고리즘은 무한한 텍스처 해상도를 제공하며 각진 폴리곤의 텍스처 확장에 문제가 없습니다. 이것은 3D "텍스처"이거나 오히려 표면 쉐이딩입니다 ^^

우주선을 더럽 히고 싶을 때 약간의 노이즈 공식을 적용하고 제한된 해상도의 비트 맵을 칠할 필요가없는 게임 개발의 모든 비트 맵 텍스처 스너프에 실제로 지쳤습니다. 오래된 3D 버프는 꿈을 꿀 수 있습니다.

지금,이 구식 3D 영화 표면 솔루션을 색상, 일반 및 반사 UV 비트 맵으로 사전 베이킹하는 것은 내가 얻는 유일한 재미에 불과하며 성가신 한계가 있습니다. 데모 씬은 실시간 3D에 대해 절차 적으로 텍스처를 (사전) 생성하는 경향이 있지만 디자인에서 런타임에 이르기까지이 워크 플로우를 지원하는 훌륭한 도구를 찾기가 어렵습니다. 대부분의 게임 개발 절차 적 접근은 메시 생성에 관한 것 같습니다. 깊이 맵 / 지연 렌더링을 통해 쉐이더 파이프 라인이 oldschool 3D 노이즈 알고리즘을 얼마나 처리 할 수 ​​있는지 궁금하십니까?

... 모양의 표면에 텍스처 이미지를 파라 메트릭 방식으로 매핑하는 방법을 찾으려고하는 대신 노이즈 기반 텍스처의 체적 특성으로 픽셀의 (x, y, z) 위치에서 간단하게 평가할 수 있습니다. 쉐이더. 이런 식으로, 당신은 효과적으로 왜곡되지 않은 합리적인 파라 메트릭 매핑을 시도하는 것보다 훨씬 간단한 솔리드 재질로 텍스처를 효과적으로 조각합니다.

이러한 종류의 체적 노이즈 기반 절차 적 텍스처는 오랫동안 쉐이더가 실시간 성능을 요구하지 않는 장편 영화의 주류였습니다. 오늘날 모든 특수 효과 필름은 노이즈 기반 절차 적 쉐이더를 많이 사용합니다 ... Pixar의 RenderMan과 같은 언어로 작성된 픽셀 쉐이더 내 노이즈 기능의 광범위한 사용에 대해 GPU에서 실시간으로 사용할 수있는 노이즈 기능을 훌륭히 구현함으로써 데스크탑과 콘솔의 차세대 대화 형 엔터테인먼트에 통합 된 장편 영화의 흥미로운 시각적 아이디어를 기대합니다. http://http.developer.nvidia.com/GPUGems/gpugems_ch05.html


매우 흥미로운 읽기! 두 번째 단락의 의미를 시각화하는 데 문제가 있습니다.
감속

아마도 다이어그램을 만들 수있을 것입니다. 의미하는 바는 비트 맵을 샘플링하는 대신 노이즈 알고리즘에 의해 색상 (또는 그 이후의 대상)이 간단히 결정된다는 것입니다. 그렇게하면 필요한 비트 맵 픽셀 사이에 보간이없고 (완벽한 1x1 픽셀 위치가 아닌 샘플링이되어야 함) 해상도는 이론적으로 무한대로됩니다. 특정 단계 / 간격이있는 미리 계산 된 조회 테이블을 사용하는 대신 특정 금리에 대한이자를 실제로 계산하는 것과 약간 같습니다 (= 비트 맵 해상도).
Oskar Duveborn 10

참조 된 기사 전체를 읽은 후. 나는 훨씬 더 잘 이해하고 있지만 심판이라고 생각합니다. 이미지는 확실하지 않은 것과 tl; dr. :)
감속

0

3D 텍스처 패턴은 2D 텍스처 패턴이 2D 다각형의 픽셀에 적용되는 것과 거의 같은 방식으로 체적의 복셀에 적용됩니다. 다음은 JavaScript에서 3D 볼륨 텍스처의 예입니다 (WebGL 필요).

http://kirox.de/test/Surface.html

[v]를 누르고 몸체를 회전시키고 마우스 휠로 생성 된 텍스처의 그라디언트를 변경하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.