- 슬라이스 렌더링과 비교하여, 직접적인 Volume 렌더링은 이미지를 생성하는 것의 완전히 다른 방법이다
- 다른 Open Inventor 렌더링 노드들과는 다르게 Volume 렌더링은 점, 선, 삼각형과 같은 전통적인 컴퓨터 그래픽스 도형의 어떤 것도 사용하지 않음
- Volume 데이터 : 3D 스칼라 필드, 스칼라 값 셀의 일반 그리드로 고려
- 2D 픽셀과 유사하게, 각각 3D 셀은 "Voxel"로 불린다 : volume element
- Volume 렌더링은 어떤 지오메트리 사용없이 Volume 데이터 가시화 가능
- VolumeViz는 Volume Ray-casting 기술을 이용하여 보여줌
- Ray는 Volume을 통해 던져지고 규칙적인 또는 적절한 간격을 샘플링 함
- 각 샘플 점에서 데이터 값들은 보간
- 결과 스칼라 값은 transfer function을 통해 색과 투명도에 맵핑
- 이것은 RGBA 값을 결과로 출력
- 개념적으로 이 값은 Volume을 통해 Voxel이 빛 투과에 어떻게 영향받는지 결정
- RGBA 값은 Ray를 따라 이전 값에 합쳐지(composite)
- 최종 합성된 ray의 값은 화면에서 대응되는 픽셀의 색상을 결정
- 다른 렌더링 노드와 마찬가지로 이 알고리즘은 최대 성능을 위해
완전히GPU에서 구현
- Volume 렌더링은 유일한 렌더링 기술이고 슬라이스 기반 렌더링보다 더 강력함(powerful)
- 그러나 사용하는데 훨씬 더 복잡하고 GPU에서 요구되는 거대한 계산량 때문에 일반적으로 슬라이스 렌더링보다 덜 상호적(interactive)
- 슬라이스 렌더링은 Volume의 내부 구조에 대한 단서 제공하는 반면에
Volume 렌더링은 직접ㅈ적으로 내부 구조의 모양을 가시화
-SoVolumeRender 노드를 지오메트리 노드의 한 종류로 생각하는 것이 편리
- VolumeViz는 가능한 많이 표준 Open Inventor 속성(attribute)과 연산(operations)을 적용
- 예를 들어 Voxel에 빛을 적용할 수 있고, 그림자를 주고 받을 수 있음
- 유사하게 SoRayPickAction을 Volume 렌더링을 포함하는 신(scene)에 적용할 때, 액션은 첫 번째 불투명 voxel을 찾음
* Ray Casting
- 이 알고리즘은 빛의 방사(emission), 반사(reflection) 그리고 흡수(absorption)에 기반한 고전 컴퓨터 그래픽스 렌더링 방정식을 구현
- Volume으로 ray cast의 수가 스크린에 렌더링되어야 하는 픽셀에 수의 의존하기 때문에 이미지 기반 기술
- ray에 따른 샘플링은 성능과 이미지 품질을 증가시키기 위해 Volume에서 데이터에 적용할 수 있기 때문 텍스처 폴리곤 기반보다 유연(flexible)
- VolumeViz ray-casting 엔진은 GPU에서 실행
- 그래픽 보드에서 프로세서의 수에 따라 스케일되는 훌륭한 성능을 수행하기 위해 GPU의 거대한 평행(parallelism)을 활용
- GPU 구현은 표준 GLSL 언어에서 쓰이는 셰이더 함수를 사용해서 응용 프로그램에 확장(extented)할 수 있고 편집(customized)할 수 있음
Figure 1.29. The four basic steps of volume ray casting: 1. Ray Casting 2. Sampling 3. Shading 4. Compositing.
- (Volume에 의해 영향을 받을 수도 있는) 최종 이미지에서 각 픽셀에 대해,
"ray"는 신 과 Volume을 통해 직선으로 던져진다
- 이 ray를 따라 간 계산은 평행하게 수행될 수 있음
- 각 ray에 대해 Volume의 잘리지 않은 부분과 교차되는 점이 계산됨
- Volume은 clip plane, region of interest, polygons 그리고 다른 기술에 의해 잘릴 수 있음
- 교차점을 시작으로 ray에 따른 샘플링 점들은 선택된다
- 각 샘플 점들에 대해 데이터 값은 주변 voxel과 함께 보간에 기반되어 계산
- 응용 프로그램은 데이터에 필터를 적용하거나 여러 개의 Volume을 혼합하여 이 계산을 편집(customize)할 수 있음
- 만약 빛(lighting) 또는 모서리 검출(edge detection)과 같은 렌더링 기술이 가능하면, 그래디언트(gradient)는 계산됨
- 이것은 표면 범선 벡터(surface normal vector)와 유사하게 Volume 렌더링을 표현
- 응용 프로그램은 정확성과 성능의 거래(trade-off)에 따라 여러 그래디언트 알고리즘을 선택 가능
- 샘플 값과 그래디언트를 사용하여, 색과 투명도가 계산
- VolumeViz 는 라이팅(lighting), 모서리 색상(edge coloring) 그리고 경계 투명도(boundary opacity)와 같은 추가 렌더링 효과를 제공
- 최종적으로 샘플링된 색생과 투명도는 ray에서 출발한 각 픽셀에 대해 최종 색상과 투명도를 계산하기 위해 ray에 따른 다른 샘플들과 함께 혼합됨
- 응용 프로그램은 여러 혼합 알고리즘 중에서 선택
- VolumeViz는 호환성(compatibility)을 위해 이전의 렌더링 알고리즘 제공
- 이 알고리즘은 Volume 데이터에 텍스처를 입힌 폴리곤의 스택을 그림으로써 Volume 렌더링에 근사화 한다
- 폴리곤 렌더링 알고리즘은 SoVolumeRenderingQuality 노드에서 raycasting 필드를 false 로 설정하면 행해짐
* Rendering
- 슬라이스 렌더링과 마찬가지로, Volume 렌더링의 색과 투명도는 주로
SoMaterial, SoDataRange 그리고 SoTransferFunction(color map) 노드에 의해 결정
- Volume 렌더링의 결과는 슬라이스 객체(primitive)와는 약간 다른 옵션을 제외하고 보간에 의해 영향을 받음
- 기본 색과 투명도가 결정된 후에 라이팅과 렌더링은 슬라이스 렌더링보다 훨씬 더 복잡하다
- Volume 렌더링의 최종 결과는 다음 항목에 영향을 받음
-- LDM 메모리 설정
-- 렌더링 품질 설정(Rendering Quality Setting)
-- 렌더링 효과 (Rendering Effect)
-- 렌더링 모드(Rendering Mode)
- 렌더링 품질 설정(Volume Rendering Quality Settings)
- SoVolumeRender
- SoVolumeRenderingQuality
- 샘플링 수(Number of samples)
- 이전 통합 렌더링(Preintegrated rendering)
- 지터링(Jittering)
- 3차원 보간(Cubic Interpolation)
- 풀 해상도에서 메모리에 로딩될 수 없는 매우 큰 Volume에 대해 Volume 렌더링의 결과(appearance)는 SoLDMResourceParameters의 필드를 사용한 LDM 파라미터 설정에 의해 영향을 받음
- Volume에 대한 SoLDMResourceParameters 객체는 SoVolumeData 노드의 ldmResourceParameters 필드로부터 요구(query)할 수 있다
- 관계있는 필드는 maxMainMemory 와 maxTexMemory를 포함한다
- 렌더링 효과(Volume Rendering Effects)
- SoVolumeRenderingQuality
- 라이팅과 같은 사실 효과와 에지 컬러링과 같은 NPR(non-photorealistic) 효과 둘 다 포함
- Lighting
- Edge coloring
- Boundary opacity
- Edge detection (2D)
* Volume의 Lighting
- SoVolumeRenderingQuality 노드를 사용하여 옵션 설정
- Gradient quality
- Gradient threshold
- Surface scalar exponent
- Ambient occlusion
* Volume 렌더링의 성능
- Volume의 크기
- 샘플의 수
- 선택된 품질 설정(quality settings)
- 렌더링 효과(Rendering effects)
- SoVolumeRender 노드에서 구체적인 옵션
-- lowResMode
-- lowScreenResolutionScale
-- subDivideTile
-- gpuVertexGen
* 렌더링 모드(Volume rendering modes)
- 다양한 노드를 사용하여 대체적인 렌더링 모드를 사용한 이미지 생성
- Maximum Intensity Projection ( and other composition styles)
- Isosurface rendering
- Voxelized("Sugar cube") rendering
- Mask boundary rendering