레이 캐스팅
Ray casting레이 캐스팅은 3D CAD/CAM 솔리드 모델링 및 이미지 렌더링의 방법론적 기반입니다.이는 기본적으로 3D 장면에서 광선을 따라 보이는 것을 결정하기 위해 카메라의 초점에서 카메라 센서의 각 픽셀을 통과하는 경로에 가상 광선을 "주조" 또는 "추적"하는 컴퓨터 그래픽의 광선 추적과 동일합니다."레이 캐스팅"이라는 용어는 1978년부터 1980년까지 General Motors Research Labs에 있을 때 Scott Roth에 의해 도입되었습니다.그의 논문인 "고체를 모델링하기 위한 레이 캐스팅"[1]은 블록 및 실린더와 같은 원시 고체를 집합 연산자 유니언(+), 교차점(&), 차이(-)를 사용하여 결합함으로써 모델링된 고체 물체를 설명합니다.이러한 이진 연산자를 고체 모델링에 사용하는 일반적인 아이디어는 주로 [2][3]로체스터 대학의 Voelker와 Requicha의 기하학적 모델링 그룹 덕분입니다.솔리드 모델링 방법에 대한 자세한 내용은 솔리드 모델링을 참조하십시오.오른쪽 그림은 1979년경 Roth의 레이 캐스팅 시스템을 사용하여 실린더 및 블록에서 모델링한 U-조인트입니다.
레이 캐스팅(및 레이 트레이스) 전에 컴퓨터 그래픽 알고리즘은 3D 세계에서 가시성 논리를 적용해야 하는 이미지 평면에 표면 또는 가장자리(예: 선)를 투영했습니다.월드 투 이미지 평면 투영법은 3D 동종 좌표계 변환(3D 투영, 아핀 변환 또는 투영 변환(Homography))입니다.이러한 방법으로 이미지를 렌더링하는 것은 숨겨진 표면/가장자리를 제거하는 방법으로는 어렵습니다.또한 곡면의 실루엣은 레이 캐스팅의 암묵적인 부산물인 반면 명시적으로 해결해야 하므로 뷰가 바뀔 때마다 명시적으로 해결할 필요가 없습니다.
레이 캐스팅은 선이 선으로 변환되기 때문에 3D 객체 및 장면의 이미지 렌더링을 크게 간소화했습니다.따라서 3D 장면의 곡선 모서리와 표면을 2D 영상 평면에 투영하는 대신 변환된 선(선)이 장면의 객체와 교차합니다.균질 좌표 변환은 4x4 행렬로 표현된다.수학적인 기술은 컴퓨터 그래픽과 [4]기하학적 모델링에 공통적이다.변환에는 3개의 축을 중심으로 한 회전, 축을 따라 독립적으로 스케일링, 3D 변환 및 스큐잉이 포함됩니다.변환은 행렬 연산을 통해 쉽게 연결됩니다.4x4 행렬과 함께 사용할 경우 점은 [X, Y, Z, 1]로 표시되고 방향 벡터는x [Dy, Dz, D, 0]로 표시됩니다.(네 번째 항은 변환용이며 방향 벡터에는 적용되지 않습니다.)
개념.
레이 캐스팅은 레이 트레이스의 기하학적 알고리즘을 사용하는 많은 컴퓨터 그래픽 렌더링 알고리즘 중 가장 기본적인 것입니다.레이 트레이스 기반 렌더링 알고리즘은 3차원 장면을 2차원 영상으로 렌더링하기 위해 영상 순서로 작동합니다.기하학적 광선은 관찰자의 눈에서 추적되어 광선 방향에서 관찰자를 향해 이동하는 빛(광도)을 샘플링한다.레이 캐스팅의 속도와 단순성은 레이가 부딪힌 지점에서 발생하는 광도를 샘플링하는 추가 광선을 재귀적으로 추적하지 않고 빛의 색상을 계산함으로써 얻을 수 있습니다.이렇게 하면 반사, 굴절 또는 그림자의 자연스러운 낙하를 정확하게 렌더링할 수 없지만 텍스처 맵이나 다른 방법을 사용하여 어느 정도 이러한 요소를 위조할 수 있습니다.빠른 계산 속도로 레이 캐스팅은 초기 실시간 3D 비디오 게임에서 편리한 렌더링 방법이 되었습니다.
레이 캐스팅의 발상은, 1픽셀 당 1개씩, 눈의 광선을 추적해, 그 광선의 경로를 막는 가장 가까운 물체를 찾는 것입니다.화면내의 각 사각형은 픽셀이 되는 스크린도어라고 생각해 주세요.그리고 이것은 눈이 그 픽셀을 통해 보는 물체입니다.이 알고리즘은 장면에서 재료 특성과 조명의 효과를 사용하여 이 객체의 음영을 결정할 수 있습니다.단순화된 가정은 표면이 빛을 향하면 빛이 해당 표면에 도달하고 차단되거나 그늘에 가려지지 않는다는 것이다.표면의 음영은 기존의 3D 컴퓨터 그래픽 음영 모델을 사용하여 계산됩니다.구형 스캔라인 알고리즘에 비해 제공되는 레이 캐스팅의 중요한 이점 중 하나는 원추체 및 구와 같은 평면적이지 않은 표면과 고체를 쉽게 처리할 수 있다는 것입니다.수학적 표면이 광선으로 교차할 수 있는 경우 광선 주조를 사용하여 렌더링할 수 있습니다.견고한 모델링 기술을 사용하여 정교한 객체를 만들 수 있으며 쉽게 렌더링할 수 있습니다.
"고형 모델링을 위한 레이 캐스팅" 논문의 요약에서:모델링된 복합 고형물을 시각화하고 분석하기 위해 가상 광선을 탐침으로 주조합니다. 레이 캐스팅은 단순하기 때문에 신뢰성과 확장이 가능합니다. 가장 어려운 수학 문제는 선과 표면의 교차점을 찾는 것입니다. 따라서 평면, 4차원, 토리 등의 표면과 파라메트릭 표면 패치가 원시 솔리드를 묶을 수 있습니다. 레이 캐스팅의 적절성과 효율성은 여기서 다루어집니다. 대화형 모델링을 위한 빠른 사진 생성 기능이 가장 큰 과제입니다.
광선과 카메라 지오메트리는 모든 기하학적 추론의 기초를 형성합니다.이 그림은 영상 처리 시 투시 효과를 위한 핀홀 카메라 모델과 매스 분석을 위한 병렬 카메라 모델을 보여줍니다.간단한 핀홀 카메라 모델은 초점(또는 아이포인트)과 정사각형 픽셀 배열(또는 화면)로 구성됩니다.직선 광선이 픽셀 어레이를 통과하여 초점과 씬(scene)을 연결합니다(픽셀당 1선).사진에 음영을 주기 위해 광선의 강도를 측정하고 픽셀로 저장합니다.픽셀 값을 담당하는 반사 표면이 픽셀의 광선과 교차합니다.
초점 거리, 즉 초점과 화면 사이의 거리가 무한하면 모든 광선이 화면에 수직으로 서로 평행하기 때문에 보기를 "병렬"이라고 합니다.투시도는 사진을 만드는 데 자연스럽지만, 일부 어플리케이션에서는 우주에서 균일하게 분포할 수 있는 광선이 필요합니다.
모델링을 편리하게 하기 위해 카메라의 일반적인 표준 좌표계는 X-Y 평면에 스크린, +Z 반공간에 씬(scene) 및 -Z 축에 포커스가 있습니다.
레이는 카메라 모델의 3D 공간에서의 단순한 직선입니다.이 값은 점0(X0, Y0, Z) 및 방향 벡터x(Dy, Dz, D)로서 매개 변수화된 형태의 방향 벡터로 가장 잘 정의됩니다.이 형식에서는 회선상의 점이 단일 파라미터 t를 통해 정렬 및 접근됩니다.t의 모든 값에 대해 라인에서 해당하는 점(X, Y, Z)이 정의됩니다.
X = X0 + t · Dx Y = Y0 + t · Dy Z = Z0 + t · Dz
벡터가 정규화된 경우 매개변수 t는 선을 따른 거리입니다.벡터는 다음 계산을 통해 쉽게 정규화할 수 있습니다.
Dist = δ(Dx2 + Dy2 + Dz2) Dx = Dx / Disty D = Dy / Distz D = Dz / Dist
각각 하나 이상의 표면에 의해 경계되는 물체의 기하학적 정의가 주어지면, 화면 내의 모든 경계 표면과 한 개의 광선의 교차를 계산한 결과는 두 개의 배열로 정의된다.
광선 파라미터: t[1], t[2], ..., t[n] 표면 포인터: S[1], S[2], ..., S[n]
여기서 n은 광선 표면 교점의 수입니다.광선 파라미터 t[i]의 순서 목록은 출입 지점을 나타냅니다.광선은 t[1] 지점에서 솔리드 안으로 들어가고 t[2] 지점에서 종료되며 t[3] 지점에서 솔리드 안으로 들어갑니다.t[1] 지점은 카메라와 가장 가깝고 t[n] 지점은 가장 멀다.선 파라미터와 관련하여 지표면 포인터에는 교차된 지표면의 정보에 대한 고유한 주소가 포함됩니다.표면은 색상, 경도, 굴절 유무, 투명도, 반투명 등 다양한 특성을 가질 수 있습니다.표면과 관련된 고체는 밀도 등의 고유한 물리적 특성을 가질 수 있습니다.예를 들어, 물체가 서로 다른 재료의 집합으로 구성되어 있고 전체 질량 중심과 관성 모멘트가 관심 있는 경우 이 방법은 유용할 수 있습니다.
정보 적용
레이 캐스팅을 사용하는 세 가지 알고리즘은 선 그리기, 음영 처리된 그림 만들기, 볼륨 및 기타 물리적 특성 계산입니다.카메라 모델이 주어진 각 알고리즘은 화면 내의 픽셀당 1개의 광선을 촬영합니다.볼륨을 계산하는 경우 사용하는 픽셀 화면의 해상도는 솔루션의 원하는 정확도에 따라 달라집니다.선 도면 및 그림 음영 처리의 경우 해상도에 따라 이미지의 품질이 결정됩니다.
라인 도면솔리드의 가시적인 가장자리를 그리려면 화면에서 상하좌우로 이동하는 픽셀당 1개의 광선을 생성합니다.각 광선을 평가하여 광선-표면 교차점의 정렬된 목록에서 첫 번째 표면 포인터인 가시 표면 S[1]를 식별합니다.픽셀 위치(X, Y)의 가시 표면이 픽셀(X-1, Y)의 가시 표면과 다른 경우, (X-θ, Y)를 중심으로 한 픽셀 길이의 수직선을 표시합니다.마찬가지로 (X, Y)의 가시 표면이 픽셀(X, Y-1)의 가시 표면과 다를 경우 (X, Y-1)을 중심으로 한 픽셀 길이의 수평선을 표시합니다.결과 도면은 수평 및 수직 가장자리만으로 구성되며 코스 해상도가 들쭉날쭉하게 나타납니다.
Roth의 레이 캐스팅 시스템은 오른쪽에 있는 고체 물체의 이미지를 생성했습니다.최적화를 위해 박스 인클로저, 동적 바운딩 및 일관성을 사용했습니다.각 사진에 대해 화면은 약 100x100(예: 10,000) 광선의 밀도로 샘플링되었으며 이진 검색을 통해 새 가장자리를 찾았습니다.그런 다음 모든 가장자리에서 두 가장자리의 한 픽셀 단위로 추가 광선을 주조했습니다.각 그림은 780x780 해상도의 Tektronix 튜브에 그려져 있습니다.
그림자가 음영 처리되었습니다.음영 처리된 사진을 만들려면 화면에서 픽셀당 한 개의 레이를 다시 촬영합니다.그러나 이번에는 각 픽셀의 가시 표면 포인터 S[1]를 사용하여 표면에 대한 설명에 액세스합니다.이로부터 가시점 t[1]에서의 표면 법선을 구한다.픽셀 값인 표시 가능한 광도는 표면 법선 및 광원 대 표면 벡터에 의해 형성된 각도의 코사인에 비례합니다.이 방법으로 모든 픽셀을 처리하면 씬(scene)의 래스터형 이미지가 생성됩니다.
볼륨과 관성 모멘트를 계산합니다.곡면으로 둘러싸인 고체의 부피(및 유사한 특성)는 직사각형 평행입체 세트로 고체를 근사함으로써 "대략합" 적분법에 의해 쉽게 계산된다.이는 솔리드 사진을 병렬 뷰로 "깊이" 촬영함으로써 실현됩니다.스크린을 통해 고체에 광선을 투영하면 고체가 볼륨 요소로 분할됩니다.평행 입자의 두 치수는 일정하며, 화면의 2D 간격에 의해 정의됩니다.세 번째 치수는 가변적이며, 계산된 입출구 포인트로 정의됩니다.구체적으로는, 화면의 광선 사이의 수평 및 수직 거리가 S인 경우, 각 광선이 "검출"한 부피는 다음과 같습니다.
S × S × ( t [ 2 ] - t [ 1 ] + t [ 4 ] - t [ 3 ] + ∙ + t [ n ]-t [ 1 ] / L
여기서 L은 방향 벡터의 길이로 정의됩니다.(이미 정규화되어 있는 경우는 1과 같습니다).
L = ( (Dx2 + Dy2 + Dz2)
각(t[i]-t[i-1]/L은 솔리드 내부에 있는 선분의 길이입니다.
이 그림은 레이캐스팅을 사용하여 모델링된 고체의 평행입방체를 보여줍니다.이것은 병렬 투사 카메라 모델의 사용법입니다.
인아웃레이 분류
이 그림은 단일 광선이 평가되는 + 및 –를 사용하는 합성 트리의 이진 연산자의 예를 보여 줍니다.
레이 캐스팅 절차는 솔리드 구성 트리의 상단에서 시작하여 하단으로 재귀적으로 하강하고 원시 고형물에 대해 레이를 분류한 후 왼쪽과 오른쪽 서브트리의 분류를 결합하여 트리로 돌아갑니다.
이 그림은 세 개의 이진 연산자 모두에 대한 왼쪽 및 오른쪽 분류의 조합을 보여 줍니다.
사실적인 음영 사진
레이 캐스팅은 음영 처리된 그림을 만들기 위한 자연스러운 모델링 도구입니다.GM 연구소의 Scott Roth와 Daniel Bass에 의해 개발된 그레이스케일 레이캐스팅 시스템은 1979년 경 Ramtek 컬러 래스터 디스플레이에 사진을 생성했다.사진을 합성하기 위해 시스템은 사용자에게 다음과 같은 컨트롤을 제공합니다.
- 보다
- 보기 방향 및 위치
- 초점거리: 평행한 광각 투시
- 줌 배율
- 일루미네이션
- 표면 반사율
이 그림은 두 점 광원의 그림자가 있는 테이블 장면을 보여 줍니다.
모든 현실적인 효과를 구현하는 음영 알고리즘은 계산 비용이 많이 들지만 비교적 단순합니다.예를 들어, 다음 그림은 단일 광원에 대해 주조할 수 있는 추가 광선을 보여줍니다.
렌더링되는 화상의 단일 화소에 대해 알고리즘은 초점부터 광선을 조사하여 그것이 반투명 직사각형과 빛나는 원을 교차한다고 판정한다.그런 다음 반사된 반사에 보이는 것을 결정하기 위해 추가 광선을 해당 광선 표면 교차점에서 대칭적으로 표면 법선과 반대 방향으로 주조해야 합니다.그 광선은 불투명한 삼각형과 교차한다.마지막으로 각 광선 표면 교차점이 음영에 있는지 여부를 판단하기 위해 테스트됩니다."그림자 필러" 광선은 광선 표면 교차점에서 광원으로 주조되어 다른 표면이 해당 경로를 차단하는지 확인합니다.
Turner Whited는 2차 및 추가 광선을 "재귀 광선 추적"[5]이라고 부릅니다.[거울의 방은 렌더링 비용이 많이 들기 때문에 재귀 횟수를 제한하는 것이 현명합니다]고체의 굴절률에 의해 결정되는 각도로 가시 표면점에서 2차 광선을 발생시켜 투명도를 위한 휘트 모형 굴절.그런 다음 2차 광선은 경면 광선으로 처리됩니다.굴절 공식 및 그림 예는 Whitted의 논문을 참조하십시오.
인클로저 및 효율성
레이 캐스팅은 문제를 해결하기 위한 강력한 방법으로 인정됩니다.최소 알고리즘은 특히 많은 응용 프로그램과 사용 편의성을 고려하여 단순하지만, 일반적으로 응용 프로그램은 많은 광선을 방출합니다.애니메이션 영화의 단일 프레임을 그리기 위해 수백만 개의 광선을 던질 수 있다.컴퓨터 처리 시간은 화면의 해상도와 구성 내의 원시 솔리드/표면 수에 따라 증가합니다.
합성 트리의 솔리드 주위에 최소 경계 상자를 사용함으로써 광선 고체 교차로의 완전한 검색은 효율적인 바이너리 검색과 유사합니다.brute force 알고리즘은 트리의 모든 노드를 항상 방문하기 때문에 철저한 검색을 수행합니다. 즉, 광선을 원시 좌표계로 변환하고 광선 표면 교차점을 테스트하고 분류를 결합합니다. 이는 광선이 확실히 고체를 놓치는 경우에도 마찬가지입니다.「클리어 미스」를 검출하기 위해서, 보다 빠른 알고리즘은, 솔리드 구성이 차지하는 공간의 계층적 표현으로서 바이너리 구성 트리를 사용한다.그러나 모든 위치, 모양 및 크기 정보는 원시 고형물이 있는 나무의 잎에 저장됩니다.트리의 상위 노드와 중간 노드는 결합 연산자만 지정합니다.
인클로저로 모든 솔리드가 채우는 공간을 특성화하면 트리 내의 모든 노드에 위치 및 크기 정보의 추상적인 요약이 제공됩니다.그런 다음 빠른 "선 교차 인클로저" 테스트가 계층에서 검색을 안내합니다.트리의 중간 노드에서 테스트가 실패하면 광선이 복합에서 벗어난 것으로 분류되므로 추가 조사를 위해 하위 트리를 반복할 필요가 없습니다.
인클로저 사용에 따른 비용 절감을 정확하게 평가하는 것은 원소의 공간적 분포(복잡도 분포)와 구성 트리의 구성에 따라 다르기 때문에 어렵다.최적의 조건은 다음과 같습니다.
- 공간에 중복되는 기본 인클로저 없음
- 구성 트리는 우주에서 가까운 서브솔리드도 트리 근처에 있도록 균형잡히고 정리되어 있습니다.
반면 최악의 상황은 다음과 같습니다.
- 모든 기본 인클로저 상호 중복
다음은 Roth의 레이 캐스팅에 관한 논문에서 이루어진 기타 성능 개선 사항이지만, 그 후 다른 사람들에 의해 상당한 개선이 이루어졌습니다.
- 얼리 아웃트리의 컴포지트 노드의 연산자가 또는 &이며, 광선이 컴포지트의 왼쪽 서브솔리드를 벗어난 것으로 분류되면 광선은 오른쪽 서브솔리드에 대한 광선의 분류에 관계없이 컴포지트 이외의 것으로 분류됩니다.따라서 우측 서브솔리드에 대한 광선 분류는 불필요하며 효율성을 위해 피해야 합니다.
- 변혁.처음에 화면 대 장면 변환과 프리미티브의 장면 대 로컬 변환을 조합하여 프리미티브의 데이터 구조에 저장함으로써 광선 대 표면 교차점당 하나의 광선 변환을 제거한다.
- 재귀.딥 컴포지션트리를 지정하면 메모리 할당 및 해방과 함께 재귀 비용이 많이 들 수 있습니다.정적 어레이를 스택으로 사용하여 재귀 시뮬레이션을 수행할 수 있습니다.
- 다이내믹 바운딩솔리드의 가시적인 가장자리만 표시되는 경우 레이 캐스팅 알고리즘은 검색을 차단하기 위해 레이를 동적으로 바인딩할 수 있습니다.즉, 광선이 서브솔리드와 교차하는 것을 발견한 후 알고리즘은 스크린에 가장 가까운 교차점을 사용하여 "선 교차 상자" 테스트의 깊이를 조일 수 있습니다.이것은 트리의 맨 위에서 시작하는 + 부분에 대해서만 작동합니다.& 를 사용하면, 가까운 광선의 「인」부분이 나중에 「아웃」될 가능성이 있습니다.
- 일관성이 있습니다.일관성의 원리는 인접한 두 픽셀에서 볼 수 있는 표면이 다른 것보다 더 같을 가능성이 높다는 것입니다.컴퓨터 그래픽스 및 비전 시스템 개발자들은 효율성과 성능을 위해 이 경험적 진실을 적용했습니다.선 도면의 경우, 일반적으로 가장자리를 포함하는 이미지 영역이 총 이미지 영역보다 훨씬 작기 때문에 레이 캐스팅은 열린 영역이 아닌 가장자리 주변에 집중되어야 합니다.이는 광선으로 화면을 희박하게 샘플링한 다음 인접 광선이 다른 가시 표면을 식별할 때 이진 검색을 통해 가장자리를 찾는 것으로 효과적으로 구현할 수 있습니다.
안티에일리어싱
앨리어싱으로 인해 들쭉날쭉한 가장자리는 점 샘플링 기술의 바람직하지 않은 효과이며 래스터 디스플레이 알고리즘의 전형적인 문제입니다.선형 또는 부드럽게 구부러진 가장자리는 들쭉날쭉하게 나타나며, 특히 애니메이션에서는 이미지를 움직이면 가장자리가 흐릿하게 보이거나 움직이는 에스컬레이터처럼 보이기 때문에 특히 좋지 않습니다.또, 광선 간격보다 작은 씬의 디테일이 없어지는 일이 있습니다.선 도면의 들쭉날쭉한 모서리는 모서리를 따라 평활할 수 있습니다.이러한 알고리즘의 목적은 1픽셀의 정확도 내에서 그림을 그리는 데 필요한 선의 수를 최소화하는 것입니다.가장자리가 매끄러워집니다.위의 선화들은 이렇게 그려졌습니다.
음영 처리된 화상의 들쭉날쭉한 가장자리를 서브픽셀의 정확도로 매끄럽게 하려면 가장자리에 대한 정보를 위해 추가 광선을 조사해야 합니다.(일반적인 접근법에 대해서는 '슈퍼샘플링'을 참조하십시오).가장자리는 표면의 교차점 또는 곡면의 프로파일에 의해 형성됩니다.바이너리 검색을 통해 위에서 설명한 바와 같이 "커히런스"를 적용하면 픽셀(X,Y)의 가시 표면이 픽셀(X+1,Y)의 가시 표면과 다를 경우, (X+,,Y)에서 중간에서 광선이 생성되고 가시 표면이 식별될 수 있습니다.표본점 사이의 거리는 더 세분될 수 있지만, 검색이 더 깊을 필요는 없습니다.들쭉날쭉한 가장자리를 부드럽게 하기 위한 주요 검색 깊이는 가장자리를 가로지르는 강도 구배의 함수입니다.(1) 가장자리가 포함된 이미지의 면적은 일반적으로 전체 면적의 작은 비율이며, (2) 이진수 검색에서 추가로 주조되는 광선은 가장자리를 형성하는 가시적인 원시 요소의 깊이에서 제한될 수 있으므로 들쭉날쭉한 가장자리를 평활하는 데 드는 비용이 저렴하다.
레이캐스팅의 역사
레이 캐스팅의 역사에 대해서는, 레이 트레이스(그래픽)를 참조해 주세요.레이 트레이스(그래픽)는 기본적으로 다른 이름으로 같은 기술이기 때문입니다.Scott Roth는 "레이 트레이스"에 대해 듣기 전에 "레이 캐스팅"이라는 용어를 발명했다.또한 GM 연구소에서 Scott Roth의 레이 캐스팅 개발은 Bell Labs에서 Turner Whited의 레이 트레이스 작업과 동시에 이루어졌습니다.
초기 컴퓨터 게임의 레이 캐스팅
초기 1인칭 게임에서는 레이캐스팅을 사용하여 [6]2D 플레이 필드에서 3D 세계를 화면 가로 폭에 걸쳐 간단한 1차원 스캔을 통해 효율적으로 렌더링했습니다.초기 1인칭 촬영자들은 2D 레이 캐스팅을 2D 세계에서 3D 효과를 내기 위한 기술로 사용했습니다.세계가 3D로 나타나는 동안 플레이어는 상하좌우로 보거나 전단 [6]왜곡으로 제한된 각도만 볼 수 없습니다.이 렌더링 스타일은 최신 엔진과 마찬가지로 프레임 내의 각 픽셀에 대해 레이를 발사할 필요가 없습니다.히트점이 발견되면 투영 왜곡이 표면 텍스처에 적용되어 결과에서 프레임으로 수직 컬럼 전체가 복사됩니다.이 렌더링 스타일은 깊이 정렬과 같이 수행할 수 있는 렌더링 유형에 제한을 가하지만 깊이 버퍼링은 수행할 수 없습니다.즉, 폴리곤은 서로 앞 또는 뒤에 가득 차야 하며 부분적으로 겹치거나 교차할 수 없습니다.
울펜슈타인 3D
비디오 게임 울펜슈타인 3D는 단단한 색상의 바닥과 천장을 만나는 균일한 높이 벽의 정사각형 기반 그리드로 제작되었습니다.세계를 그리기 위해 화면 픽셀의 각 열에 대해 하나의 광선을 추적하고,[7] 이를 수행하기 전에 광선이 벽에 닿는 위치와 이동 거리에 따라 벽 질감의 수직 슬라이스를 선택하고 크기를 조정했습니다.
그리드 기반 레벨의 목적은 두 가지였습니다. 즉, 잠재적인 히트 예측이 가능해지고 메모리 오버헤드가 감소하기 때문에 레이월 충돌을 더 빨리 찾을 수 있습니다.다만, 와이드 오픈 영역을 인코딩 하는 경우는, 여분의 공간이 필요합니다.
섀도캐스터
레이븐 소프트웨어 게임 ShadowCaster는 개선된 울펜슈타인 기반 엔진을 사용하여 바닥과 천장의 텍스처링과 다양한 벽 높이를 제공합니다.
코만치 급수
코만치 게임용으로 NovaLogic이 개발한 Voxel Space 엔진은 화면 픽셀의 각 열을 추적하여 각 광선을 높이 지도의 점과 비교 테스트했습니다.그런 다음 높이 맵의 각 요소를 픽셀 열로 변환하여 볼 수 있는 것(즉, 앞에 그려진 픽셀에 의해 가려지지 않은 것)을 결정하고 텍스처 [8]맵에서 해당하는 색으로 그립니다.
비욘드 레이캐스팅
id Software의 DOOM과 같은 이후의 도스 게임들은 속도에 대한 많은 레이캐스팅 2.5D 제한을 유지했지만 BSP와 같은 대체 렌더링 기술로 전환하여 더 이상 레이캐스팅 [9]엔진이 아니었다.
계산 지오메트리 설정
계산기하학에서 레이 캐스팅 문제는 레이 슈팅 문제로도 알려져 있으며 다음과 같은 쿼리 문제로 언급될 수 있습니다.즉, d차원 공간에 있는 오브젝트 세트가 주어지면 각 쿼리 레이에 대해 레이에 맞은 초기 오브젝트를 빠르게 찾을 수 있도록 데이터 구조로 전처리하십시오.이 문제는 공간 치수, 객체 유형, 쿼리 광선 제한 [10]등 다양한 설정에 대해 조사되었습니다.한 가지 방법은 스파스 복셀 옥트리를 사용하는 것입니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Roth, Scott D. (February 1982), "Ray Casting for Modeling Solids", Computer Graphics and Image Processing, 18 (2): 109–144, doi:10.1016/0146-664X(82)90169-1
- ^ Voelker, H. B.; Requicha, A. A. G. (December 1977). "Geometric modeling of mechanical parts and processes". Computer. 10.
- ^ Requicha, A. A. G. (December 1980). "Representation for rigid solids: Theory, methods, and systems". ACM Computing Surveys. 12.
- ^ 를 클릭합니다.Newman, W.; Sproull, R. (December 1973). Principles of Interactive Computer Graphics. Mcgraw-Hill.
- ^ Whitted, Turner (June 1980), "An Improved Illumination Model for Shaded Display", Communications of the ACM, 23 (6): 343–349
- ^ a b c "Ray Casting (Concept) - Giant Bomb". Retrieved 31 August 2021.
- ^ F의 울펜슈타인식 레이 캐스팅 튜토리얼.페르마디
- ^ 안드레 라모테.3D 게임 프로그래밍의 블랙 아트. 1995, 페이지 14, 398, 935-936, 941-943.ISBN 1-57169-004-2.
- ^ "ADG Filler #48 - Is the Doom Engine a Raycaster? - YouTube". Archived from the original on 2021-12-12. Retrieved 31 August 2021.
- ^ Mark de Berg, Springer-Verlag, 1993년, ISBN 3-540-57020-9, 201pp의 "레이 촬영, 깊이 명령 및 숨겨진 표면 제거"