3D 스케치에서 현재 카메라의 원근 투영을 설정합니다.
원근 투영에서, 카메라로부터 멀리 떨어진 도형은 카메라 근처에 있는 도형보다 더 작게 나타납니다. 단축법(foreshortening)이라고 불리는 이 기술은 사실적인 3D 장면을 만들며, WebGL 모드에서 기본적으로 사용됩니다.
perspective()
는 뷰 절두체(viewing frustum)를 변경함으로써 카메라의 원근법을 변경합니다. 절두체는 카메라가 볼 수 있는 공간의 크기입니다. 이것의 모양은 꼭대기가 잘린 피라미드입니다. 카메라는 피라미드의 꼭대기가 있어야 하는 곳에 위치하고, 절두체의 꼭대기 (근처) 평면과 바닥 (멀리 떨어진) 평면 사이의 모든 것을 담습니다.
첫번째 매개 변수인 fovy
는 카메라의 수직 시야입니다. 카메라의 시야가 얼마나 높거나 좁은지를 설명하는 각도입니다. 예를 들어, perspective(0.5)
를 호출하면 카메라의 수직 시야가 0.5 라디안으로 설정됩니다. 기본적으로 fovy
는 스케치의 높이와 카메라의 기본 z 좌표값인 800을 기반으로 계산됩니다. fovy
의 기본값을 계산하는 공식은 2 * atan(height / 2 / 800)
입니다.
두번째 매개 변수인 aspect
는 카메라의 종횡비입니다. 이것은 맨 위 평면의 가로와 세로의 비율을 설명하는 숫자입니다. 예를 들어, perspective(0.5, 1.5)
를 호출하면 카메라의 시야를 0.5 라디안으로 설정하고 종횡비를 1.5로 설정하여 정사각형 캔버스에서 도형을 더 얇아 보이게 합니다. 기본적으로, aspect는 width / height
로 설정됩니다.
세번째 매개 변수인 near
는 카메라에서 가까운 평면까지의 거리입니다. 예를 들어, perspective(0.5, 1.5, 100)
를 호출하면 카메라의 시야를 0.5 라디안으로 설정하고, 종횡비를 1.5로 설정하고, 카메라에서 가까운 평면을 100 픽셀로 배치합니다. 카메라에서 100 픽셀 미만으로 그려진 어떤 모양도 볼 수 없습니다. 기본적으로 near는 카메라와 원점 사이의 기본 거리의 1/10인 0.1 * 800
로 설정됩니다.
네번째 매개 변수인 far
는 카메라에서 먼 평면까지의 거리입니다. 예를 들어, perspective(0.5, 1.5, 100, 10000)
를 호출하면 카메라의 시야를 0.5 라디안으로 설정하고 , 종횡비를 1.5로 설정하고, 카메라에서 가까운 평면을 100 픽셀로 배치하고, 카메라에서 먼 평면을 10,000 픽셀로 배치합니다. 카메라에서 10,000 픽셀 이상 그려진 어떤 모양도 볼 수 없습니다. 기본적으로 far는 카메라와 원점 사이의 기본 거리의 10배인 10 * 800
로 설정됩니다.
참고: perspective()
는 WebGL 모드에서만 사용할 수 있습니다.
예제
구문
perspective([fovy], [aspect], [near], [far])
매개변수
카메라 절두체 수직 시야. 기본값 2 * atan(height / 2 / 800)
카메라 절두체 종횡비. 기본값 width / height
카메라에서 가까운, 잘린(clipping) 평면까지의 거리. 기본값 0.1 * 800
카메라에서 먼, 잘린 평면까지의 거리. 기본값 10 * 800