1 Virtual Reality Development Server Platform : OpenSimulator 지승현 Ji SeungHyun 부산대학교 컴퓨터공학과 shji@pusan.ac.kr ABSTRACT 본 보고서는 3 차원 가상현실 제작 툴인 OpenSimulator(이하 OpenSim) 에 대하여 알아 본다. OpenSim 은 가상현실 Server 개발 프로그램으로써, 현재 상용 서비스 중인 SecondLife 와 연동 되어 실행 되며, 일반적인 Contents 개발 및 3 차원 가상현실을 제작 할 수 있는 개발자를 위한 다양한 API 를 제공하고 있다. 많은 연구자들이 OpenSim 을 기반으로 3 차원 가상현실 연구에 사용하고 있으며, 본 보고서에서는 앞으로 3 차원 가상현실 시스템 개발에 앞서 OpenSim 의 개 요 및 구조 등을 설명한다. 또한 OpenSim 을 편리하게 사용하기 위한 필요한 다양한 Utility 에 대해서 알아본다. OpenSim 은 Window 와 Linux 그리고 MAXOSX 운영체제를 지원하며, C# 기반으로 개발 되었다. Source Code 를 수정하기 위해서는 Visual Studio 2005 또는 2008 IDE 를 사용해야 한다. K EYWORDS Virtual Reality, SecondLife, OpenSim, Wonderland 1 OpenSimluation 소개 OpenSim 은 3 차원 가상공간을 제작 할 수 있는 open source server platform 이다. 현재 상용 서 비스 중에 3 차원 가상 현실 커뮤니케이션 시스템인 SecondLife(이하 SL) 의 lib 를 이용하여 제작되 었으며, open source 로써 BSD license 규약을 따르고 있다. Cross-platform 으로써 Window, Linux, MaxOS 에서 사용가능하다. OpenSim 은 3 차원 가상공간내의 Contents 개발을 위한 다양한 기능과 응 용프로그램 개발을 위한 개발자용 API 를 제공하며, Plug-in modules 를 사용하여 확장이 용이하도록 제작되었으며, 많은 개발자들이 이러한 module 를 개발, 공개하고 있다. 또한 현재 많은 연구, 개발에 서 OpenSim 를 이용하여 시스템 개발 및 Simulation 연구 등이 진행 중에 있으며, 상업적으로도 이를 기반으로 한 다양한 제품들이 제작되어 출시되고 있다. OpenSim 의 특징은 아래와 같다. 1. 하나의 서버에 Multi Client 와 다양한 Protocol 로 동시 접근이 가능하다. OpenSim 은 3 차원 가 상현실 Server 로써 이에 접속하기 위해서는 Viewer 를 이용한다. 대표적으로 가상현실 시스템인 SL Client(Viewer) 와 연동 되며, 이 외에도 전용 Viewer 등을 이용하여 접속 가능하다. 2. 가상공간 내에 Real-Time 으로 다양한 Contents 를 생성, 추가할 수 있다. 3 차원 오브젝트 제작 Tool 은 3DS Max, Blender 등에서 제작된 오브젝트를 쉽게 Import 할 수 있는 building tool 을 지원한다.
2 3. Texture, Sound 등의 리소스를 관리하며, WFRM(Write Few Read Many) database 를 기초로 하고 있다. 4. 응용프로그램 개발을 위한 다양한 프로그램 언어를 지원한다. SL 의 전용 Script 언어인 LSL/OSSL 을 비롯하여 C#, JScript, VB.NET 언어를 지원한다. 5. 추가적인 기능으로써 Open 물리엔진인 ODE, Physx, Bullet 을 지원한다. 2 OpenSim 의 구조 및 기능 OpenSim Server 는 주요 5 가지의 Server(UGAIM) 로 구성되어 있다. 1. UserServer : 접속하는 User 의 session 를 생성 관리한다. 2. GridServer : Grid 방식일 경우 각각의 Grid 를 관리한다. GridServer 는 각각 3 차원 가상공간을 2 차원의 Grid Map 에 Mapping 하는 형태로 관리 한다. 3. Texture, Sound 등의 리소스를 관리하며, WFRM(Write Few Read Many) database 를 기초로 하고 있다. 4. InventoryServer : 가상공간 내 Agent Avatar 가 생성한 Object 들을 관리하는 기능. 5. MessageingServer : User 간의 Interaction 과 채팅등 Message 교환을 관리하는 기능. 위와 같은 서버들을 통하여 전체 서버가 구성되며, 구성된 하나의 서버 (하나의 가상 현실) 을 OpenSim 에서는 Region 이라고 하며, Region 는 Grid 방식의 가상공간을 구성할때 하나의 가상공간 (Server) 라 고 할 수 있으며, Grid 방식은 아래에서 다시 설명한다. 그림 1 는 위에서 언급한 UGAIM Class 간의 Diagram 과 이들을 통한 Login Sequece 를 보여준다. (a)ugaim 간 Class Diagram (b)login Sequence 그림 1. UGAIM Class 간 관계도 및 Login 과정.
2.1 3 Development Mode OpenSim 은 두가지의 Mode 로 개발 가능하다. Local 의 개념으로 Stand-alone Mode 와 Web 을 통하 여 다른 Region 과 연결하는 Grid Mode 이다. 다시 말해서 Stand-alone Mode 는 쉽고 간단하게 독 립적인 가상공간을 개발할 수 있는 Mode 를 말하며, 광범위한 스케일의 가상공간이 아닌 소규모 스 케일의 가상공간 개발에 사용한다. 일반적으로 간단한 Simulation 혹은 자신만의 가상공간을 개발하 는데 이용되며, Stand-alone Mode 는 소수의 사용자만을 수용할 수 있다. Grid Mode 는 범용적인 가 상공간을 만들기 위한 방식을 말한다. 기본적으로 Stand-alone 와 같은 방식으로 OpenSim Server 를 구성하게 되지만, 이를 독립적으로 운영하는 것이 아니라 범용적으로 사용하는 것을 말한다. 즉, Grid 란 개념은 하나의 가상공간을 제작하여 이를 다른 사용자들도 접근 가능한 Public 공간으로 구성하는 것을 말한다. Grid Mode 의 개발을 위해서는 일반적으로 OSGrid(http://osgrid.org/) 룰 사용한다. Grid Mode 로 개발된 OpenSim Server 를 OSGrid 를 통하여 등록 Public Grid(가상공간) 로 만들어 누구나 접속 가능하게 하며, 이러한 Grid 들을 하나의 형태로 만들어 광범위한 가상공간을 제작하는 방법이다. SL Server 또한 이러한 방식을 사용하며 OSGrid 에 대해서는 다음 섹션에서 설명한다. 2.2 Viewer OpenSim 은 3 차원 가상공간의 Server 만을 위한 Platform 으로써 Client 는 다양한 Viewer 를 통하여 접근 가능하며, 아래와 같은 Viewer 들이 있으며, 그림 2 는 각 Viewer 의 장면들이다. 1. SecondLife Viewer : 현재 대표적인 상용 3 차원 가상현실 시스템인 SecondLife 의 Client 를 말 한다. OpenSim 에서는 SL Client 의 실행파일에 OSGrid 에 접속하는 옵션 값을 주어 SL Server 가 아닌 OpenSim 의 Server 에 접속, Login 화면에 Public Grid 의 목록과 최신 OSGrid News 등을 보여준다. 그림 2 (a) 는 SecondLife Viewer 를 보여준다. 2. Hippo OpenSim Viewer : OpenSim 전용 Viewer 로써 SL Viewer 를 수정, 보완하여 만든 전용 Viewer 이다. SL Viewer 에서의 제한적인 부분 (건물의 크기, 접속자 수) 을 수정, 보완하였으며 SL Viewer 에서는 제공하지 않는 Stand-alone Mode Server(Local Server) 에 접속하는 기능과 그 외 Grid Manager 등 다양한 기능들이 추가되어 있다. 그림 2 (b) 는 Hippo OpenSim Viewer 를 보여준다. OpemSim 에서는 가상현실 개발을 위한 다양한 API 를 제공하는데, 개발자는 OpenSim Server 의 API 와 SL Viewer 에서 제공하는 Client API 두가지를 사용하여 개발 할 수 있다. 각각의 기능은 아 래와 같다. 1. OpenSim 은 Server 개발을 위한 다양한 API 를 제공한다. API 는 크게 ApplicationPlugins, Data, Framework, Grid, Region, ScriptEngine 등으로 분류 되어있으며, 다시 세부적으로 나뉜다. 위 의 각 API 는 Plug-in 개발, SQL 등의 Data 관리, Framework 개발, Grid 시스템 개발 및 관리, Avatar 의 행동 (이동, 제스쳐, 주시) 및 전반적인 Scene 구성, Script 언어를 개발 등을 담당한다. 이 외에도 Server 를 개발하기 위한 다양한 API 를 제공한다.(http://docs.opensimulator.org/index.html)
4 (a)secondlife Viewer (b)hippo Viewer 그림 2. OpenSim 과 연동되는 Client Viewer. 2. OpenSim 을 이용한 Server 개발 이외에도 간단한 가상공간은 제작은 Server 를 수정하지 않고 가능하다. 이는 OpenSim 의 Default 공간을 기반으로 하여 Client(Viewer) 의 수정을 통하여 가 능하며, 이를 위해 SL 에서는 Client 를 위한 API 를 제공한다. 이 API 주로 Object 를 로드하는 등의 Scene 의 구성과 Avatar 의 행동 등에 대한 것으로써, SecondLife 개발자 홈페이지에서 참 조 가능하다.(http://lib.openmetaverse.org/wiki/Main Page) 이 밖에도 효율적인 가상현실 개발을 위한 물리엔진 기능을 지원하고 있으며, 특히 가상현실에서 직접 제작한 3 차원 Object 를 저장하고, 다음에 접속시 해당 Object 를 유지, 로딩시키기 위하여 DBMS(MySql,PostgreSQL) 과의 연동을 매우 잘 지원한다. 3 OpenSimulator 관련 Utility 및 사용법 본 섹션에서는 OpenSim 을 사용하기 위한 관련된 Utility 및 그 사용법에 대하여 알아본다. Op- nesim 은 많은 연구 단체에서 개발 되고 있기 때문에 OpenSim 자체에서 뿐만 아니라 많은 연구 단 체에서 OpenSim 관련 프로그램들을 개발한다. 그 중 본 섹션에서는 기본적인 OpenSim 개발을 위한 환경 설정 및 Grid Mode 를 개발하기 위한 OSGrid 에 대하여 설명하고, OpenSim 가상현실을 꾸미기 위하여 모델링 된 모델을 가상현실에 쉽게 추가할수 있는 Prim Composer 에 대하여 알아본다. 기본적으로 OpenSim 은 Stand-alone Mode 로 개발 된다. 이는 위에서 설명한바와 같이 Local 에 서 실행 되는 모드라고 생각하면 된다. OpenSim Server 를 개발하기 위해서는 먼저 가장 최신 버젼 의 OpenSim Source Code 를 다운로드 받는다. 다음으로 OpenSim 은 C# 으로 개발 되었기 때문에 C# 을 editing 할 수 있는 IDE 가 필요하다. OpenSim 은 Window 에서 Visual Studio 2005 와 2008 버전을 지원하고 있으며, 먼저 앞의 두 프로그램 중 하나가 깔려 있어야 한다. 다음으로 OpenSim 은 C# 프로그램을 편리하게 해 주는 Microsoft Visual C# 2008 Express Edition 을 추천한다. 앞의 프로그램은 MS 홈페이지에서 무료로 다운로드 받을 수 있으면, 앞에서 말한 Visual Studio 가 먼저 설치되어 있어야 한다. 마지막으로 최신 버전으로 다운 받은 OpenSim Source Code 압축 파일을 풀어보면 내부에 많은 파일이 존재하는데 그중에서 가장 먼저 runprebuild.bat (VS2005 사용자) 또
5 는 runprebuild2008.bat (VS2008 사용자) 를 더블클릭하여 실행한다. 앞의 파일를 실행하면 Visual Studio 버전에 맞는 Build Source 로 전체 소스가 Converting 되고, 새롭게 Compile.bat 파일이 생 성되는데 이것을 마지막으로 실행하면, Server 를 개발하기 위한 모든 작업이 끝나게 된다. 폴더 내 OpenSim.sln (C# Solution File) 를 위에서 설치만 C# IDE 에 넣으면 전체 Project 가 생성되고, Debug Mode 로 실행하면 Server 가 동작한다. 이때 주의 해야 하는 사항은 OpenSim 은 최초 bin 폴더 내의 OpenSim.inp(초기 설정값) 파일를 읽어 실행하는데 가정 처음 실행 할때는 이 파일이 존재하지 않고 OpenSim.inp.example 파일이 존재한다. 이를 example 만 지워서 OpenSim.inp 파일로 바꾸면 기본적인 설정값으로 서버가 동작하게 된다. 다음은 부가적인 OpenSim 관련 Tool 에 대해서 알아본다. 3.1 OSGrid OsGrid 는 OpenSim 을 이용하여 Grid 형태로 개발한 Server 를 웹상에 등록하여, 하나의 거대한 가 상공간을 만들 수 있도록 지원해주는 통합 웹서버라고 할 수 있다. OSGrid 는 무료로 운영되고 있으 며, 간단한 가입 절차를 통하여 자신이 개발한 OpenSim Server 를 등록할 수 있으며, 현재 많은 량의 Grid 들이 등록 되어 있으고, Viewer 를 통하여 다양한 OpenSim Server(가상공간) 에 접근 할 수 있다. OSGrid 에서는 이러한 기본적인 Grid 방식과 모든 Grid 를 HyperLink 를 통하여 연결한 HyperGrid 방식을 제공한다. 그림 3 는 HyerGrid 의 개념을 잘 보여준다. 그림 3. HyperGrid 의 기본 구조. 위와 같이 Map 과 같은 형태로 나열 될 수도 있고 다양한 형태 예를 들면 하나의 Grid 의 어느 Region 내에 다른 Grid 를 삽입 할 수도 있으며, 그 외 다양한 형태로 Grid 를 연결할 수 있으며, Grid Mode 로 개발된 Server 뿐만 아니라 Stand-alone Mode 에서 개발된 Server 또한 Hypergrid 를 사용 하면, Grid Mode 의 Server 에 연결, 이동 할 수 있다. 그림 4 는 HyerGrid 의 사용 예를 보여준다. 위 그림은 HyperGrid 를 사용 방법에 대한 예제이다. 4 (a) 는 Stand-alone(Local) 영역에서 다른 Grid 를 HyperLink 를 통하여 다운로드하여 자신의 Local 영역에서 실행하는 방식. 4 (b) 는 Standalone 와 Public Grid 를 서로 연결하여 하나의 Community Region 을 형성하는 방식. 4 (c)grid Mode 에서 외부에서 접근하지 못하는 영역을 설정하는 방식. 4 (d) 단순 Grid 형식은 멀리 떨어져 있는 공간 을 가기 위해서는 여러 Region 을 거쳐야하지만, Hyperlink 를 이용하여 바로 이동하는 방식 (Teleport) 이다.
6 (a)type 1 (b)type 2 (c)type 3 (d)type 4 그림 4. HyperGrid 를 이용한 다양한 Type 의 개발 Grid 방식. 3.2 Prim Composer 와 MaxPort Prim Composer 는 3DS Max 에서 실행 되는 PlugIn 프로그램이다. Prim Composer 를 사용하는 이유는 OpenSim 에서는 외부에서 제작된 모델을 XML 형태로 Import 할 수 있는데, Prim Composer 는 3DS Max 에서 제작된 모델을 OpenSim 에 맞는 XML 형태로 Export 시켜 준다. Prim Composer 는 http://liferain.com/ 에서 다운로드 받을 수 있으며, 설치 방법은 압축을 푼 뒤 생성되는 폴더 내 에 있는 PrimComposer 폴더를 3DS Max 9 의 stdscripts 폴더 내에 붙여 넣으면 설치가 완료 된다. 설치가 끝나고 3DS Max 를 실행 하면 Menu 에 Prim Composer 가 나타난것을 확인할 수 있으며, 우 측 디자인 모드에서도 Prim Composer 가 있으며, 3DS Max 에서 모델링 후 PrimComposer 메뉴의 Export 로 XML 형태의 모델로 Export 할 수 있다. 다음은 위와 같은 방법으로 Export 한 XML 파일을 Prim Composer 에서 제공하는 MaxPort 를 사 용하여 실제 OpenSim Server 에 Import 하는 방법은 매우 간단하다. MaxPort 는 OpemSim Server 에 모델을 Import 하는 프로그램으로 무료로 제공되며, PrimComposer 를 다운로드 하면 내부에 존 재한다. 실행은 cmd 를 통하여 실행한다. 명령어는 maxport -flp test user test -u http://127.0.0.1 -i example.xml 와 같다. 명령어에서 옵션인 -flp 에서 f 는 사용자의 First Name l 은 Last Name p 는 Password 를 말하며, 다음 옵션인 -u 는 OpenSim Server 의 url 마지막 i 는 XML 파일의 파일경로를
7 적어준다. 이렇게 하면 해당 XML 을 OpenSim Server 에 Import 시키고 Viewer 를 통하여 접속하면 실제 해당 모델이 가상공간에 loading 된 모습을 볼 수 있으면 그림 5 와 같다. 여기서 유의해야 하는 사항은 Maxport 는 한글을 지원하지 않기 때문에 Modeling 할때 Model 의 Label 을 한글로 주게 되면, PrimComposer 로 생성된 Xml 파일에서 한글명이 기입되고 Maxport 에서 이를 Parsing 할때 Error 를 발생시킨다. 그림 5. MaxPort 를 이용하여 기본 가상공간에 Object 를 Load 한 장면. 4 Wonderland Platform 과 비교 분석 본 섹션에서는 현재 연구에 사용하고 있는 Wonderland Platform 과 OpenSim 과의 성능 비교 분 석에 대하여 알아본다. Wonderland 는 전 Technical Report 에서 그 기능 및 사용방법을 볼 수 있다. Wonderland 는 간단하게 설명하면 Java3D 을 기반으로 한 SUN 사의 자체 3 차원 가상현실 platform 개발 Project 이며, 상용 서비스 보다는 연구 목적의 Project 이다. OpenSim 과 차이점은 OpenSim 은 실제 상용 서비스에서 성공한 SecondLife 의 API 를 사용한 Platform 이기 때문에 그 기능 및 안전성 이 뛰어나다고 할 수 있다. 또한 Java3D 로 개발된 Wonderland 는 3 차원 Object 의 랜더링이 원활히 처리 되지 않기 때문에 실시간 움직임에 대해서는 많은 끊김이 생기게 된다. 가장 큰 차이점이라고 할 수 있는 것은 프로그램 전반적인 구조이다. Wonderland 또한 개발자를 위한 다양한 JAVA API 와 편리한 Source Code 관리를 위한 Package 단위의 Class 로 관리 되어지고 있지만, Server 보다는 Client 를 수정해야한다는 문제점이 있다. 이는 Wonderland Platform Server 는 기본적으로 필요한 데이터 전송, 유저 관리 등의 공통적인 기능만을 담당하고, 실질적인 모델링 추가 및 3 차원 Object 추가,랜더링은 Client 에서 담당한다. OpenSim 의 경우에는 따로 Client 를 수정하지 않고 Server 에서 가상공간을 꾸며 놓으면 유저는 단지 Viewer 를 통하여 가상 공간의 정보를 받아서, 화면에 출력하는 반면, Wonderland 는 수정된 Client 자체를 배포해야 한다는 문제가 있다. 이는 Client Version 꽌리 문제 뿐만 아니라, Client 에 너무 많은 부담을 가지게 된다. 이렇듯 많은 부분에서 Wonderland 와 OpenSim 은 차이를 보이고 있으면, 간략하게 정리 한다면 아래 표 1 과 같다. 위와 같은 비교 분석 결과 각각의 platform 마다 장점은 존재하지만, OpenSim 이 지금까지는 보기 좋은 가상현실을 제작하기 위해서는 더 나은점이 많이 존재한다고 판단된다. 그러나 OpenSim 의 경우
8 OpenSim Platform 기반 Wonderland 다양한 프로그래밍 언어 지원 Java,Java3D. (C#,LSL..). Graphic Texture 를 이용하여 현실감 있 이미지처리의 어려움으로 현실 는 그래픽 제공. API OpenSim Server Api 와 SL 기본적인 Java SDK Api 와 Client(viewer) Api 지원. Modeling tool 감 부족. Java3D Api 사용. 3ds Max,Blender 지원 (별도 Blender 지원. PrimComposer 필요). Motion 상용 SecondLife Avatar 의 다 제한적인 Motion 제공. 양한 Motion 제공. Data Management DMBS 와 연동 데이터 관리. 개발 Scale 없음. Grid Mode 를 이용한 광범위 하나의 가상공간 제작. 한 가상공간 제작 가능. 확장성 Plug-in Module 를 사용하여 Plug-in Moudlue 를 사용하여 확장성 용이. 확장성 용이. 표 1. Wonderland platform 와 opensim platform 비교 분석. 정교한 프로그래밍을 위해서는 C# 뿐만 아니라 다른 스크립트 언어 또한 사용해야 한다는 문제점이 존재한다. 5 결론 본 보고서에서는 쉽게 가상현실을 제작할 수 있는 Server Platform 인 OpenSim 에 대하여 알아 보았다. OpenSim 은 상용 서비스에서 성공을 거둔 SecondLife 의 Server API 를 사용하여 만든 Platform 으로써, 그 기능 및 안전성이 매우 높다고 할 수 있다. 또한 C# 으로 개발 되어 랜더링 면에 서 자연스러운 모션을 볼 수 있으며, 개발을 위한 다양한 관련 Tool 이 나와 있는 상태이다. 그리고 http://liferain.com 홈페이지를 통하여 다양한 Video Tutorial 를 통하여 설치 및 개발 방법을 쉽게 설명해 놓았다. 앞으로 진행 될 연구는 현재까지 개발 된 시스템에서, Sensor Data 를 이용한 Simulation 이 추가 될것이다. 또한 이러한 Simulation 에서 있어서 Avatar 의 이동 Direction 문제 혹은 이동 하지 않을때 Avatar 가 주시 하는 행동등이 문제는 해결해야 할 이슈로 남아 있다. Wonderland 또한 많은 연구에 서 사용되고 있는 Platform 이지만, 모션 (제스쳐) 이나 애니메이션에서는 OpenSim 이 월등한 성능을 보이기 때문에 지금까지 개발한 커뮤니케이션 시스템을 OpenSim 으로 Import 하고, 또한 앞으로 진행 될 연구는 OpenSim 에서 진행하는 것이 더욱 효과적이라고 판단된다. 그림 6 는 앞으로 연구 진행 될 OpenSim 을 이용한 Sensor Simulator 의 구조를 보여준다.
REP - OPENSIM - 001, APRIL 2009 9 그림 6. OpenSim(SL) 를이용한 Sensor Simulator 시스템구조. 참고문헌 1. OpenSimulator, http://opensimulator.org/wiki/main Page, 2009. 2. liferain, http://liferain.com/, 2009. 3. OSGrid, http://osgrid.org/, 2009. 4. lg3d wonderland, https://lg3d-wonderland.dev.java.net/, 2009. 5. Trevor J. Dodds and Roy A. Ruddlea, Using mobile group dynamics and virtual time to improve teamwork in large-scale collaborative virtual environments, Computers and Graphics, pp. 130 138, 2009. 6. Sebastian Ullrich Brandherm and Helmut Prendinger, Simulation of sensor-based tracking in second life, AAMAS 08: Proceedings of the 7th international joint conference on Autonomous agents and multiagent systems, pp. 1689 1690, 2008.