가상현실 Chap 1. VRML 동의대학교 멀티미디어공학과 김형석 163535/A25002 컴퓨터 그래픽스 Copyright ⓒ 2001 N Baek
Virtual Reality 정의 가상현실시스템의 요구사항 가상현실시스템의 종류 상상에 의해서 만들어진 현실 가상세계를 현실세계와 같도록 느끼게 하는 기술 가상현실시스템의 요구사항 임장감(Presence)과 몰입감(Immersion) 상호작용성(Interactivity) 자율성(Autonomy) 가상현실시스템의 종류 몰입형 가상현실 시스템 비몰입형 가상현실 시스템 증강현실 시스템 Copyright ⓒ 2001 N Baek
Virtual Reality 가상현실시스템의 구성 163535/A25002 컴퓨터 그래픽스 Copyright ⓒ 2001 N Baek
Web에서의 Virtual Reality 이미지 기반 Panorama VR Object VR 모델링 기반 VRML(Virtual Reality Modeling Language) Web환경에서 동적인 3차원 환경을 개발하기 위하여 표준으로 제안된 스크립트 형식의 언어 Copyright ⓒ 2001 N Baek
VRML의 특징 사용자 입력에 의한 상호작용과 네비게이션이 가능 163535/A25002 컴퓨터 그래픽스 VRML의 특징 사용자 입력에 의한 상호작용과 네비게이션이 가능 인터넷을 통한 다중 참여자를 지원하는 가상환경 시스템 구축 가능. 웹의 사용 전제로 설계됨 VRML 플러그인 만 설치하게 되면 웹 사용이 가능한 어떤 시스템에서도 볼 수 있음 빠른 전송 : 아스키 파일 형태 다른 VRML 문서, HTML 문서와 연결 가능 메모장 만으로 3D 컨텐츠 제작 Copyright ⓒ 2001 N Baek
VRML의 예 #VRML V2.0 utf8 Transform { children [ Shape { geometry Box { size 1 1 1 } appearance Appearance { material Material { diffuseColor 0.9 0.9 0.0 specularColor 1.0 1.0 1.0 emissiveColor 0.25 0.25 0.0 } } } ]} 예제보기 Copyright ⓒ 2001 N Baek
VRML의 특징 VRML animation Video graphic panorama VR 상호 작용성 탐색항해 장면의 구성 가상성 파일의 형식 파일의 크기 있음 가능 실시간 사물 모델링 text 작다 없음 불가능 녹화 인공적 그림 binary 크다 없음 불가능 녹화 실제 장면 binary 크다 없음 불가능 미리 그려짐 그림 / 사진 binary 크다 없음 제한적 가능 녹화/ 실시간 사진 binary 크다 Copyright ⓒ 2001 N Baek
VRML viewer 코스모 소프트(Cosmo soft)의 Cosmo Player 인터비스타(Intervista)의 Worldview 블락선(Blaxxun)의 Contact 패라렐그래픽스(Parallel Graphics)의 Cortona 사이맥스(Cymax)의 깨비뷰어 Copyright ⓒ 2001 N Baek
VRML 만들기 만드는 방법 메모장을 이용하여 작성 확장자는 “wrl” : code1.wrl VRML 기본 형식 163535/A25002 컴퓨터 그래픽스 VRML 만들기 만드는 방법 메모장을 이용하여 작성 확장자는 “wrl” : code1.wrl VRML 기본 형식 첫번째 라인에 “#VRML 2.0 utf8” 로 시작한다. VRML 헤더 Blank가 없도록 하여야 한다. 버전 VRML 2.0, 인코딩 형식 : utf8 그 다음 내용은 줄을 바꾸어 기재 주석 : 파운드(#) Copyright ⓒ 2001 N Baek
VRML 구성 VRML : 노드와 필드 노드 : VRML의 장면을 기술하는 구성요소 VRML97에서 54개의 노드를 정의 163535/A25002 컴퓨터 그래픽스 VRML 구성 VRML : 노드와 필드 노드 : VRML의 장면을 기술하는 구성요소 VRML97에서 54개의 노드를 정의 대문자로 시작 필드 : 노드의 특성을 기술하는 구성요소 각 노드에는 다양한 형태, 다양한 개수의 필드를 가짐 소문자로 시작 #VRML V2.0 utf8 Shape { geometry Box { size 1 1 1}} Copyright ⓒ 2001 N Baek
VRML 노드 장면의 구성 사물, 빛, 시점, 이벤트 노드를 통해서 이러한 요소를 표현 노드의 종류(54개) 163535/A25002 컴퓨터 그래픽스 VRML 노드 장면의 구성 사물, 빛, 시점, 이벤트 노드를 통해서 이러한 요소를 표현 노드의 종류(54개) Shape Node Transform Node Sensor Node Interpolator Node Texture Node Copyright ⓒ 2001 N Baek
노드의 종류 그룹 노드(Grouping node) 특별 노드(Special node) Anchor : 그룹 노드 안의 자식노드를 선택했을 때, url 필드에 기입된 내용을 브라우저에 가져오는 노드 Billboard : 물체를 향상 관찰자 방향으로 만들게 하는 노드 Collision : 충돌 감지에 대한 설정을 위한 노드 Group : 자식 노드만을 포함하는 노드 Transform : 하나의 좌표 체계를 공유하도록 하는 노드 특별 노드(Special node) inline : 웹에서 필요한 자료를 읽어 들여 현재의 화면에 삽입하는 노드 LOD : 시점과의 거리에 따라서 다르게 표현할 수 있는 노드 Switch : choice 필드에 정의되어 있는 노드 중 하나만을 선택하여 표시하는 노드 Copyright ⓒ 2001 N Baek
노드의 종류 일반 노드(Common node) AudioClip : Sound 노드의 오디오 데이터를 정의하는 노드 DirectionalLight : 평행 광선 정의 노드 PointLight : 점 광원을 정의하는 노드 Script : VRML 화면에 Event 에 따른 결과를 보여주는 프로그램을 지정하는 노드 Shape : 물체의 외형을 정의하는 노드 Sound : VRML에 Sound를 추가하기 위하여 정의하는 노드 SpotLight : 무대 조명을 정의하는 노드 WorldInfo : Scene에 대한 정보만을 가지는 노드 Copyright ⓒ 2001 N Baek
노드의 종류 센서 노드(Sensor node) pointing sensors Environmental sensors TouchSensor : 그 센서를 부착한 객체를 클릭했을 때 별도로 설정한 Event를 발생시키는 노드 PlaneSensor : 객체를 드래그했을 때, 그 객체를 xy 평면으로 움직이게 하는 노드 CylinderSensor : 객체를 드래그했을 때, 그 객체를 y축으로 움직이게 하는 노드 SphereSensor : 객체를 드래그했을 때, 그 객체를 어떤 정점을 중심으로 회전시키는 노드 Environmental sensors Copyright ⓒ 2001 N Baek
노드의 종류 센서 노드(Sensor node) Environmental sensors ProximitySensor : 임의로 설정된 영역 내에 관찰자의 위치와 방위를 감지하여 Event를 발생시키는 노드 TimeSensor : 설정된 시간과 간격으로 event를 발생시키는 노드 VisibilitySensor : 특정부분이 관찰자에게 보이게 될 때 동작하는 노드 Copyright ⓒ 2001 N Baek
노드의 종류 기하 노드(Geometry node) Box : 가로, 세로, 높이 Cone : 반지름, 높이 163535/A25002 컴퓨터 그래픽스 노드의 종류 기하 노드(Geometry node) Box : 가로, 세로, 높이 Cone : 반지름, 높이 Cylinder : 반지름, 높이 Sphere : 반지름 ElevationGrid : xz 평면이 불규칙이고 각 점마다 다른 높이를 가진 물체 : 산, 계곡 등 Extrusion : 돌출되는 형태의 물체를 정의하는 노드 IndexedFaceSet : 포인터를 기준으로 해서 여러 개의 면을 생성하는 노드 IndexedLineset : 포인터를 기준으로 해서 여러 개의 선을 생성하는 노드 PointSet : 여러 개의 점을 한 번에 생성하는 노드 Text : 문자열을 표시해주는 노드 Copyright ⓒ 2001 N Baek
노드의 종류 속성 노드(Geometric Property node) Color : rgb 값 지정 163535/A25002 컴퓨터 그래픽스 노드의 종류 속성 노드(Geometric Property node) Color : rgb 값 지정 Coordinate : IndexedFaceSet, IndexedLineSet, PointSet 노드 등 정점으로 구성되는 노드에서 사용할 3D 좌표값을 정의하는 노드 Normal : IndexedFaceSet, ElevationGrid 노드의 vector 필드에 사용되는 3D 표면의 normal vector 지정하는 노드 TextureCoordinate : 정점으로 이루어진 기하 노드의 정점에 텍스처를 입힐 때 사용되는 2차원 좌표 조합을 정의하는 노드 Copyright ⓒ 2001 N Baek
노드의 종류 외형 노드( Appearance node) Appearance : 주어진 Shape 노드에서 물체에 적용할 재질, 텍스쳐 정보를 정의하는 노드 FontStyle : 문자열 모양 정의 ImageTexture : 물체에 이미지 텍스쳐를 적용하는 노드 Material : 물체의 외형에 제질 속성을 정의하는 노드 MovieTexture : 물체에 동영상을 적용하는 노드 PixelTexture : 물체에 화소 단위로 색상을 지정하는 노드 TextureTransform : 텍스쳐 좌표계에 적용하는 2D 변형을 정의하는 노드 Copyright ⓒ 2001 N Baek
노드의 종류 애니메이션 노드( Animation node) 부가노드( Bindable node) ColorInterpolator CoordinateInterpolator NormalInterpolator OrientationInterpolator PositionInterpolator ScolarInterpolator 부가노드( Bindable node) Background Fog NavigationInfo Viewpoint Copyright ⓒ 2001 N Baek
필드 구성 필드 : 속성 + 자료형 + 이름 + 변수값 속성 : 필드 데이터의 속성 163535/A25002 컴퓨터 그래픽스 필드 구성 필드 : 속성 + 자료형 + 이름 + 변수값 속성 : 필드 데이터의 속성 exposedField : 정의된 후 수시로 변경 가능, 이벤트에서 값을 받을 수 있고, 넘길 수 있음 Field : 한 번 정의되면 그 값이 변경되지 않음 EventIn : 이벤트를 받는 경우 EventOut : 이벤트를 발생시켜 건네주는 경우 자료형 : 필드가 가질 수 있는 변수의 데이터 형태 SF(Single Field) : 하나의 값을 가짐 MF(Multi Field) : 두 개 이상의 값을 가질 수 있음 SFBool, SFFloat, SFInt32, SFTime, SFVec2f, SFVec3f, SFColor, SFImage, SFNode, SFRotation, SFString Copyright ⓒ 2001 N Baek
필드 구성 이름 : 각 필드를 나타내는 고유명사 변수값 : 변수에 해당되는 값 SFBool : TRUE / FALSE SFFloat : [0.0, infinity) SFInt32 : [0, infinity) SFTime : [ -1, infinity) SFVec2f : 0 0 SFVec3f : 0 0 0 SFColor : 0 0 0 SFImage : 0 0 0 SFNode : NULL SFRotation : 축, 회전각 ( 0 0 1 0 ) SFString : “ “ Copyright ⓒ 2001 N Baek
필드 구성 예제 : Shape 노드 Shape { exposedField SFNode geometry NULL exposedField SFNode appearance NULL } NULL 자리에 하나의 노드가 올 수 있다. Box { field SFVec3f size 2 2 2 # (0, ) } 를 만약 사용한다면, exposedField SFNode geometry Box { field SFVec3f size 2 2 2 } Copyright ⓒ 2001 N Baek
필드 구성 Appearance { exposedField SFNode material NULL exposedField SFNode texture NULL exposedField SFNode textureTransform NULL } Shape { exposedField SFNode geometry Box { field SFVec3f size 2 2 2 } exposedField SFNode appearance Appearance { } Copyright ⓒ 2001 N Baek
Shape Nodes Box { field SFVec3f size 2 2 2 # (0, ) } 예제 1.1 Sphere { field SFFloat radius 1 # (0, ) } 예제 1.2 Cone { field SFFloat bottomRadius 1 # (0, ) field SFFloat height 2 # (0, ) field SFBool side TRUE field SFBool bottom TRUE } 예제 1.3 Copyright ⓒ 2001 N Baek
Shape Nodes Cylinder { field SFBool bottom TRUE field SFFloat height 2 # (0, ) field SFFloat radius 1 # (0, ) field SFBool side TRUE field SFBool top TRUE } } 예제 1.4 Copyright ⓒ 2001 N Baek
웹페이지 공개 HTML 페이지에 삽입 <HTML> <title> 새창에서 열기</title> 163535/A25002 컴퓨터 그래픽스 웹페이지 공개 HTML 페이지에 삽입 <HTML> <title> 새창에서 열기</title> <body bgcolor=“#cecece”> <EMBED SRC = “chap04.wrl” width = “200” height = “200”> <p><a href = “chap04.wrl” target=“new”> 큰 화면으로 보기></a></p> </body> </html> } 예제 1.5 조정대를 숨기는 옵션 <EMBED SRC = “chap04.wrl” width = “200” height = “200” VRML_DASHBOARD=“FALSE”> 예제 1.6 Copyright ⓒ 2001 N Baek
예제 다음 예제대로 만들어 보세요 예제 1.7 예제 1.8 163535/A25002 컴퓨터 그래픽스 Copyright ⓒ 2001 N Baek
Appearance Node Appearance { exposedField SFNode material NULL exposedField SFNode texture NULL exposedField SFNode textureTransform NULL } 2행 : 색상을 적용해주는 필드 3행 : 이미지를 물체에 적용할 수 있게 해 주는 필드 4행 : 사용되는 이미지의 변화를 조절할 수 있는 필드 Copyright ⓒ 2001 N Baek
Appearance Node Material { exposedField SFFloat ambientIntensity 0.2 # [0,1] exposedField SFColor diffuseColor 0.8 0.8 0.8 # [0,1] exposedField SFColor emissiveColor 0 0 0 # [0,1] exposedField SFFloat shininess 0.2 # [0,1] exposedField SFColor specularColor 0 0 0 # [0,1] exposedField SFFloat transparency 0 # [0,1] } 예제1.9 2행 : 물체에 도달하는 빛의 퍼짐을 조절하는 필드 3행 : 물체 표면의 난반사 색상을 표현해주는 필드 4행 : 물체가 방사하는 칼라를 표현해주는 필드 5행 : 물체의 광택 정도 6행 : 물체 표면의 전반사 색상을 표현해주는 필드 7행 : 물체의 투명도 Copyright ⓒ 2001 N Baek
Material Nodes 질감의 적용 예제 1.10 diffuseColor/emissiveColor 적용 예제 1.11, 예제1.11_1 투명도를 이용한 경우 : 예제1.12 Copyright ⓒ 2001 N Baek