WWW와 가상현실기술

김래현
서울시 성부구 하월곡동 39 -1
한국과학기술연구원 기전연구부 CAD/CAM실
E-mail : dochi@chopin.kist.re.kr
URL : http://chopin.kist.re.kr/dochi/dochi.html

Abstract :

최근에 인터넷상의 업계표준인 가상현실언어(VRML)의 등장으로 새로운 전기를 맞고 있다. 본강의에서는 VRML의 배경과 신택스, 각종 브라우저와 저작도구, 그리고 응용분야를 알아보고 이를 이용한 응용 개발시 필요한 내용을 알아보고자 한다. 이를 통해 VRML의 필요성의 인식과 개발자들에게 실제적인 도움을 주도록 한다.

Keywords :

WWW, VRML, Browser, Script

1. 서론

1.1 개요

세계는 변화와 진화를 거듭하고 있다. 인터넷도 마찬가지이다. 처음의 문자위주의 정보에서 WWW의 등장으로 다양한 멀티미디어 정보와 쉬운 접근방식을 제공하고 있다. 이런 의미에서 WWW은 인터넷의 발전에 새로운 전기를 마련했음을 부인할 수 없다. WWW상에서 모든사람들이 쉽게 이용할 수 있도록 정보의 표현과 접근방식의 표준을 만들었다. HyperText Markup Language(HTML)이 그것이다. 이름에서 알 수 있듯이 정보들간에 하이퍼링크(Hyperlink)로 연결되어 정보검색을 쉽게 하였다.

그러나 다양한 기술의 발전에도 불구하고 정보의 구성과 그 접근의 모델화는 여전히 2차원을 기반으로 한다. 따라서 실세계의 정보를 얻기 위해서는 우리의 상상력과 지각력을 요구하고 있다. 하지만 사이버 스페이스의 경우, 3차원 환경으로 복잡한 오브젝트의 레이아웃을 정의하기 때문에, 완전히 HTML의 기능을 넘어서는 것이다.

이런 요구에 부응하여 94년 인터넷상에서 사용할 수 있는 3차원 데이타의 표준인 Vitrual Reality Modeling Language(VRML)이 등장했다. VRML은 처음부터 많은 사람의 참여와 관심으로 현재는 그래픽관련 회사와 단체로부터 표준으로 인정받고 있고 VRML파일과 호환되는 많은 VRML브라우저와 이를 이용한 다양한 사이트들이 생겨났다.

1.2. VRML의 역사와 배경

VRML은 Intervista company의 멤버인 Mark Pesce(현재 이 프로젝트의 대변인)와 Toni Parisi에 의해 3D와 Web과의 인터페이스의 연구가 시작되어 94년 제네바에서 열린 제 1차 World Wide Web conference에서 처음으로 거론되었다. 이를 계기로 몇몇 연구소와 Silicon Graphics Inc.(SGI)등의 상업적 회사들에 의해 빠른 지지를 받았다. 전세계적인 관심과 지적자원을 끌어오기 위해 메일-리스트(mail-list)가 만들어 졌고 많은 참여자들이 새로운 아이디어와 생각들을 이곳에 제시하였다. 이렇게 해서 94년 11월에 VRML의 처음 버전(VRML 1.0)이 발표되었는데 이것은 SGI의 오픈인벤터을 토대로 구성되었다. 그후 SGI의 폴 슈트라우스와 개빈 벨은 오픈인벤터의 소스코드를 기초하여 C++로 작성한 일종의 고속 VRML해석기인 QvLib을 발표하여 소스코드를 모든 웹 개발자들이 사용할 수 있도록 공개하였다.

이후 VRML는 초기 상업적 시장을 선점하려는 경쟁과 맞물려 많은 발전과 관심을 불러일으켰다. 현재 Web의 표준 브라우저로 자리잡은 네트스케이프(Netscape)처럼 성공하기 원하는 기업들은 각기 나름대로의 VRML 브라우저를 개발해 발표했다.

최초의 상업적 VRML 브라우저인 WepSpace를 실리콘 그래픽(SGI)와 Template Graphics Software(TGS)사가 공동으로 발표한 이후 현재는 수많은 VRML1.0 브라우저와 저작도구들이 발표되었다. 그후, 96년 초에 제안된 Moving Worlds가 3월에 VRML V2.0으로 채택되었고 최근(96년 8월)에 VRML2.0이 탄생하였다. VRML 2.0이 나오기 까지의 기술적인 배경을 그림 1에서 계층적으로 보여준다.


그림 1. VRML의 기술적인 배경을 보여주는 계층도

VRML2.0에서는 참여자의 인터렉션과 애니메이션을 지원하고 스크립트을 통한 다양한 효과를 낼 수 있어 앞으로 많은 응용이 기대된다.

2. 성능및 마임(MINE) 타입

2.1 네트워크성능

인터넷상의 서버에서 VRML을 자신의 컴퓨터로 가져와서 사이버 스페이스를 항해하기 위해서는 네트워크성능과 렌더링 성능을 고려해야 한다. VRML같은 3차원 파일은 기존의 압축방법보다 적은 파일 크기보다 많은 정보를 가지고 있다. 이것이 바로 3차원 정보의 매력일 것이다. 대부분 사람들은 3차원 정보를 가진 VRML파일의 크기가 아주 커서 전송받는 데 많은 시간을 요구할것이라 생각하지만 실제는 정보의 양에 비해 크기는 아주 적다고 할 것이다. 또한 아스키포맷이므로 이를 압축할 시에는 파일 크기가 더욱 적어 질것이다. 물론 3차원 공간이 크고 텍스쳐를 많이 사용하면 네트워크상에서 파일을 다운로드받는 시간이 커질것이다.

