본문 바로가기

전체 글48

.MAP 파일로 만드는 BSP (4) - 텍스처 좌표 계산하기 텍스처 tu tv를 계산하는 공식은 다음과 같다. V : 텍스처 계산에 사용될 버텍스 nu/nv : 텍스처 axis normal w/h : 텍스처의 상대적 w/h su/sv : 텍스처 scale ou/ov : 텍스처 offset or Shift 해당값은 앞에 설명한 파일 포맷에서 가져온다. 앞의 UV 값에서 보면 [1 0 0 0] [0 -1 0 0] 이라고 할때, 앞의 괄호는 U, 뒤는 V에 해당하는 값인데, 앞의 세 숫자는 U의 노말, 즉 nu이고 V에서의 세 숫자는 nv이다. 괄호의 마지막 숫자는 각각 ou/ov이다. 그 뒤 나오는 숫자 세개, 0 1 1 에서 0은 의미없는 값이고 1은 su 마지막 1은 sv이다. 그런데, 텍스처 좌표계를 구할 때 문제점이 있다. 텍스처 좌표계들이 노말라이즈 되지 않.. 2010. 11. 25.
.MAP 파일로 만드는 BSP (3) - 맵 파일 구조 1. { } : Entity 2. 초록색 글씨들 : Property들의 이름 3. 분홍색 글씨들 : Property들의 value 4. { } : Brush 5. ( ) : face 정보 - face들은 plane이라고 생각하면 될 듯. - 처음 세 개의 괄호 : 평면을 만들 수 있는 세 점 - 파란색 글씨 : 텍스처 이름 - 분홍색 글씨 : 텍스처 axis의 U V - 검은색 글씨 : texture rotation (불필요한 값) - 녹색 글씨 : U V texturre scale 2010. 11. 18.
.MAP 파일로 만드는 BSP (CSG 이용) (2) - 브러쉬를 폴리곤으로 바꾸기 2-1. 브러시를 폴리곤으로 바꾸기 일단 엔터티 목록이 메모리에 저장되면, 첫번째 작업은 브러시들을 폴리곤들로 변환하는 것이다. 여기에는 두 가지 방법이 있다. 첫 번째로는 3개 평면 교차법이다. 이 방법은 빠르고 상대적으로 적은 코드를 필요로 한다. 두 번째로는 모든 face(면)들의 평면(plane)을 따라 거대하고 잠재적인 폴리곤들을 만드는 방법이다. 그리고 나서 각각에 대해 그 폴리곤들을 클리핑 하는 방법이다. (이 글을 쓴 사람은 개인적으로 이 방법을 싫어하기 때문에 3 평면 교차법을 사용한다. ) 폴리곤을 브러시로 바꾸는 pseudo 코드는 다음과 같다. face들은 브러시안의 모든 face에 대한 배열로 한다. 폴리곤은 배열로 만드는데, 이 폴리곤들은 많은 수의 face들을 가지고 있다. F.. 2010. 11. 18.
.MAP 파일로 만드는 BSP (CSG 이용) (1) - 맵 파서 디자인 (원문을 번역함) 1. 맵 파서 디자인 이제 맵 파일 형식에 대해서는 알게 되었고, 이제 우리가 어떻게 .MAP 파일 파서를 코딩할 것인가에 대해 생각해 보자. .MAP 파일을 파싱해서 나오는 결과물은 엔터티들의 집합이어야 한다. 각각의 엔터티들은 속성과 폴리곤들을 가지고 있어야 한다. 이는 어떤 .MAP파일이든지 간에 크게 다르지 않다는 점을 알아두자. 문제는 지오메트리로 저장하는 대신 폴리곤의 목록들(리스트)로 저장한다는 점이며, .MAP 파일은 평면(PLANE)으로 정의된 볼록다각형들인 브러시들로 구성되 었다. 따라서 .MAP 파일 파서 작업은 메모리에 .MAP 파일을 로드하고, 엔터티 안에 있는 브러시들을 폴리곤의 집합과 수정된 엔터티 목록으로 변환을 하는 것이 된다. 다음 그림.. 2010. 11. 18.