interactive 3d graphics for tcl/tk interactive 3d graphics for tcl/tk

15
HASSO - PLATTNER - INSTITUT for Software Systems Engineering at the University of Potsdam Interactive 3D Graphics for Tcl/Tk Oliver Kersting and Jürgen Döllner 3 rd European Tcl/Tk User Meeting June 2002, Munich Interactive 3D Graphics for Tcl/Tk Oliver Kersting and Jürgen Döllner 3 rd European Tcl/Tk User Meeting June 2002, Munich European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 2 Overview 1. Interactive 3D Graphics 2. Interactive Virtual Rendering System 3. API Mapping Technique 4. Developing 3D Applications with iVRS 5. Conclusions 1. Interactive 3D Graphics 2. Interactive Virtual Rendering System 3. API Mapping Technique 4. Developing 3D Applications with iVRS 5. Conclusions

Upload: doankhanh

Post on 06-Feb-2017

307 views

Category:

Documents


11 download

TRANSCRIPT

Page 1: Interactive 3D Graphics for Tcl/Tk Interactive 3D Graphics for Tcl/Tk

1

HASSO - PLATTNER- INSTITUTfor Software Systems Engineering

at the University of Potsdam

Interactive 3D Graphics for Tcl/TkOliver Kersting and Jürgen Döllner

3rd European Tcl/Tk User MeetingJune 2002, Munich

Interactive 3D Graphics for Tcl/TkOliver Kersting and Jürgen Döllner

3rd European Tcl/Tk User MeetingJune 2002, Munich

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 2

Overview

1. Interactive 3D Graphics

2. Interactive Virtual Rendering System

3. API Mapping Technique

4. Developing 3D Applications with iVRS

5. Conclusions

1. Interactive 3D Graphics

2. Interactive Virtual Rendering System

3. API Mapping Technique

4. Developing 3D Applications with iVRS

5. Conclusions

Page 2: Interactive 3D Graphics for Tcl/Tk Interactive 3D Graphics for Tcl/Tk

2

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 3

1. Interactive 3D Graphics

Applications of interactive 3D graphics- Information Visualization- Scientific Visualization- CAD/CAM - Entertainment and Gaming- Education

Elements of interactive 3D graphics - Rendering of 3D scenes in real-time- Interaction with 3D objects and 3D scenes- Animation of 3D objects and 3D scenes

Applications of interactive 3D graphics- Information Visualization- Scientific Visualization- CAD/CAM - Entertainment and Gaming- Education

Elements of interactive 3D graphics - Rendering of 3D scenes in real-time- Interaction with 3D objects and 3D scenes- Animation of 3D objects and 3D scenes

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 4

Developing interactive 3D graphics applications- Programming based on

low-level libraries, e.g., OpenGL- Programming based on higher-level

toolkits, e.g., OpenInventor, Java3D

Characteristics: - System programming languages- High performance- API with large number of data

structures, functions, or classes- Strong typing

Developing interactive 3D graphics applications- Programming based on

low-level libraries, e.g., OpenGL- Programming based on higher-level

toolkits, e.g., OpenInventor, Java3D

Characteristics: - System programming languages- High performance- API with large number of data

structures, functions, or classes- Strong typing

1. Interactive 3D Graphics

Page 3: Interactive 3D Graphics for Tcl/Tk Interactive 3D Graphics for Tcl/Tk

3

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 5

1. Interactive 3D Graphics

Difficulties developing 3D Applications

- Programming and Configuring of 3D applicationsHow to modify 3D scenes?How to experiment with features?

Every access by system programming language requires compile-link cycles, which increase development time

- Exploring and understanding of 3D graphics librariesHow to find features?Which function do I need? …

Difficult to find appropriate functionality in large and complex APIs

Difficulties developing 3D Applications

- Programming and Configuring of 3D applicationsHow to modify 3D scenes?How to experiment with features?

Every access by system programming language requires compile-link cycles, which increase development time