그림 2는 기존의 멀티미디어 정보와 파일 크기를 비교한 도표이다.


그림 2. VRML과 멀티미디어 정보의 파일 크기 비교도

 

간단한 가상세계를 모델링한 VRML파일일 경우 HTML문서의 평균 이미지파일의 크기와 비슷하고 이를 압축하면 5분의 1로 줄일 수 있다. 그럼에도 불구하고 VRML파일은 이미지와는 비교할 수없는 양의 정보를 제공하고 있다.

2.2 렌더링 성능

VRML파일을 볼때는 플랫폼에 따라 렌더링 성능이 천차만별일 것이다. PC의 예를 들면, 비디오카드, CPU성능, 메인 메모리 크기, 그리고 3D 가속기의 유무등에 따라 다양한 성능을 낼 수 있을 것이다. 그림 3은 평균적인 시스템들의 렌더링 성능을 비교한 결과를 보여준다. 성능 평가의 기준은 한 장면(Scene)에서 초당 15프레임을 처리할 수 있는 최대 폴리곤 수를 측정한 것이다. 이때 픽셀수는 폴리곤당 10*10개를 기준으로 하였다.


그림 3. 시스템 별 렌더링 성능

2.3 VRML의 마임타입(MINE Type) 설정

마임 타입은 파일의 성격과 확장자를 기술한 인터넷상의 파일 교환을 위한 메카니즘이다. 먼저 VRML브라우저의 측면에서 VRML파일을 처리할 수 있도록 정보를 제공하는 방법을 알아보자. 네트스케이프에서는 HelperApp에서, 유닉스 계열에서는 .mailcap 또는 .mimetype파일에서 이를 규정한다. VRML 2.0의 마임타입은 model/vrml로 확정되었고 확장자는 .wrl이다.

3절. VRML의 신택스

VRML 신택스는 지면사정상 자세한 내용설명을 피하고 신택스의 개념설명을 위주로 기술하겠다. VRML 2.0의 기본적인 내용은 VRML 1.0을 기반으로 한다.

3.1 VRML 1.0

VRML 1.0은 SGI의 객체지향적 3D그래픽 라이브러리인 오픈인벤터(OpenInventor)의 파일 포맷을 기반으로 구성되었다. VRML의 선배격인 오픈인벤터는 강력한 그래픽 언어로 개발한 것이다. SGI가 오픈 인벤터를 개발한 원래 목적은 그래픽 프로그램에 대해 잘 모르는 사람도 쉽게 현실적인 3D환경을 제작할 수 있게 하는 것이지만, 그래픽 해커를 위한 기능도 제공했다. 오픈 인벤터 개발자들은 기존의 그래픽 언어에서 가장 우수한 부분만 수집하고 종합하여, 오픈 인벤터를 배우고 이해하기 쉬으면서도 표현력과 융통성이 뛰어난 언어로 만들었다.

하지만 오픈 인벤터가 곧 VRML이라는 뜻은 아니다. 오픈 인벤터에 있는 기존의 기능중 더욱 융통성 있게 만들 필요가 있는 부분을 개선하고, 월드와이드웹에서 호환하여 사용할 수 있도록 몇가지 특성을 추가하여 만든 것이 VRML이다.

3.1.1 노드와 필드

VRML 1.0의 내용은 3차원 정보를 나타내는 Object 정의와 Object간의 관계와 위치를 지정하는 Scene 정의, 그리고 인터넷을 항해하기 위한 노드등를 정의한다. 표 2은 VRML 1.0의 노드를 4가지로 분류해 놓았다.

VRML은 표 2에서 기술한 노드(Nodes)라고 하는 일련의 오브젝트로 이루어 진다. 이런 노드를 계층적인 구조로 정렬하고 노드의 전체 목록을 장면 그래프(Scene Graph)라고 한다. 따라서 VRML문서는 모두 일종의 장면 그래프인 셈이다. 표 2에서 처럼 노드마다 기본적인 관련 특성이 있다. 예를 들면, 장면그래프에서 작동하는 방식을 결정하는 노드유형이 있다. 노드 유형은 자식노드를 가질 수 있는 그룹노드(Group nodes), 3차원 오브젝트의 기하학정보를 나타내는 모양노드(Shape nodes), 오브젝트의 재질이나 라이트등의 특성노드(Propertiey nodes), 그리고 인라인 노드로 구분할 수 있다. 노드에는 필드(Field)가 하나 있다. 노드자체의 특별한 정보를 저장하는 장소가 바로 필드(Field)이다. 예를 들어, Sphere 노드에는 radius 필드가 있는데, 이것은 Sphere의 반지름값을 제공하는 필드이다.

분 류
노 드 (총 36개)
Group node
  • Group, Separator
  • Switch, LOD, TransformSeparator
  • WWWAnchor
Shape node
  • AsciiText
  • Cone, Cube, Cylinder, Shpere
  • IndexFaceSet, IndexLineSet, PointSet
Property node
  • Material, Texture2, ShapeHints, Normal, NormalBinding, MaterialBinding, Texture2Transform
  • MatrixTransform, Rotation, Scale, Translation
  • OrthographicCamera, Perspective Camera
  • DirectionLight, PointLight, SpotLight
