렌더링 · 사전 가시성
기준: 레일 위 · 시야각 60°아래 조건을 바꾸면 목록을 다시 만듭니다.
● 현재 보이며 제출됨× 필요하지만 누락○ 현재 불필요한 제출● 미제출
문제 · 원인 · 해결 · 대가
‘문이 열린 뒤’를 눌러 보세요. 주황색 ×는 지금 카메라에 필요하지만 닫힌 문을 기준으로 만든 목록에는 없는 대상입니다. 관찰도에 남아 있는 회색 대상도 월드에서 삭제된 것은 아닙니다.
카메라 경로를 구간으로 나누고, 각 구간의 여러 시점에서 보인 대상의 합집합 Bᵢ를 저장합니다. 안전하려면 구간 내 모든 위치의 V(s)가 Bᵢ에 들어가야 합니다. ‘끝점만 저장’에서는 양 끝에서 안 보인 대상이 구간 중간에 나타납니다. 유한 표본만으로 연속 구간 전체를 보장할 수 없습니다.
열린 문 목록을 함께 저장하면 문 상태에 맞는 목록을 고를 수 있습니다. 인접 목록의 합집합은 제출 범위를 늘려 경계의 누락을 줄이지만, 원래 목록에 없던 문 뒤 대상까지 만들지는 못합니다. 카메라 이탈과 시야각 확대는 별도 조건입니다. ‘현재 시점 재계산’은 이 장면의 현재 가시 집합을 직접 구합니다. 되돌아가도 같은 진행률과 상태는 같은 목록을 선택합니다.
‘전체 대상 제출’은 모든 36개 장식 대상을 보냅니다. 사전 목록은 실행 시 가시성 검사를 줄이는 대신 제작 때 표본을 검사하고 구간별 목록을 저장합니다. 구간·상태가 늘면 비트셋 저장량과 표본 검사 횟수가 늘어납니다. 제출된 대상은 여전히 그리는 작업이 필요합니다.
대상 중심점 36개와 선분 가림막을 사용한 2D 모델입니다. 아래 화면은 점의 시야각·거리를 정규화해 보여주며 실제 원근 렌더러가 아닙니다. 문과 가림막은 별도 표시하고 제출 개수에는 장식 대상만 셉니다. 비트셋 환산 저장량은 구간당 36비트를 바이트 단위로 올린 5B입니다. 실제 JavaScript Set의 메모리가 아니며 자료구조 부가 비용은 제외합니다. 제작 시간은 이 브라우저의 표본 목록 생성 시간입니다. 비교용 현재 가시성 검사 비용은 선택 방식의 검사 수와 구분합니다. 원작의 압축·정렬·동적 객체 알고리즘이나 실기 성능을 재현하지 않습니다.