- Exploring and understanding of 3D graphics librariesHow to find features?Which function do I need? …

Difficult to find appropriate functionality in large and complex APIs

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 6

1. Interactive 3D Graphics

Our Solution- Apply a high-level object-oriented 3D graphics library- Map its C++ API and meta information to Tcl

Our Solution- Apply a high-level object-oriented 3D graphics library- Map its C++ API and meta information to Tcl

- Program and configure 3D graphics applications interactively using the Tcl interpreter

- Explore API by Tcl commands

- Program and configure 3D graphics applications interactively using the Tcl interpreter

- Explore API by Tcl commands

Page 4: Interactive 3D Graphics for Tcl/Tk Interactive 3D Graphics for Tcl/Tk

4

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 7

2. Interactive Virtual Rendering System2. Interactive Virtual Rendering System

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 8

2. Interactive Virtual Rendering System

Virtual Rendering System (VRS)

General-purpose 3D graphics library- Support for 3D modeling, interaction,

and animation- Scene graph- Rendering based on OpenGL

Implementation- Object-oriented- Written in C++

Virtual Rendering System (VRS)

General-purpose 3D graphics library- Support for 3D modeling, interaction,

and animation- Scene graph- Rendering based on OpenGL

Implementation- Object-oriented- Written in C++

Page 5: Interactive 3D Graphics for Tcl/Tk Interactive 3D Graphics for Tcl/Tk

5

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 9

2. Interactive Virtual Rendering System

Virtual Rendering System (VRS)Advanced real-time rendering techniques- Shadows- Reflections- Bump mapping- Multi-texturingIO support - Image: bmp, ppm, jpeg, tiff …- Video: avi, mpeg2D Imaging- Image manipulation- Convolution filteringSupport for additional rendering systems- BMRT (RenderMan)- POVRay

Virtual Rendering System (VRS)Advanced real-time rendering techniques- Shadows- Reflections- Bump mapping- Multi-texturingIO support - Image: bmp, ppm, jpeg, tiff …- Video: avi, mpeg2D Imaging- Image manipulation- Convolution filteringSupport for additional rendering systems- BMRT (RenderMan)- POVRay

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 10

Scene Graph SceneThing (scene-root)

Cylinder (cyl1)

SceneThing (cylinders)

Color (blue)

DistantLight (lamp) Camera (cam)

attribute shape scene node

Sphere (sp)

SceneThing (sphere-object)

Color (red)

Material (mat)

Cylinder (cyl2)

Color (green)

2. Interactive Virtual Rendering System

VRS Core ElementsShapes

sphere,cylinder, point, line, level-of-detail mesh, …

Graphics Attributescolor, material, texture, light sources, …

Transformationsrotation, scaling, translation, billboarding …

Nodescontainer objectsbuild scene graphs

VRS Core ElementsShapes

sphere,cylinder, point, line, level-of-detail mesh, …

Graphics Attributescolor, material, texture, light sources, …

Transformationsrotation, scaling, translation, billboarding …

Nodescontainer objectsbuild scene graphs

Page 6: Interactive 3D Graphics for Tcl/Tk Interactive 3D Graphics for Tcl/Tk

6

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 11

2. Interactive Virtual Rendering System

Observations- Manipulation of scene graphs occurs frequently

during 3D application development

- Manipulation of scene graphs implies recompilation and linking

Observations- Manipulation of scene graphs occurs frequently

during 3D application development

- Manipulation of scene graphs implies recompilation and linking

Scene graph manipulation is a time-critical aspect in developing 3D graphics applications

How can we speed up developing process?

Scene graph manipulation is a time-critical aspect in developing 3D graphics applications

How can we speed up developing process?

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 12

2. Interactive Virtual Rendering System

Interactive Virtual Rendering System= Easily program 3D graphics by scripting,

thereby doing time-critical operations in C++

+ Map VRS API to corresponding Tcl commands

+ Create, manipulate, destroy VRS objects by Tcl