etc node
  • WWWInline

표 2. VRML 1.0의 노드들

3.1.2 간단한 VRML파일분석

이제 간단한 VRML 1.0 파일을 살펴보자. 이 파일은 평평한 육면체위에 정육면체와 구로 구성된 3차원 공간을 나타낸다.

#VRML V1.0 ascii

Separator {

PerspectiveCamera { position 0 0 10 }

Separator { # Ground plane

Material { diffuseColor .8 .1 .2 transparency .5 }

Translation { translation 0 -1 0 }

Cube {

width 7

height 1

depth 7

}

}

WWWAnchor {

# name "http://chopin.kist.re.kr/dochi/vrml/jackInTheBox.html"

Material { diffuseColor .1 .8 .2 }

Translation { translation 1.5 .5 1.5 }

Cube { }

}

WWWAnchor {

name "http://chopin.kist.re.kr/dochi/vrml/sphereMan.vrml"

Material { diffuseColor .1 .2 .8 }

Translation { translation -1.5 .5 -1.5 }

Sphere { }

}

}

위의 예제에서 첫라인의 "#VRML V1.0 ascii" 은 이 파일이 VRML임을 나타내고 버전과 아스키파일임을 나타내는 파일 해더로써 반드시 삽입되어야 한다. Separator{} 는 정보의 계층구조의 범위를 규정하고 하나이상의 노드를 자식으로 갖는 그룹 노드이고 PerspectiveCamera{}는 초기 눈 위치에 대한 정보를 가지고 있다.

3.1.3 WWWAnchor노드와 WWWInline노드

기존의 3차원 정보와 더불어 WWW상의 항해를 위해 하이퍼링크되어지는 정보를 나타내는 강력한 기능의 두개의 노드가 추가되었다. 먼저 Hot Spots이라 불리우는 WWWAnchor 노드는 이름처럼 앵커(anchor)의 역활을 하고 이 노드안에 "name"필드에 링크될 Web상의 주소인 URL[10]을 정의하는 데 URL의 내용은 HTML, 오디오, 비디오, 또는 다른 VRML세계로 연결할 수 있다. 네트스케이프나 모자이크의 인터넷항해 방식인 Click and Jump방식으로 VRML 브라우저을 이용하여 3차원 공간상에서 이 WWWAnchor노드안의 자식이 되는 물체를 클릭하면 링크되어 있는 URL의 다른 사이트의 자료를 가져와서 보여준다. 위의 예에서는 정육면체와 구을 자식으로 갖는 두개의 앵커노드로 구성되었다. 정육면체의 물체을 클릭하게 되면 "http://chopin.kist.re.kr/dochi/vrml/jackInTheBox.html " 에 있는 HTML문서를 연동하여 운영되는 모자이크나 네트스케이프같은 HTML브라우저에 전달하여 읽어오게 한다. 만약 구을 클릭하게 되면 URL이 "http://chopin.kist.re.kr/dochi/vrml/sphereMan.vrml" 인 VRML파일을 VRML브라우저에서 보여준다. 그림 4에서는 앞의 VRML파일의 내용을 저자가 개발한 VRML브라우저에서 보여준다.

다음으로 인라인 물체들을 링크시킨 WWWInline노드가 있다. 이 노드는 VRML파일안에서 다른 VRML을 허락하는 것으로써 필요할때만 로드되어 렌더링되므로 성능향상을 가져올 수 있고 재사용과 파일크기를 줄일수 있는 장점이 있다. 로드되는 때를 빠르게 결정할 수 있도록 해당 물체의 바운딩박스(bounding box)의 크기와 위치가 추가될 수도 있다. WWWInline의 예가 아래에 보여준다.

WWWInline {

name furniture_1.wrl

bboxSize 1 2.5 .25

bboxCenter 0 1.25 0

}

사용자가 VRML브라우저를 이용하여 3차원 공간상을 항해(navigation)중에 WWWInline노드안의 가구가 있는 곳으로 이동하면 해당되는 URL의 내용이 로드되어 진다. 이를 통해 네트워크과 컴퓨터의 렌더링 성능을 향상시킬수 있다.


그림 4. VRML 브라우저에서 파일은 읽은 결과

3.1.4 카메라 위치

다음은 3차원 공간의 주요한 공간의 카메라의 위치를 미리 정의해 놓고 사용자가 이를 이용하여 해당 위치로 항해할 수 있도록 할 수 있다. 카메라의 시점을 정의하는 데 사용하는 VRML노드는 OrthographicCamera와 PerspectiveCamera가 있다. 두 카메라의 차이는 원근법과 카메라가 이를 표현하는 방식의 차이이다. PerspectiveCamera는 원근법의 개념을 사용한 것으로 배경 먼곳에 있는 물체는 작아지고 중앙으로 모여들어 무한히 먼거리에 있는 소멸점에서 합쳐진다. OrthographicCamera는 이 원근법이나 소멸점이 존재하지 않는다.

Switch {

DEF EntryView PerspectiveCamera {

position ...

orientation .. # default -Z 축

}

DEF TreasureView PerspectiveCamera {

position ...

}

}

위와 같은 정보를 브라우저가 저장하여 메뉴등으로 사용자가 해당 카메라 위치로 이동할 수 있다. 이와 같은 위치이동은 3차원 공간의 항해에 필수적인 요소이다.

3.1.5 VRML파일의 단위및 좌표계

