2016. 1. 7. 14:47

- 슬라이스 렌더링과 비교하여, 직접적인 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)할 수 있음


The four basic steps of volume ray casting: 1. Ray Casting 2. Sampling 3. Shading 4. Compositing.

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