Interactive Virtual Rendering System= Easily program 3D graphics by scripting,

thereby doing time-critical operations in C++

+ Map VRS API to corresponding Tcl commands

+ Create, manipulate, destroy VRS objects by Tcl

Interactive 3D application developmentaccess to class and API reflection informationreconfiguration of all objects at run-time

No loss of rendering performancerendering as time-critical part is executed at C++ level

Interactive 3D application developmentaccess to class and API reflection informationreconfiguration of all objects at run-time

No loss of rendering performancerendering as time-critical part is executed at C++ level

Page 7: Interactive 3D Graphics for Tcl/Tk Interactive 3D Graphics for Tcl/Tk

7

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 13

2. Interactive Virtual Rendering System

VRS: Virtual Rendering System

VRS Tcl

C++ library

iVRS

iVRS: interactive VRSC++ library

530 classes2500 methods

40 template classes

300 classes2000 methods

100 template instances

Tcl interpreter

C library

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 14

2. Interactive Virtual Rendering System

Example: C++ API mapped to TclVRS/C++

Sphere* mysphere = new Sphere(12);mysphere->setRadius(15);delete mysphere

Example: C++ API mapped to TclVRS/C++

Sphere* mysphere = new Sphere(12);mysphere->setRadius(15);delete mysphere

iVRS/Tcl set mysphere [new Sphere 12]$mysphere setRadius 15delete $mysphere

iVRS/Tcl set mysphere [new Sphere 12]$mysphere setRadius 15delete $mysphere

Page 8: Interactive 3D Graphics for Tcl/Tk Interactive 3D Graphics for Tcl/Tk

8

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 15

3. API Mapping Technique3. API Mapping Technique

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 16

3. API Mapping Technique

Major Steps of the Mapping Process- Analyze C++ API- Generate C++ wrapper code- Compile C++ wrapper code- Build Tcl extension package

Mapping Features- Static, virtual, and overloaded methods- Default arguments- Enumerations- Template classes- Reference counting

Wrapper classes and method tables

Major Steps of the Mapping Process- Analyze C++ API- Generate C++ wrapper code- Compile C++ wrapper code- Build Tcl extension package

Mapping Features- Static, virtual, and overloaded methods- Default arguments- Enumerations- Template classes- Reference counting

Wrapper classes and method tables

Page 9: Interactive 3D Graphics for Tcl/Tk Interactive 3D Graphics for Tcl/Tk

9

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 17

3. API Mapping Technique – Wrapper Class

iVRS Wrapper Class (Implementation Detail)- Reflects interface of a VRS class with wrapper

methods which exclusively use string arguments- A wrapper method converts incoming string arguments

to original types, completes missing arguments with default values, and calls the wrapped method

iVRS Wrapper Class (Implementation Detail)- Reflects interface of a VRS class with wrapper

methods which exclusively use string arguments- A wrapper method converts incoming string arguments

to original types, completes missing arguments with default values, and calls the wrapped method

0..1

A

+A(v:double)+getValue():double+setValue(v:double,b:bool):void+modified():void

AWrap

-obj:A *

+_A_double(argc:int,argv:char * *):char *+_getValue(argc:int,argv:char * *):char *+_setValue_double_bool(argc:int,argv:char * *):char +_modified(argc:int,argv:char * *):char *

Wrapped Class Wrapper Class

Wrapped Method Wrapper Method

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 18

3. API Mapping Technique – Method Table

iVRS Method Table (Implementation Detail)- Stores information about signatures of methods of

wrapped classes- Signature information is required to decide which

wrapped method should be called at run-time

iVRS Method Table (Implementation Detail)- Stores information about signatures of methods of

wrapped classes- Signature information is required to decide which

wrapped method should be called at run-time

AWrap::_modified00“”“modified”

AWrap::_getValue00“”“getValue”

AWrap::_setValue_double_bool21“double bool”“setValue”

AWrap::_A_double11“double”“A”

