게임 캐릭터와 객체들이 상호작용하는 지형은 가상세계를 구성하기 위한 필수 요소이다. 지형을 제작할 때 많은 갱신 작업과 시간이 들어가는 문제점이 발생한다. 본 논문에서는 실제 지형을 촬영한 데이터로부터 가상 공간의 3D 지형을 생성하기 위한 3D 지형 재구축 시스템을 제안한다. 제안시스템에서는 스테레오 카메라로 촬영하고, 레이져 스캐너로 실측한 3차원 지형 데이터를 기반으로 생성된 그리드 기반의 높이 맵(HeightMap)과 로봇의 항법정보 중 z축과 x축 방향 벡터를 이용해 가상공간의 중심인 월드좌표계에 맞게 로테이션을 수행하여 축의 방향을 일치시키고, 로봇 중심의 좌표계에서 월드 좌표계로의 이동 벡터를 각 포인트에 더하여 최종적으로 월드좌표계에 맞게 변환한다. 이후 무방향성 그래프를 사용하여 지형 데이터를 관리하면서 가상공간에서 필요한 부분에만 동적으로 지형 메쉬를 생성한다. 이때 지형 데이터의 오류를 보정하여 메쉬를 올바르게 갱신한다. 실험에서는 제안 시스템이 지형 재구축을 완료할 때까지 일정한 주기로 FPS를 확인하고, 완성된 지형을 가시화하여 품질을 검토하였다. 지형의 전체 크기를 알 수 없거나, 실시간으로 지형의 크기가 변화하는 환경에서는, 제안된 시스템이 쿼드트리를 사용한 지형 관리보다 지형 크기가 작을 때 3배정도의 높은 FPS를 보이나, 지형이 아주 클 때는 평균 40% 정도 나은 실행 성능을 가진다. 최종적으로는, 실측한 지형의 모양을 그대로 유지하면서 가시화하고 있다. 본 연구에서 제안한 시스템을 이용하여 게임에 이용할 지형 데이터를 실시간으로 자동 생성하여 게임에 이용하거나, 실제 지형을 배경으로 필요한 영화의 CG 작업에 활용하는 등의 응용 방안을 고려해 볼 수 있다.
게임 캐릭터와 객체들이 상호작용하는 지형은 가상세계를 구성하기 위한 필수 요소이다. 지형을 제작할 때 많은 갱신 작업과 시간이 들어가는 문제점이 발생한다. 본 논문에서는 실제 지형을 촬영한 데이터로부터 가상 공간의 3D 지형을 생성하기 위한 3D 지형 재구축 시스템을 제안한다. 제안시스템에서는 스테레오 카메라로 촬영하고, 레이져 스캐너로 실측한 3차원 지형 데이터를 기반으로 생성된 그리드 기반의 높이 맵(Height Map)과 로봇의 항법정보 중 z축과 x축 방향 벡터를 이용해 가상공간의 중심인 월드좌표계에 맞게 로테이션을 수행하여 축의 방향을 일치시키고, 로봇 중심의 좌표계에서 월드 좌표계로의 이동 벡터를 각 포인트에 더하여 최종적으로 월드좌표계에 맞게 변환한다. 이후 무방향성 그래프를 사용하여 지형 데이터를 관리하면서 가상공간에서 필요한 부분에만 동적으로 지형 메쉬를 생성한다. 이때 지형 데이터의 오류를 보정하여 메쉬를 올바르게 갱신한다. 실험에서는 제안 시스템이 지형 재구축을 완료할 때까지 일정한 주기로 FPS를 확인하고, 완성된 지형을 가시화하여 품질을 검토하였다. 지형의 전체 크기를 알 수 없거나, 실시간으로 지형의 크기가 변화하는 환경에서는, 제안된 시스템이 쿼드트리를 사용한 지형 관리보다 지형 크기가 작을 때 3배정도의 높은 FPS를 보이나, 지형이 아주 클 때는 평균 40% 정도 나은 실행 성능을 가진다. 최종적으로는, 실측한 지형의 모양을 그대로 유지하면서 가시화하고 있다. 본 연구에서 제안한 시스템을 이용하여 게임에 이용할 지형 데이터를 실시간으로 자동 생성하여 게임에 이용하거나, 실제 지형을 배경으로 필요한 영화의 CG 작업에 활용하는 등의 응용 방안을 고려해 볼 수 있다.
A terrain is an essential element for constructing a virtual world in which game characters and objects make various interactions with one another. Creating a terrain requires a great deal of time and repetitive editing processes. This paper presents a 3D terrain reconstruction system to create 3D t...
A terrain is an essential element for constructing a virtual world in which game characters and objects make various interactions with one another. Creating a terrain requires a great deal of time and repetitive editing processes. This paper presents a 3D terrain reconstruction system to create 3D terrain in virtual space based on real terrain data. In this system, it converts the coordinate system of the height maps which are generated from a stereo camera and a laser scanner from global GPS into 3D world using the x and z axis vectors of the global GPS coordinate system. It calculates the movement vectors and the rotation matrices frame by frame. Terrain meshes are dynamically generated and rendered in the virtual areas which are represented in an undirected graph. The rendering meshes are exactly created and updated by correcting terrain data errors. In our experiments, the FPS of the system was regularly checked until the terrain was reconstructed by our system, and the visualization quality of the terrain was reviewed. As a result, our system shows that it has 3 times higher FPS than other terrain management systems with Quadtree for small area, improves 40% than others for large area. The visualization of terrain data maintains the same shape as the contour of real terrain. This system could be used for the terrain system of realtime 3D games to generate terrain on real time, and for the terrain design work of CG Movies.
A terrain is an essential element for constructing a virtual world in which game characters and objects make various interactions with one another. Creating a terrain requires a great deal of time and repetitive editing processes. This paper presents a 3D terrain reconstruction system to create 3D terrain in virtual space based on real terrain data. In this system, it converts the coordinate system of the height maps which are generated from a stereo camera and a laser scanner from global GPS into 3D world using the x and z axis vectors of the global GPS coordinate system. It calculates the movement vectors and the rotation matrices frame by frame. Terrain meshes are dynamically generated and rendered in the virtual areas which are represented in an undirected graph. The rendering meshes are exactly created and updated by correcting terrain data errors. In our experiments, the FPS of the system was regularly checked until the terrain was reconstructed by our system, and the visualization quality of the terrain was reviewed. As a result, our system shows that it has 3 times higher FPS than other terrain management systems with Quadtree for small area, improves 40% than others for large area. The visualization of terrain data maintains the same shape as the contour of real terrain. This system could be used for the terrain system of realtime 3D games to generate terrain on real time, and for the terrain design work of CG Movies.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
무방향 그래프의 성능을 비교하기 위하여 본 연구에서는 쿼드트리를 사용한 지형 관리 시스템을 별도로 구현하였다. [그림 12]에서 적용된 쿼드트리를 사용한 시스템은 [그림 11]에서 사용한 시스템과 동일한 순서로 진행되는 것을 확인할 수 있다.
본 논문에서는 스테레오 카메라를 통해 실측된 영상의 지형 데이터로부터 가상공간의 지형을 생성하는 3D 지형 재구축 프레임워크를 제안하였다. 제안 시스템은 실측영상으로부터 저장한 지형 데이터 중 센서데이터를 로드하여 가상공간의 원점을 기점으로 각 프레임별로 자세정보를 계산하고, 1차원으로 수집되는 지형 데이터를 2차원 형식으로 변환하여 높이맵 형식의 지형 메쉬를 생성하면서 센서데이터와 통합하였다.
본 논문에서는 이러한 반복 작업과 시간을 들이는 불편함, 그리고 실데이타를 이용한 지형 재구성상의 기존 문제점들을 개선하기 위하여, 실측 지형 데이터로부터 가상 공간상의 지형 모델을 생성하는 기법을 제안한다. 이 기법은 실제 지형을 측정한 지형 데이터를 실시간에 프레임 단위로 적재하여 가상공간에 렌더링(rendering)하기 위한 3D 메쉬(mesh)를 생성하고, 갱신한다.
본 논문은 실시간으로 센싱된 지형 데이터를 가상 세계의 3D 지형으로 실시간으로 재구축하는 방법을 제안하였다. 본 연구에서 제안한 시스템을 이용하여 게임에 이용할 지형 데이터를 실시간으로 자동 생성하여 게임에 이용하거나, 실제 지형을 배경으로 필요한 영화의 CG 작업에 활용하는 등의 응용 방안을 고려해 볼 수 있다.
이 기법은 실제 지형을 측정한 지형 데이터를 실시간에 프레임 단위로 적재하여 가상공간에 렌더링(rendering)하기 위한 3D 메쉬(mesh)를 생성하고, 갱신한다. 이 논문에서는 지형 데이터로부터 가상공간의 3D모델을 생성해내는 방안을 설명한다. 색상 정보와 지형 형태 정보를 통합하여 가상공간에서 볼 수 있는 완전한 지형 메쉬를 만들어 렌더링한다.
제안 방법
실험은 지형 데이터를 총 5,000개의 프레임을 채집하였으며, 프레임을 진행함에 따라 데이터를 로드하고 계산하고 지형 메쉬를 생성, 갱신하는 작업과 동시에 지형 메쉬의 렌더링을 수행하였다. 그리고 프레임이 진행될 동안 500 프레임마다 FPS를 저장하여 5,000 프레임까지 총 10개의 FPS 값 중 최저 FPS와 최고 FPS를 구하고 평균 FPS를 계산하였다.
그리드 기반의 높이맵(Height Map)과 컬러맵으로 실시간 갱신되는 지형 데이터를 관리하기 위한 성능 분석을 위하여 무방향 그래프와 쿼드트리의 성능을 비교한다. 쿼드트리를 적용한 시스템과 무방향 그래프를 적용한 시스템을 구현하여 동일한 데이터로 FPS를 측정하였다.
올바른 지형 데이터를 정하여 지형 메쉬를 생성하기 위해 클러스터링 과정을 통해 비슷한 위치의 지형 데이터 중 올바른 값을 판별하였다. 또한 렌더링되는 지형 메쉬의 삼각형 개수를 줄이기 위하여 무방향성 그래프를 사용하여 노드 단위로 지형을 관리하는 방안을 설명하였다.
본 논문에서 제안하는 시스템에서는 가상 공간상의 원점 (0,0,0)을 기준으로 지형을 생성한다. 맨 처음 프레임의 센서 위치 값을 원점으로 정하고, 다음 프레임부터 이동한 값을 처음 프레임과 (식 4)와 같이 계산하여 위치정보로 이용한다[11].
만약 임의로 최대 크기를 정하더라도 실시간 업데이트 환경에서는 지형 데이터의 높이 정보를 매 프레임마다 갱신해야 하기 때문에, 갱신되는 지형 정보의 모든 버텍스에 대한 탐색을 수행해야 하는 부하가 발생한다[12]. 본 논문에서는 실시간으로 갱신하는 부하를 줄이고, 지형의 최대 크기를 알 수 없을 때 사용이 가능한 무방향성 그래프를 이용하여 지형관리를 설계한다.
본 연구에서 제안한 3D 지형 재구축 방안을 토대로 시스템을 구현하였다. [그림 11]은 [그림 2]에 표현한 흐름도를 무방향 그래프를 적용하여 상세화시킨 것이다.
이 논문에서는 지형 데이터로부터 가상공간의 3D모델을 생성해내는 방안을 설명한다. 색상 정보와 지형 형태 정보를 통합하여 가상공간에서 볼 수 있는 완전한 지형 메쉬를 만들어 렌더링한다.
실측된 지형 데이터로부터 가상공간의 3D 지형 모델을 만드는 방법은, 먼저 센서로 주사하는 실제 지형 데이터를 생성하여 프레임 단위로 저장하고, 이 지형 데이터를 가상공간의 3D 메쉬로 재구성한다. 가상공간의 지형 모델을 만드는 작업은, 실측된 지형 데이터를 저장한 지형 데이터의 재구성, 가상공간에서의 지형 데이터의 위치 계산, 가상공간 상에의 배치, 렌더링되는 지형 메쉬 갱신 등이다.
실험은 본 연구에서 구현한 3D 지형 재구축 시스템과 쿼드트리를 이용가한 지형 재구축 방식을 수행하여 데이터 로드가 끝날 때까지의 FPS(Frame Per Second)를 측정한다. FPS는 최고 수치를 기록한 FPS와 전체 프레임을 진행함에 따른 평균 FPS를 측정한다.
실험은 지형 데이터를 총 5,000개의 프레임을 채집하였으며, 프레임을 진행함에 따라 데이터를 로드하고 계산하고 지형 메쉬를 생성, 갱신하는 작업과 동시에 지형 메쉬의 렌더링을 수행하였다. 그리고 프레임이 진행될 동안 500 프레임마다 FPS를 저장하여 5,000 프레임까지 총 10개의 FPS 값 중 최저 FPS와 최고 FPS를 구하고 평균 FPS를 계산하였다.
제안한 시스템의 성능을 검증하기 위하여, 현재 지형 데이터의 효과적인 관리를 위해 가장 보편적으로 사용하는 쿼드트리(Quad Tree)와의 성능을 비교한다. 실험을 통해 제안 시스템의 각 단계가 바르게 수행되고 이 과정에서 성능 개선과 지형 가시화 수준을 검토한다.
제안 시스템은 실측영상으로부터 저장한 지형 데이터 중 센서데이터를 로드하여 가상공간의 원점을 기점으로 각 프레임별로 자세정보를 계산하고, 1차원으로 수집되는 지형 데이터를 2차원 형식으로 변환하여 높이맵 형식의 지형 메쉬를 생성하면서 센서데이터와 통합하였다. 올바른 지형 데이터를 정하여 지형 메쉬를 생성하기 위해 클러스터링 과정을 통해 비슷한 위치의 지형 데이터 중 올바른 값을 판별하였다. 또한 렌더링되는 지형 메쉬의 삼각형 개수를 줄이기 위하여 무방향성 그래프를 사용하여 노드 단위로 지형을 관리하는 방안을 설명하였다.
이 장에서는 지금까지 설명한 지형 재구축 시스템을 적용하여 실측된 지형 데이터로부터 가상 공간의 3D 지형을 생성하는 실험을 진행한다.
본 논문에서는 스테레오 카메라를 통해 실측된 영상의 지형 데이터로부터 가상공간의 지형을 생성하는 3D 지형 재구축 프레임워크를 제안하였다. 제안 시스템은 실측영상으로부터 저장한 지형 데이터 중 센서데이터를 로드하여 가상공간의 원점을 기점으로 각 프레임별로 자세정보를 계산하고, 1차원으로 수집되는 지형 데이터를 2차원 형식으로 변환하여 높이맵 형식의 지형 메쉬를 생성하면서 센서데이터와 통합하였다. 올바른 지형 데이터를 정하여 지형 메쉬를 생성하기 위해 클러스터링 과정을 통해 비슷한 위치의 지형 데이터 중 올바른 값을 판별하였다.
쿼드트리는 지형의 크기가 (2n+1)이어야 하기 때문에, 먼저 3D 지형 재구축 시스템을 통한 실험을 먼저 진행하여 5,000개의 프레임을 진행한 후 생성된 실험 지형의 최대, 최소 크기를 알아내어 쿼드트리의 전체 크기를 추정하였다. 그래서, 그 크기를 1025x1025의 크기로 설정하였다.
[그림 15]에서 초기에 500 프레임까지는 제안 시스템이 쿼드트리에 비해 월등한 FPS를 보이지만, 시간이 지남에 따라 쿼드트리보다 약간 더 높은 수준의 FPS를 보여주었다. 쿼드트리는 처음부터 지형 메쉬를 생성하고 지형 메쉬의 갱신만을 수행하지만, 제안 시스템은 지형 데이터를 로드한 각 프레임에 따른 최소의 지형 메쉬만을 생성한다. 이것은 초기에 렌더링되는 지형 메쉬는 작지만, 프레임 누적이 되면서 지형이 더 생성되며 지속적으로 갱신하는 과정에서 렌더링되는 삼각형의 수가 늘어남에 따라 렌더링 속도가 더 느려짐에 따른 것이다.
그리드 기반의 높이맵(Height Map)과 컬러맵으로 실시간 갱신되는 지형 데이터를 관리하기 위한 성능 분석을 위하여 무방향 그래프와 쿼드트리의 성능을 비교한다. 쿼드트리를 적용한 시스템과 무방향 그래프를 적용한 시스템을 구현하여 동일한 데이터로 FPS를 측정하였다. 두 시스템 모두 지형 데이터의 관리를 제외한 처리 방법은 동일하게 진행하였다.
대상 데이터
본 논문에서 지형 데이터는 [그림 1]과 같이 스테레오 카메라와 레이저 스캐너를 부착한 자동차가 움직이면서 실제 지형을 촬영하고 주사한(scan) 것을 실측 데이터로 이용한다.
실험 데이터는 [그림 1]과 같이 차량을 이용하여 스테레오 카메라를 통해 획득한 실제 영상과 스캔한 지형 데이터를 사용해 생성된 그리드 기반의 높이 맵(Height Map)을 사용한다. [그림 11]에서 지형, 색상 데이터 로드 단계에서 1개의 프레임을 읽어와 나머지 과정을 반복 수행한다.
실험은 쿼드코어 2.40GHz, 3.2G램, NVIDIA Geforce 9800GTX+ 1GB의 PC 사양에서 마이크로소프트 社의 Visual Studio 2005와 DirectX SDK 9.0c (Aug. 2007) 버전을 사용하여 진행하였다.
데이터처리
제안한 시스템의 성능을 검증하기 위하여, 현재 지형 데이터의 효과적인 관리를 위해 가장 보편적으로 사용하는 쿼드트리(Quad Tree)와의 성능을 비교한다. 실험을 통해 제안 시스템의 각 단계가 바르게 수행되고 이 과정에서 성능 개선과 지형 가시화 수준을 검토한다.
이론/모형
읽어들인 데이터는 다시 2차원 배열의 형태로 처리하게 된다. 가로 x축 세로 z축을 기준으로 데이터가 들어있는 부분만 y값으로 처리하여 일반적인 지형생성과정인 높이맵(Heightmap) 방식으로 지 형데이타를 계산한다. 지형 데이터는 탐지된 지형의 높이값과 해당 높이값에 맞는 색상정보의 2가지로 구성되어 있다.
성능/효과
쿼드트리를 사용한 지형은 지형 데이터 로드 초기에서 5,000 프레임까지의 FPS가 일정한 수준의 FPS를 보인다. 이것에서, 쿼드트리가 만들어진 지형에 대해서는 렌더링 속도를 유지하는 안정적인 구조라는 것을 알 수 있다.
후속연구
한 단위 프레임의 지형은 실제 지형을 촬영하는 센서의 측정 거리에 따라 지형의 크기와 정점의 개수, 넓이 등이 달라진다. 그래서 프레임이 진행됨에 따라 지형 모델 메쉬를 누적시키고 알맞은 값을 추출하여 하나의 완전한 메쉬로 만드는 과정과 만들어진 메쉬를 관리하는 방법에 대한 연구가 필요하다.
본 논문은 실시간으로 센싱된 지형 데이터를 가상 세계의 3D 지형으로 실시간으로 재구축하는 방법을 제안하였다. 본 연구에서 제안한 시스템을 이용하여 게임에 이용할 지형 데이터를 실시간으로 자동 생성하여 게임에 이용하거나, 실제 지형을 배경으로 필요한 영화의 CG 작업에 활용하는 등의 응용 방안을 고려해 볼 수 있다.
질의응답
핵심어
질문
논문에서 추출한 답변
가상공간에서는 무엇으로 물체를 표현하나?
가상공간에서는 점, 선, 면 등으로 물체를 표현한다. 그중 가장 많이 쓰이는 것은 면이다.
게임 같은 가상공간에서 지형은 무수히 많은 삼각형들의 집합으로 이루어지는데, 삼각형을 구성하는 방법에는 무엇이 있는가?
게임 같은 가상공간에서 지형은 대체로 무수히 많은 삼각형들의 집합으로 이루어진다. 삼각형을 구성하는 방법은 프로그래머가 위치 값을 직접 입력하는 방식, 3DS Max나 Maya같은 폴리곤 모델링 툴을 이용하는 방식, 영상이나 이미지로부터 계산을 통하여 모델의 형태를 계산해내는 방식[4] 등 여러 가지가 있다.
실외지형을 생성하는 방식은 주로 어떤 방식을 쓰나?
지형을 생성하는 방식이나 지형을 관리하는 방식에 따라 실외지형과 실내지형으로 나뉜다. 실외지형을 생성하는 방식은 주로 높이맵(Heightmap) 방식을 쓴다[5]. 그 외에도 이미 만들어진 지형에 변화를 가하여 새로운 지형을 생성하는 방식으로 프렉탈(fractal) 지형 생성 방식이 있다[6].
참고문헌 (12)
A. Griesert, "Interactive Realtime Terrain Visualization for Virtual Set Applications.", International Conference on Human and Computer, Aizu-Wakamatsu/Tokyo, August, 2003, pp. 55-61.
C. Dai and X. Deng, "Fast rendering of massive textured terrain data", Journal of Communication and Computer, Mar. 2007, Vol.4, No.3, ISSN 1548-7709, USA, pp. 63-68
R. Sukumar, "Multi-sensor Integration for Unmanned Terrain Modeling.", in Proc. SPIE Unmanned Systems Technology VIIl, Vol. 6230, Orlando, FL, April 2006, pp. 65-74.
A. McKenzie, "Terrain Geometry from Monocular Image Sequences.", Journal of Computing Science and Engineering, March 2008.
F. D. Luna저, 최현호 역 "DirectX9를 이용한 3D Game 프로그래밍 입문", 정보문화사, 2004.
M. Deloura외 공저, 류광 역, "Game Programming Gems", 정보문화사, 2001.
S. Ranta, "Binary Space Partitioning Trees and Polygon Removal in Real Time 3D Rendering", Uppsala Master's Theses in Computing Science Examensarbete 179, Jan. 2001.
R. Pajarola, "Overview of Quadtree-based Terrain Triangulation and Visualization", UCI-ICS Technical Report No. 02-01 Dept. of Information & Computer Science, Univ. of California, Irvine, Jan. 2002.
김용준 저, "IT EXPERT 3D 게임 프로그래밍", 한빛미디어, 2003.
M. Duchaineau, "ROAMing Terrain (Real-time Optimally Adapting Meshes)", Institute of Electrical and Electronics Engineers Visualization '97 Phoenix, AZ, October 1997, pp 19-23.
Eric Lengyel, Mathmatics for 3D game Programming & Computer Graphics, Charles River Media, 2004
Thomas H. Cormen, "Introduction to Algorithms", 한빛 미디어, 2009
※ AI-Helper는 부적절한 답변을 할 수 있습니다.