VRML에서 사용하는 거리의 단위는 미터(Meter)로 각도는 라디안(Radian)으로 표시하고 좌표계는 그림 5에서 처럼 정의한다.


그림 5. VRML의 좌표계

3.1.6 참여자의 입력

VRML 1.0에서 브라우저을 통한 참여자의 인터렉션은 그림 6에서 처럼 미리 정의된 카메라의 위치을 변경시키거나 새로운 URL로 링크된 앵커를 클릭함으로써 다른 세계로 이동할 수 있다.


그림 6. VRML 1.0 브라우저에서 사용자 입력

3.2 VRML 2.0

진정한 사이버 스페이스는 대화형이고 여러 사람이 동시에 참여할 수 있는 환경을 손꼽아 기다려 왔고 현실 세계를 모델링한 것이 VRML이라면 반드시 이런 환경이 요구된다. VRML 2.0은 가상현실기술과 접목되어 다양한 사용자 인터렉션, 에니메이션, 스크립트등을 지원한다. VRML 2.0은 보다 다양한 요구를 수용하기 위해 1.0과는 다른 새로운 신택스를 가지고 있고 많은 기능이 추가되었다. VRML2.0의 확장되고 추가된 특징은 다음과 같다.

앞으로 이에 대해 자세하게 알아보자

3.2.1 확장된 정적 세계

VRML2.0에서는 정적인 세계에 산이나 구름등을 배경으로 사용할 수 있고 안개효과와 3D사운드로 더욱 현실감을 높였다. 또한 물리적 현상을 묘사하기 위해 충돌검사를 하여 오브젝트를 통과하지 않도록 하는 기능이 보강되었다. 텍스트를 지원하기 위해서 "Text"노드도 추가되어서 가상환경에서 2차원 텍스트를 사용한다.

3.2.2 애니메이션 기능

VRML 2.0에서 추가된 가장 강력한 기능은 애니메이션, 대화성, 그리고 다자 참여를 지원하는 것이다. 애니메이션은 브라우저에서 관리되는 시간에 따라서 동작하거나 사용자 입력에 의해서 구동될 수 있다. 그림 7에서 이런 메카니즘을 보여준다.


그림 7. VRML 2.0의 에니메이션 구동도

에니메이션을 위한 노드는 "Interpolators"가 있다. 이 노드는 선형 키 프레임 에니메이션(linear keyframed animation)을 할 수 있도록 키 프레임 시간을 나타내는 "key" 필드와 f(t)의 값인 "keyValue" 필드로 구성된다.

"Interpolator"노드는 모두 6종류가 있다. 칼라값의 변화를 에니메이션하는 "ColorInterpolator"노드, 1, 2, 3차원 값을 에니메이션하는 "ScalarInterpolator", "PositionInterpolator", "CoordinateInterpolator" 노드, 그리고 회전하는 값과 Normal 벡터값을 에니메이션하는 "OrientationInterpolator", "NormalInterpolator"노드등이 있다. 이중에서 3차원 위치를 키프레임 에니메이션하기 위한 "CoordinateInterpolator"노드를 예를 보여준다.

CoordinateInterpolator {

key [ 0.0, 0.5, 1.0 ]

keyValue [ 0 0 0, 10 10 30, # 2 keyValue(s) at key 0.0

10 20 10, 40 50 50, # 2 keyValue(s) at key 0.5

33 55 66, 44 55 65 ] # 2 keyValue(s) at key 1.0

}

3.2.3 대화성 기능


그림 8. VRML 2.0에서의 대화성

VRML 2.0에서 추가된 기능 중에서 대화성(사용자 인터렉션)이 1.0 보다 훨씬 강력해 졌다. 1.0에서는 단순히 앵커와 카메라 위치의 이동만을 제공했지만 2.0에서는 사용자가 인터렉션할 수 있는 오브젝트를 정의할 수 있고 이 오브젝트들은 사용자의 입력에 따라 자체적으로 수정될 수 있고 다른 오브젝트에 정보를 줄 수도 있다. 이를 그림 8에서 보여준다.

이런 대화성을 제공하는 노드는 "Sensor"가 있다. "Sendor"노드는 특정 위치로 가면 동작하는 "ProximitySensor", 시간에 의해 동작하는 "TimeSensor", 픽킹에 의해 동작하는 "TouchSensor", Manipulation을 위한 "CylinderSensor"노드와 "SphereSendor"노드, 그리고 화면에 보이는 순간에 동작하는 "VisibilitySensor"노드등이 있다.