Method PointerMaxMinArgumentsMethod Name

Enables iVRS to call polymorph methods, methods using default values and overloaded methods

Page 10: Interactive 3D Graphics for Tcl/Tk Interactive 3D Graphics for Tcl/Tk

10

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 19

4. Developing 3D Applications with iVRS

4. Developing 3D Applications with iVRS

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 20

4. Examples

Page 11: Interactive 3D Graphics for Tcl/Tk Interactive 3D Graphics for Tcl/Tk

11

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 21

4. Examples - 3D Object Viewer

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 22

4. Examples - 3D Object Viewer

package require iVRS

set myCanvas [new TclCanvas .view 400 400]pack .view

set myScene [new SceneThing]

set myCamera [new Camera {0 –2 –2} {0 0 0} 60]$myScene append $myCamera

set distantlight [new DistantLight]$myScene append $distantlight

set my3ds [ObjectLoader readFile dragon.3ds]$myScene append $my3ds

$myCanvas append $myScene

$myCanvas append [new TrackBall $my3ds]

package require iVRS

set myCanvas [new TclCanvas .view 400 400]pack .view

set myScene [new SceneThing]

set myCamera [new Camera {0 –2 –2} {0 0 0} 60]$myScene append $myCamera

set distantlight [new DistantLight]$myScene append $distantlight

set my3ds [ObjectLoader readFile dragon.3ds]$myScene append $my3ds

$myCanvas append $myScene

$myCanvas append [new TrackBall $my3ds]

Page 12: Interactive 3D Graphics for Tcl/Tk Interactive 3D Graphics for Tcl/Tk

12

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 23

4. Examples – iVRS IDE

iVRS Integrated Development EnvironmentiVRS Integrated Development Environment

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 24

4. Examples – iVRS IDE

iVRS Integrated Development EnvironmentMeta information at run-time- Base class and child classes- Methods including complete signature- Enumerations- Instantiated objects- Object relationships

Automated GUI components for VRS objects

Integrated help system

iVRS Integrated Development EnvironmentMeta information at run-time- Base class and child classes- Methods including complete signature- Enumerations- Instantiated objects- Object relationships

Automated GUI components for VRS objects

Integrated help system

Page 13: Interactive 3D Graphics for Tcl/Tk Interactive 3D Graphics for Tcl/Tk

13

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 25

4. Examples – LandExplorer

LandExplorer: 3D Map System based on iVRS

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 26

5. Conclusions5. Conclusions

Page 14: Interactive 3D Graphics for Tcl/Tk Interactive 3D Graphics for Tcl/Tk

14

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 27

5. Conclusions

iVRS- Allows developers to program and configure

interactive 3D graphics applications interactively at run-time

- Allows developers to explore the complete API interactively

- Supports platform-independent 3D graphics application development

- Facilitates rapid prototyping

- Offers real-time rendering for scripting languages without any remarkable loss of performance

iVRS- Allows developers to program and configure

interactive 3D graphics applications interactively at run-time

- Allows developers to explore the complete API interactively

- Supports platform-independent 3D graphics application development

- Facilitates rapid prototyping

- Offers real-time rendering for scripting languages without any remarkable loss of performance

European Tcl/Tk User Meeting '02 Oliver Kersting - University of Potsdam 28

Future Work and License

Future Work- Add C++ comments to iVRS meta information- Add VRS namespace in Tcl- Improve error messaging

- Support for additional scripting languages

LicenseiVRS is Open Source SoftwareGNU Lesser General Public License

Future Work- Add C++ comments to iVRS meta information- Add VRS namespace in Tcl- Improve error messaging

- Support for additional scripting languages

LicenseiVRS is Open Source SoftwareGNU Lesser General Public License

Page 15: Interactive 3D Graphics for Tcl/Tk Interactive 3D Graphics for Tcl/Tk

15

HASSO - PLATTNER- INSTITUTfor Software Systems Engineering

at the University of Potsdam

Thank you.

www.vrs3d.org