당신이 말하는 알고리즘은 클리핑 윈도우를 축 정렬로 간주합니다. 볼륨 렌더링의 경우 시각화 중에 볼륨의 방향을 조작하고자 할 수 있습니다. 이렇게하면 축이 아닌 축이 정렬됩니다.
또한 CPU에서 레이 캐스팅을하고 있으며, OpenGL 셰이더에서는 보이지 않는 것으로 보입니다. OpenGL 쉐이더에서 'intersectFront'및 intersectBack '점을 계산하는 것은 매우 쉽습니다. 먼저 볼륨의 경계 상자를 텍스처로 두 번 렌더링합니다. 첫 번째 렌더링은 앞면 용이고 두 번째 렌더링은 뒷면 용입니다. 테두리 상자의 꼭지점은 상자의 축 정렬 좌표를 사용하여 색상이 지정됩니다. 그런 다음 두 텍스처를 겹쳐서 3D 텍스처 좌표로 교차 광선을 찾을 수 있습니다. 자세한 내용은 volume rendering (using glsl) with ray casting algorithm을 확인하십시오.
CPU에서이 작업을 수행하는 경우 가장 좋은 방법은 현재 광선과 함께 축 정렬되도록 큐브/테두리 상자를 다시 변환하는 것입니다. 그런 다음 상자의 확장을 x_min, x_max, y_min, y_max, z_min, z_max로 사용하여 언급 된 Liang Barsky 알고리즘을 적용 할 수 있습니다.
입력 해 주셔서 감사합니다. 나는 현재 CPU에서하고있다. 이제 당분간 볼륨을 회전시키고 싶지는 않다고 가정 해보십시오. 나는 단지 내 볼륨 (레이 캐스트)을보고 싶었습니다. 다시 변환하고 Liang Barsky를 적용하는 방법을 알 수 없습니다. 제 생각에는 모든 것이 정적이라고 생각하십시오. 같은 크기, 회전 없음, 큐브의 동일한 위치. – user3870357
큐브가 이미 축 정렬 및 정적 인 경우 역 변형을 수행 할 필요가 없습니다. 그냥 라인 방정식을 계산하고 각 차원에 대한 최소 및 최대 값을 사용하여 교차점을 계산하십시오. – Jadh4v
또는 더 단순 해지기 위해서는 직교 투영을 사용하십시오. 즉 광선이 z 축을 따라 이동합니다. 그러나 나는 좋은 관점을 만들어 내지 않을 것입니다. 그것은 좋은 출발점이 될 것입니다. – Jadh4v