Group {

children [

DEF Shape1 Shape { ... }

DEF SendorA TouchSensor { ... }

DEF AnchorA Anchor {

url " ... "

}

.......

위의 예는 마우스같은 Pointing device를 가지고 Shape1을 클릭했을 경우 SensorA에 의해 처리되도록 하는 예이다.

3.3.4 스크립트 처리

웹은 다양한 종류의 플랫폼을 사용함으로 동적인 문서를 작성하기 위해서는 플랫폼독립적인 스크립트가 필요하다. 선 마이크로사의 자바는 이에 가장 적합한 스크립트 언어라 할 수 있다. 그림 9 (a)은 VRML 브라우저가 스크립트를 처리하는 개념도를 보여준다. 웹상에서 자바 스크립트를 가져오면 제어권을 스크립트로 넘겨주고 스크립트는 해당되는 루틴에 의해 VRML 장면그래프(Scene Graph)을 직접 조작한다. 이후 모든 조작이 끝나면 제어권을 다시 브라우저에 넘겨주는 메카니즘을 갖는다.
(a)(b)

그림 9. 스크립트 언어의 처리 과정

그림 9 (b)에서는 스크립트 언어의 내부적인 처리을 보여준다. 스크립트는 이벤트에 해당되는 반응을 기술한 언어이고 장면(Scene)내의 스크립트간, 또는 오브젝트간 인터페이스를 제공해야 한다. 이런 과정을 통해서 동적인 3차원 공간을 경험할 수 있다.

VRML 2.0에서 스크립트 노드는 "Script"라는 이름으로 실제 스크립트의 위치나 직접 기술한 "url" 필드로 구성되었다. 그 예는 다음과 같다.

Script {

eventIn SFBool start

url [ # custom protocol JavaScript

"javascript: function start(value, timestamp) { ... }",

"http://bar.com/foo.js" # std protocol JavaScript

"http://bar.com/foo.class" # std protocol Java byte ]

}

3.2.5 다자 참여 지원

진정한 사이버 스페이스는 다수의 사람이 가상공간에 동시에 참여하여 서로를 인식하고 참여자간의 상호작용을 지원해야 한다. VRML 2.0은 같은 가상 공간에 다수의 사람이 공존하고 서로 대화할 수 있는 기능을 제공한다(그림 10). 현재 까지 나온 응용프로그램에서는 이러한 기능을 지원하기 위해 서버에서 모든 것을 관리하고 있으나 더욱 많은 참여자와 다양한 인터렉션을 위해서는 브라우저간의 새로운 통신프로토콜이 필요하고 애니메이션 시계(Animation clock)이 동기화를 유지해야 할것이다.


그림 10. 다자간 3차원 가상공간의 공유

3.2.6 간단한 예제

다음의 예제는 붉은색의 구와 파란색의 육면체를 그리는 예이다.

먼저 VRML 2.0임을 나타내는 "#VRML V2.0 utf8"이 있고 그룹노드의 기능과 오브젝트의 Transfomation을 위한 "Transform" 노드가 있다.

#VRML V2.0 utf8

Transform {

children {

NavigationInfo {headlight FALSE } # We'll add our own light

DirectionalLight { # First child

directional 0 0 -1 # Light illuminating the scene

}

Transform {

translation 3 0 1

children [

Shape {

geometry Sphere { radius 2.3 }

appearance Appearance {

material Material { diffuseColor 1 0 0 } #Red

}

}

]

}

Transform { # Third child - a blue box

translation -2.4 .2 1

rotation 0 1 1 .9

children [

Shape {

geometry Box { }

appearance Appearance {

material Material { diffuseColor 0 0 1 } # Blue

}

}

]

}

] # end of children for world

}

4. VRML 브라우저와 저작도구

사용자가 인터넷상에서 VRML세계를 경험하기 위해서는 VRML을 지원하는 브라우저가 필요하고 자신의 인터넷 페이지을 VRML을 이용하여 3차원 정보를 제공하고자 할 경우는 적절한 VRML 저작도구가 요구된다. 또한 기존의 3차원 파일을 VRML로 컨버전시킬 수 있는 유틸리티들을 이용하여 VRML 페이지를 구성할 수 도 있다. 앞으로 VRML 브라우저, 저작도구, 그리고 컨버전 유틸리티등에 대해 알아보자

4.1 VRML 브라우저

95년 VRML이 표준이 된 후에 VRML을 선도하는 SGI사의 최초의 브라우저인 WebSpace을 필두로 기존의 3차원 모델러 개발 회사와 인터넷 관련회사등에서 많은 VRML브라우저를 개발하여 발표하였다. 각 브라우저들은 자신만의 특징을 갖고 있고 사용방법도 다양하다. 표 3에서 현재까지 발표된 브라우저을 기술하였다.

버전브라우저플랫 폼 URL (http:// 생략)


1.0
AmberGL Window NTwww.divelabs.com/vrml.html
i3dSGI IRIX 5.2 sgvenus.cern.ch/i3d/
Live3dNetscape

Window 3.1

Window 95

Window NT

home.netscape.com/comprod/

products/navigator/live3d

PuebloWindow 95

Window NT

www.chaco.com/pueblo
VrealmWindow 95

Window NT

www.ids-net.com/ids/3dexp1.html
VRScoutWindow 3.1

Window 95

Window NT

www.chaco.com/products/

#vrscout

VrwebWindow 3.1

Window 95

Window NT

SGI, SUN, HP

hgiicm.tu-graz.ac.at/vrweb
WebFXWindow 3.1

Window 95

Window NT

www.paperinc.com/
WebOOGLSGI

Sun

www.geom.umn.edu/locate/

weboogl

WebSpaceWindow 3.1

Window 95

Window NT

IBM, SGI, SUN

www.sgi.com/Products/

WebFORCE/ WebSpace /

WebviewSGI/UNIX www.sdsc.edu/EnablingTech/

Visualization/Vrml/webview.html

WhurlwindPowerPC

Macintosh

www.info.apple.com/qd3d/

Viewer.HTML

WorldviewWindow 3.1

Window 95

Window NT

www.webmaster.com:80/vrml/


2.0
CosmoPlayer SGIvrml.sgi.com/cosmoplayer/
CyberPassageWindow 95

Window NT

www.sdsc.edu/vrml/

browsers.html#CyberPassage

Liquid RealityWin95, Sun, SGI www.sdsc.edu/vrml/

browsers.html#LiquidReality

RealVR TraverlerWin95/NT

Mac. Power PC

www.rlspace.com

표 3. VRML 브라우저

현재 VRML 브라우저중에서 Live3d(V 1.0)과 CosmoPlayer는 네트스케이프에 플러그인되어 사용할 수 있고 나머지는 외부 프로그램으로 연동되어 사용된다. 이밖에도 기존의 인터넷상의 응용프로그램에 VRML을 지원하는 회사가 많이 등장하였다. 예를 들면 Sony사의 CyberPassage, Wrolds사의 World Chat, 그리고 CyberGate등은 여러명이 동시에 가상공간을 공유하면서 다른 참여자들의 3차원 아바타를 통해 인식할 수 있고 원하는 상대와 채팅을 할 수도 있다. 앞으로는 VRML을 이용하여 더욱 다양한 응용프로그램이 나올 것으로 기대된다.

그림 11은 네트스케이프에서 플러그인(Plug-in)된 Live3d를 이용하여 VRML파이로 되어 있는 집을 둘러보고 있는 장면을 보여준다.


그림 11. 네트스케이프에서 플러그인된 Live3d를 통한 VRML파일 보기

4.2 VRML저작도구

실제 VRML 세계를 설계할 때 VRML이 어떻게 작동하는지를 쉽게 이해할 수 있을 것이다. VRML파일을 저작하기 위해서는 앞서 설명한 노드와 신택스에 대한 기본적인 개념에 대한 이해가 필요하고 HTML처럼 직접 문서를 편집할 수 없고 3차원 모델링기능과 가상공간에 다양한 기능을 부가할 수 있는 저작도구가 필수적이다.

VRML파일을 생성하고 편집할 수있는 저작도구는 브라우저만큼 다양하고 기능들에서도 차이가 많다. 기존의 3차원 모델러에서 VRML로 저장되는 단순한 저작기능에서 부터 직접 VRML 세계를 모델링하고 LOD(Level Of Detail), WWWInline, WWWAnchor, 카메라 위치, 그리고 폴리곤수를 줄이는 기능등을 지원하는 VRML저작도구까지 여러 종류이다.

다음 표 4에서는 이들 저작도구들에 대해 기술하였다.
버전저작도구플랫 폼 기능


1.0
Ez3dVRMLAuthor SGI IRIX 5.3 이후 www.webcom.com/radiance/

vrml.html

모델링

LOD, WWWAnchor, WWWInline

카메라 위치

폴리곤 감소기능

Preview

GWebSGI

Window3.1,NT

Sun Sparc

www.demom.co.uk/presence/

gweb.html

모델링

VRML로 저장

HomespaceBuilderMS-DOS

Window 3.1

NT,Window95

www.paragraph.com/vhsb

모델링

빠른 렌더링 엔진

사용하기 쉽다

PioneerWindow 3.11

Window 95, NT

www.caligari.com:80/com/

products/ppfeat.html

빠른 모델링

실시간 텍스쳐 조작

인터렉티브 라이팅

VirtusWalkthrough Pro Window 95,NTwww.virtus.com
WebSpaceAuthorSGI IRIX 5.3 webspace.sgi.com/

WebSpaceAuthor

최초의 VRML전용 저작도구

모델링

인라인 오브젝트

LOD 에티터

백그라운드 컬러 에디터

카메라 위치

도큐먼트 정보 에티터



2.0
Cosmo World SGI
CyberConductorWin95, Sun, SGI 멀티유저 지원
Internet3D Space Builder Window 3.X

Win95/NT

Virtual Home Space Builder Win95/NT

표 4. VRML저작도구

VRML 저작도구중에서 Virtus Walkthrough Pro에 대해 알아보도록 하자. 버처스 워크스루는 제임스 카메론(James Cameron) 감독이 어비스(The Abyss)라는 영화에서 직접디자인 할 때 처음 도구로 사용하기 시작했다고 한다.


그림 12. 버쳐스 워크스루 프로를 이용하여 만든 VRML 가상 공간

워크스루 프로의 인터페이스는 공간을 제작하는 방법, 공간에 가구및 텍스쳐를 배치하는 방법 그리고 파일을 VRML문서로 만들어 저장하는 방법등 다양하다. 사용방법은 도구 상자에서 공간을 구성하는 아이콘을 드랙앤 드랍(Drag and Drop)으로 이용하여 공간을 만들고 오브젝트 라이브러리에서 원하는 오브젝트(예를 들면 가구들)을 가져와서 배치한 후 표면 편집기를 이용하여 다양한 텍스쳐를 입힌다. 또한 버처스 워크스루를 이용하면 손쉽게 오브젝트에 URL을 추가할 수 있다. 그림 12는 버쳐스 워크스루 프로를 이용하여 VRML로 완성된 3차원 방을 보여준다.

VRML2.0 저작도구들은 아직까지 완전하게 기능을 지원하는 저작도구는 없지만 SGI의 CosmoWorld와 소니의 CyberConductor등이 일부 기능을 구현하고 있다.

4.3 파일 컨버터

기존의 3차원 모델링 툴을 가지고 있다면 생성한 모델파일을 VRML로 바꾸고자 할 것이다. 이를 위해서 다양한 컨버전 유틸리티가 제공되고 있다. VRML파일로 컨버전시 유의사항은 다른 장에서 살펴보도록 한다. 표 5에서는 이들 컨버전 유틸리티을 보여준다.
버전컨버전 유틸리티URL ( http:// 생략 ) 파일 이름


1.0
AliasToIv ftp.sgi.com/private/

translators/AliasToIv.tar

Alias
converterssunee.uwaterloo.ca/pub/

rend386/converters

대부분의

3d 파일

dxf2wrlwww.organic.com/vrml Dxf

(AutoCAD)

Dx2vrmlwww.tc.cornell.edu/

Visualization/Contrib/

CS490-94to95/ckline/ dx2vrml/dx2vrml.html

Dxf

(AutoCAD)

dxfToIvftp.sgi.com/private/

translators/DxfToIv.tar

Dxf (AutoCAD)
3dsToIvftp.sgi.ocm/private/

translators/3dsToIv.tar

3ds (3Dstudio)
IvToVRMLwebspace.sgi.com/Tools/

ivToVRML.tar.Z

iv

(OpenInventor)

obj2wrlwww.sdsc.edu/Enabling

Tech/Visualization/vrml/

tools/obj2wrl/help/

obj2wrl.html

obj

(Wavefront)

wadtoivwww-white.media.mit.edu

/~kbrussel/wadtoiv.html

wad (Doom)
wld2vrmlsunee.wuaterloo.ca/pub/

rend386/converters/

wld2vrml.zip

wld

(Rend386)

wrlgridwww.sdsc.edu/Enabling-

Tech/Visualization/vrml/

tools/wrlgrid/help/

wrlgrid.html

wrl
wc2pov v2.6www.europa.com/~keithr/

wc2pov2.6.zip

3ds, obj

NFF, dxf,

others


2.0
doomToVrml2 vrml.sgi.com/tools/doom/

vrml2/index.html

doom
mus2Vrmlwww.paragraph.com/vhsb

/freestuff

mus
Vrml1to2vs.sony.co.jp/VS-E/works

/util/vrml1to2E.html

vrml1.0
RealVR Converterwww.rlspace.com

표 5. VRML 파일 컨버터

5. VRML 월드 제작시 고려사항

VRML을 이용한 가상세계 제작은 컴퓨터 그래픽과는 많은 차이점을 가지고 있다. 인터넷상에서의 가상세계는 많은 사람들이 네트워크을 이용하여 자신의 컴퓨터로 가져와야 하고 렌더링해야 하므로 네트워크성능과 렌더링성능을 고려해서 모델링해야 할 것이다. 또한 일반 3차원 포맷에는 없는 VRML의 기능을 위한 고려를 해야 할 것이다.

앞으로 VRML을 이용한 가상세계 구축시 필요한 고려사항에 대해 알아보자.

5.1 모델링

앞서도 설명한 것처럼 네트워크성능과 렌더링 성능이라는 두가지 측면을 고려해서 적당한 크기와 렌더링 효과를 선택해야 한다. 즉 모델링시 많은 폴리곤을 사용하거나 텍스쳐을 매핑을 위해 이미지 파일을 많이 사용하면 사용자기 보기에는 현실감이 뛰어나 좋지만 네트워크에서 받아오는 파일의 크기가 커지고 렌더링 속도가 그많큼 떨어지므로 이를 잘 조절하여 사용해야 한다.

렌더링성능을 고려할 때 중요한 요소중에서 라이팅효과가 있다. 라이트를 많이 사용하면 좀더 실생활의 공간으로 꾸밀 수 있지만 렌더링 속도가 라이트 수많큼 감소하므로 모델링시 이를 고려해서 라이트는 2개 이상을 사용하지 않는 것이 좋다.

가상현실에서는 복잡한 오브젝트로 구성된 공간을 항해할 때 실시간으로 화면을 처리하기 위해서 레벨 오브 디테일(Level Of Detail, LOD)이라는 기법을 사용하는 데 VRML파일에서도 이를 지원하고 있다. 그러므로 이를 고려해서 모델링시 복잡한 오브젝트일 경우 여러개의 복잡도를 가지도록 모델을 만들어서 저장해야 한다. 이때 LOD중에서 기본화면을 구성하는 것을 제외한 나머지 LOD모델은 인라인 노드로 처리하여 필요에 따라 읽어들이 도록 한다.

5.2 가상 세계의 웹화및 최적화

모델링한 가상세계를 월드와이드웹에서 사용하기 위해서는 앵커로 만들려는 오브젝트에 링크정보를 붙이야 한다. 또한 VRML에서 제공하는 카메라의 위치정보나 인라인 정보,그리고 텍스쳐매핑을 위해 가상세계을 편집해야 한다.

먼저 사용자의 마우스 클릭등의 이벤트에 의해 다른 URL로 이동을 오브젝트를 선정하고 그 오브젝트에 WWWAnchor노드를 추가하고 name필드에 해당 URL을 명시한다. 이런 과정은 대부분의 저작도구에서 지원하지만 다른 3차원 모델러로 제작한 모델을 컨버터를 이용하여 바꾼 VRML파일에는 손수 에디팅해야 한다. 그림 13는 이런 과정을 보여준다.(여기의 예는 모두 VRML1.0을 기준으로 하였다)

그림 13. VRML의 WWWAnchor의 삽입

이런 오브젝트에 앵커를 삽입하기 위해서는 미리 모델링시 앵커에 대한 주석을 포함하도록 하여 에디팅시 쉽게 해당 오브젝트를 선택할 수 있도록 한다.

다음으로 VRML의 기능중에서 여러개의 카메라의 위치정보를 미리 정의하여 가상 세계를 항해시에 편리함과 신속함을 제공할 수 있다. 카메라의 정보를 주는 노드는 전술한 OrthogrphicCamera와 PerspectiveCamera라가 있다. 다음의 그림 14는 두개의 카메라 위치를 정의하는 것을 보여준다.


그림 14. 카메라 위치 삽입

이 카메라의 위치를 규정하는 데는 두개의 필드가 필요한데 카메라의 3차원 적인 위치를 표시하는 position필드와 카메라의 보는 방향은 나타내는 orientation필드가 있다. Orientation 필드는 기본적으로 -Z을 가르킨다. 앞의 예를 설명하면 브라우저가 이 카메라 정보를 기억하여 사용자가 브라우저의 메뉴를 통해서 카메라 위치를 바꿀수 있다.

좀더 현실감 있는 화면을 구성하기 위해서 텍스쳐를(3차원 오브젝트의 표면을 바르는 이미지) 사용하는 데 해당되는 노드는 Texture2을 사용하고 그 예를 그림 15에서 보여준다.

이미지는 주로 .gif나 .rgb 포맷을 사용하는 데 이에 대한 표준은 아직 정해지지 않고 있다. 이미지의 크기는 주로 네트워크 성능을 높이기 위해 되도록 작은 것을 사용해야 한다. 앞의 예에서는 텍스쳐 매핑할 오브젝트노드앞에 Texture2 노드밑에 이미지의 위치를 나타내는 URL과 매핑방식을 규정하는 필드를 삽입하였다.


그림 15. 텍스쳐 매핑을 위한 Texture2노드 삽입

마지막으로 네트워크상에서 최적화된 VRML을 만들기 위해서 압축을 하는 경우가 있다. 이때는 GZIP압축 기법을 사용한다. 다음은 압축하는 방법과 브라우저가 이를 다시 원래의 VRML파일로 압축을 푸는 과정을 그림 16에서 보여준다.


그림 16. VRML 파일의 압축

6. 인터넷의 VRML자원

6.1 메일링 리스트

VRML관련된 메일링 리스트는 사용자의 관심분야에 따라 다양하게 구성되어 있다. 개발자뿐만 아니라 일반 사용자들도 이 메일링 리스트에서 좋은 정보를 얻을 수 있고 의문사항도 포스팅 할 수 있음으로 다음의 메일링 리스트중에서 관심분야의 메일을 받는 것을 권하고 싶다.

6.2 관련 웹사이트

VRML에 관한 정보를 얻는 가장 편리한 방법은 역시 월드와이드웹이다. 독자들이 웹에서 VRML관련정보를 얻는 데는 어려움이 없을 정도로 많은 사이트가 있다. 그러나 이들 사이트가 중복된 정보를 가지고 있음으로 다음의 주요한 몇개의 사이트만 방문하면 대부분의 정보를 얻을 수 있을 것이다.


7. VRML의 응용분야

WWW의 새로운 3차원 항해방법으로 부터 이득을 볼 수 있는 Web 사이트(sites)을 상상하는 것은 어려운 일이 아니다. 이 절에서는 현재 VRML을 이용한 응용분야들을 살펴보고자 한다.

VRML의 등장으로 가장 많은 혜택을 받을 수 있는 분야중 하나는 건축일 것이다. 건축가들이 직면하는 가장 큰 문제중의 하나는 건물을 짓기전에 고객들에게 이 공간을 경험하게 하고 이해시키는 일일 것이다. WWW상의 3D는 건축가가 동료나 고객과의 생각을 공유할 수 있는 간단한 메카니즘을 제공할 것이다. 예를 들어, 건물을 짓기전에 정원, 빌딩, 공원등을 실제로 걸어보고나 드라이브해 봄으로써 디자인과정에 직접 참여하여 만족도를 높일 수 있다.

다음으로 상품의 광고이다. 기존의 2차원 이미지를 대신해 고객들은 실제 상품의 3D 카탈로그을 볼 수 있고 실제 조작해 봄으로써 상품의 신뢰도와 디자인을 네트워크상에서도 볼 수 있음으로 온 라인 쇼핑문화가 더욱 가속화 될 수 있을 것이다.

VRML의 혜택중에서 엔지리어링분야를 빼놓을 수 없다. 설계와 제조분야에서의 3D모델은 일반화되어 있고 급변하는 세계시장에서 WWW을 통해 3D정보를 쉽고 빠르게 획득하는 것은 무엇보다 중요하다.

버추얼 베가스(Virtual vegas)는 3차원 공간에서 오락을 즐길수 있는 사이트이다. 이 페이지를 방문하면 3차원 슬롯머신이 보여진다. 이외에도 여러명이 참여하여 가상공간에서 서로를 인식하고 원하는 사람과 채팅기능도 제공하는 웹서비스 회사들이 등장했다. 이를 위해서는 전용 VRML브라우저가 요구된다. 그밖에도 교육, 학문, 의료등의 분야에도 VRML은 큰 기여를 하고 있다.

이처럼 VRML은 인터넷의 새로운 전기를 마련하고 있고 진정한 가상현실 언어인 VRML 2.0이 본격적으로 사용되면 좀더 다양하고 역동적인 사이버 스페이스가 될 것이다. 또한 앞으로의 사이버 스페이스는 여러 명의 참여자가 동시에 서로 정보를 공유하는 가상 환경으로 갈 것이라 생각된다.