• No results found

Last lecture... Computer Graphics:

N/A
N/A
Protected

Academic year: 2021

Share "Last lecture... Computer Graphics:"

Copied!
10
0
0

Loading.... (view fulltext now)

Full text

(1)

Toby Breckon Computer Graphics & VTK  1

Computer Graphics:

Introduction to the Visualisation 

Toolkit

Notices

reading / links / vtk examples

see course web page

first practical handout (not assessed)

VTK handout (reading)

Visualisation – Lecture 2

Toby Breckon

[email protected]

Computer Vision Lab.

Institute for Perception, Action & Behaviour

Toby Breckon Computer Graphics & VTK  2

Last lecture ...

Visualisation can be greatly enhanced through the 

use of 3D computer graphics

computer graphics are our tool in visualisation

computer graphics are a key offering of computer 

science to the visualisation problem

In order to do effective visualisation we need:

to know some computer graphics (this lecture)

a computer graphics architecture (VTK)

Visualisation : Lecture 2

Computer Graphics : simulation 

of light behaviour in 3D

For effective simulation require 

to model:

object representation  (geometry)

object illumination 

(lighting)

camera model

(vision)

world to image plane projection

rendering: converting 

graphical data into an image

3D scene (e.g. real world)

Object 

with 

surfaces

Light Source(s)

Camera 

Model

Rendering

on image plane

Visualisation : Lecture 2

Data Representation : 3D shape

Approximate smooth surfaces with flat, 

planar polygons

polygons formed of edges & vertices

vertex: positional point (2D or 3D)

edge: joins 2 vertices

polygon: enclosed within N edges 

(cf. faces)

polygons share common edges

mesh: set of connected polygons forming a 

surface (or object) 

(cf. graph)

H

ie

ra

rc

hy

 o

f S

ur

fa

ce

 R

ep

re

se

nt

ati

on

 

(2)

Toby Breckon Computer Graphics & VTK  5

Surface mesh : examples

(close up) 

Different resolutions alter perception of surface 

smoothness

Several primitives utilised, triangles generally 

fastest to draw

modern graphics cards : 1 million + triangles per 

second

Toby Breckon Computer Graphics & VTK  6

Mesh Based Representation

3D file formats:

set of vertices in ℝ

3

polygons 

reference into vertex set

implicitly define edges

e.g. 

vertex 0 0 0

vertex 0 1 0

....

polyon 3 2 1 3

polyon 3 5 6 8

...

perform transformations only on vertices

standards: IGRES (ANSI), VRML (ISO), X3D (ISO)

#VRML V1.0 ascii # Separator { Material { ambientColor 0.2 0.2 0.2 diffuseColor 1.0 1.0 1.0 } Coordinate3 { point [ 4.455030 -1.193380 1.930940, 4.581220 -1.506290 1.320410, 4.219560 -1.875190 1.918070, 3.535530 1.858740 -3.007500, 3.793260 1.185430 -3.034130, 4.045080 1.545080 -2.500000, 3.510230 3.468900 0.803110, 3.556410 3.514540 0.000000, 3.919220 3.078210 0.405431, .... .... IndexedFaceSet { coordIndex [ 0, 1, 2, -1, 3, 4, 5, -1, 6, 7, 8, -1, 9, 10, 11, -1, 12, 13, 14, -1, 15, 16, 17, -1, 18, 19, 20, -1, 21, 22, 23, -1, .... .... Visualisation : Lecture 2

Light interaction with surfaces

Simple 3 parameter model

The sum of 3 illumination terms:

• Ambient : 'background' illumination 

• Specular : bright, shiny reflections

• Diffuse : non­shiny illumination and shadows

Object

 Light source

(here point light source)

surface normal (specifies surface orientation)

'Virtual' camera

Visualisation : Lecture 2

Ambient Lighting

light reflected or scattered from other objects

simple approximation to complex 'real­world' process

Result: globally uniform colour for object

R

c

 = resulting intensity curve

L

= light intensity curve

O

c

 = colour curve of object

Object

 Uniform Light source

c

c

O

L

=

=

Colour 

Object 

 

Colour 

Light 

R

c

c

c

c

L

O

R

=

O

n

camera

Example: sphere

(3)

Toby Breckon Computer Graphics & VTK  9

Diffuse Lighting

Also known as Lambertian reflection

considers the angle of incidence of light on surface      

(angle between light and surface normal)

Result: lighting varies over surface with orientation to light

Object

Infinite point 

light source

O

n

L

n

c

n

n

c

O

L

O

L

=

=

=

Colour 

Object 

)

(

cos

 

Colour 

Light 

θ

R

c

θ

R

c

=L

c

O

c

cos

No dependence on 

camera angle!

Example: sphere

(lit from left)

Toby Breckon Computer Graphics & VTK  10

Specular Lighting

Direct reflections of light source off shiny 

object

specular intensity sp = shiny reflectance of object

Result: specular highlight on object

Object

O

n

R

= colour curve

R

= camera position

S (Reflection)

θ

Infinite point 

light source

L

n

No dependence on object colour.

R

c

 = L

c

O

c

[S•(­R

n

)]

sp

S = 2(cos 

θ)Ο

+ L

n

c n n c

O

L

O

L

=

=

=

Colour 

Object 

)

(

cos

 

Colour 

Light 

θ

α

Example: sphere

(lit from left)

Visualisation : Lecture 2

Combined Lighting Models

R

c

 = w

a

(ambient) + w

d

(diffuse) +w

s

(specular)

for relative weights  w

a

, w

d

, w

also specular power sp

+

+

=

Ambient

(colour)

Diffuse

(directional)

Specular

(highlights)

R

c

sp=100

sp=4

Interpolated shading (use Gourand or Phong)

Visualisation : Lecture 2

Surface Shape Perception ­ 1

3D surface of the skin 

from a medical scanner.

Diffuse lighting only.

(i.e. directional)

Facing light

Perpendicular to light

(4)

Toby Breckon Computer Graphics & VTK  13

Surface Shape Perception ­ 2

3D surface of the skin from a 

medical scanner.

Diffuse + specular lighting.

Specular Power = 4.0

Edge of highlight

Toby Breckon Computer Graphics & VTK  14

Surface Shape Perception ­ 3

3D surface of the skin from 

a medical scanner.

Diffuse + specular lighting.

Specular Power = 200.0

Edge of highlight

Visualisation : Lecture 2

Perception of Shape

Specular highlights

improve perception of surface shape features (e.g. nose)

... but only where the highlight occurs 

e.g. easier to see features at sides of noise with diffuse (middle)

Visualisation : Lecture 2

Other cues to shape

Interaction

Ability to rotate the shape is extremely 

powerful.

Allows perception of edge contours 

(silhouette) 

Texture

The motion/direction of lines or patterns

 

on the surface of the shape

Stereo

Viewing depth with 2 eyes

Stereo displays frequently used for visualisation

Display 'feels' more 3D

(5)

Toby Breckon Computer Graphics & VTK  17

Scene Coordinate Systems

Object A’s

Coordinate System

3D (x,y,z)

Object B’s

Coordinate System

3D (x,y,z)

Object Coordinates

World Coordinates

­Light Position

­Camera Position

­Object Position(s)

3D (x,y,z)

Object A’s

Transform

Objects B’s

Transform

Display transform

­Window size

­Position

2D (x,y)

Camera transform

­ 

4x4 Matrix (3D→2D)

­1

1

View Coordinates

1

­1

Display 

Coordinates

Object / World  co­ordinates: 

transformations and rotations in ℝ

3

Camera transform: 

3D→2D matrix 

transformation (perspective projection). 

Toby Breckon Computer Graphics & VTK  18

Camera Model

Position

View Up

View angle

Front Clipping Plane

Focal point

Direction of 

Projection

Prospective projection 

(3D world → 2D image plane rendering)

all rays into camera go through a common point

View Frustrum – 3D space viewable to camera

bound by clipping planes (front, back); by camera view angle (top, bottom)

clipping planes eliminate data that is too near or too distant from camera

Back Clipping Plane

View Frustrum

Visualisation : Lecture 2

VTK : in summary

Our provider of a computer graphics architecture for 

visualisation

VTK is a set of methods (toolkit) that implement a variety of 

visualisation operations

Implements a visualisation pipeline

Platform independent (we use linux, DICE)

Object­orientated visualisation

Program in C++ or Java or use an interpreted language such as 

Tcl/Tk or Python

VTK also implements basic tools for visualisation:

3D computer graphics output & basic interactive user input 

Visualisation : Lecture 2

Computer Graphics Objects in VTK

To convert a data structure into graphical object in VTK, 

use an object called a mapper

Controls graphics properties such as colour and shading 

Graphics objects in vtk are known as actors

Position, rotation and surface properties also specified by actor methods

transformation from object to world co­ordinates

Actors are rendered in the scene by the renderer object

Controls camera and lighting properties

The renderer draws to a render window object

Controls window size

Can display or capture to an image file

(6)

Toby Breckon Computer Graphics & VTK  21

Graphical Objects in VTK

Toby Breckon Computer Graphics & VTK  22

Example : drawing cone

Cone Source

The ‘Visualisation pipeline’ 

for this application

Cone Mapper

vtkPolyDataMapper

Polygons

Actor

Renderer

RenderWindow

Geometric 

representation

vtkConeSource

vtkActor

vtkRenderer

vtkRenderWindow

Visualisation : Lecture 2

VTK Objects : TCL / Java

­ TCL: Command with class name creates new object of that class

– Java : Object obj = new Object();

– Tcl : Object obj

– VTK is object­orientated; TCL itself is not

– A note on tcl/tk (tickle­talk), tcl/vtk ...

• TCL (Tool Command Language) is a dynamically allocated interpreted 

programming language

• Commonly used for GUI application with GUI toolkit TK ­ tcl/tk

• Here we are doing visualisation (rather than GUI) so we use VTK – 

although not generally known as tcl/vtk !

Visualisation : Lecture 2

Drawing a cone : TCL

# create a rendering window and renderer

vtkRenderer ren1

vtkRenderWindow renWin

renWin AddRenderer ren1

# create a cone geometry source object

vtkConeSource cone

cone SetResolution 8

# create mapper object and map cone

geometry

vtkPolyDataMapper coneMapper

coneMapper SetInput [cone GetOutput]

# create an actor object and set

# mapper

vtkActor coneActor

coneActor SetMapper coneMapper

# assign our actor to the renderer

ren1 AddActor coneActor

# render scene

(7)

Toby Breckon Computer Graphics & VTK  25

Drawing a cone : TCL Wrapper Code

catch {load vtktcl}

# load vtk package and vtk user interaction command package

package require vtk

package require vtkinteraction

...

# CODE FROM PREVIOUS SLIDE

...

Toby Breckon Computer Graphics & VTK  26

Drawing a cone : Java

public class Cone {

public static void main (String []args) {

// create an instance of vtkConeSource

vtkConeSource cone = new vtkConeSource();

cone.SetHeight( 3.0 );

cone.SetRadius( 1.0 );

cone.SetResolution( 8 );

// create vtkPolyDataMapper and map cone source

vtkPolyDataMapper coneMapper = new vtkPolyDataMapper();

coneMapper.SetInput( cone.GetOutput() );

Visualisation : Lecture 2

Drawing a cone : Java

// create actor and assign mapper

vtkActor coneActor = new vtkActor();

coneActor.SetMapper( coneMapper );

// create renderer and add actor

vtkRenderer ren1 = new vtkRenderer();

ren1.AddActor( coneActor );

// create render window and add renderer

vtkRenderWindow renWin = new vtkRenderWindow();

renWin.AddRenderer( ren1 );

}

Visualisation : Lecture 2

Drawing a cone : Java Boiler Plate Code

// We import the vtk wrapped classes first.

import vtk.*;

// Then we define our class.

public class Cone {

// In the static contructor we load in the native code (via JNI).

// The libraries must be in your path to work.

static {

System.loadLibrary("vtkCommonJava");

System.loadLibrary("vtkFilteringJava");

System.loadLibrary("vtkIOJava");

System.loadLibrary("vtkImagingJava");

System.loadLibrary("vtkGraphicsJava");

System.loadLibrary("vtkRenderingJava");

}

(8)

Toby Breckon Computer Graphics & VTK  29

TCL basics : variables

Variables

Are all strings

Set using 'set variable value’

Reference using $variable

Expression

Use expr to evaluate an expression

Print results to standard output with puts

useful for debugging

Toby Breckon Computer Graphics & VTK  30

TCL basics : variables

# Compute the circumference of a circle

set pi 3.14159

set radius 2

set area [expr $radius * $pi * 2.0]

puts $area

Visualisation : Lecture 2

TCL basics : loops

for loop : 3 arguments : {start } {end} {every}

# Example to print number 1­10 and their squares

for {set num 1} {$num <= 10} {incr num} {

set numsqr [expr $num*$num]

puts “$num => $numsqr”

}

while loop : 1 argument : {end condition}

# print numbers 1 to 10 

set x 0

while {$x<10} {

puts "x is $x"

incr x

}

Visualisation : Lecture 2

TCL basics : conditionals

Exactly the same as C :

if boolean then body1 else body2

­ both then and else are optional

e.g. :

if {$x == 0} then { 

puts “Only superheros, can divide by zeros!”

} else {

set slope [expr $y/$x]

}

(9)

Toby Breckon Computer Graphics & VTK  33

TCL basics : other

puts $varname

Writes a string to the console window

format formatstring value1 value2

Returns a string in the same manner as printf in C

Similarly ‘scan’ does the same as scanf in C

String operations performed by ‘string’

Dynamic arrays

Comments start with #

Toby Breckon Computer Graphics & VTK  34

Special Features of TCL/VTK interpreter

Special method : ListMethods.

Invoked in combination with an object name

Find out which methods the object has

Listed according to the inheritance hierarchy

Special command : ListInstances

Invoked in combination with a class name.

Lists all instances of a particular class

Special command : DeleteAllObjects

Clears the tcl/vtk interpreter for another session

Visualisation : Lecture 2

VTK : interaction

Create a new vtkRenderWindowInteractor

controls user interaction with VTK visualisation

vtkRenderWindowInteractor iren

Set the RenderWindow object that it will control

– iren SetRenderWindow renWin

Make the interactor active and start processing events

– iren Initialize

Tcl code is still processed even though event loop entered

Visualisation : Lecture 2

VTK : window interactor

Functions available 

(vtkRenderWindowInteractor)

:

Rotate ( left mouse button )

Zoom ( Right mouse button )

Pan ( left mouse + shift key )

‘w’ Draw as a wireframe mesh

‘s’ Draw as a surface mesh

‘r’ Reset camera view

‘u’ user defined command. Here, bring up window command box

iren SetUserMethod {wm deiconify .vtkInteract}

‘e’ exit

(10)

Toby Breckon Computer Graphics & VTK  37

On­line Resources

VTK

Manual: 

http://www.vtk.org/doc/release/4.2/html/

Examples: 

http://public.kitware.com/VTK/example­code.php

More examples: 

http://www.vtk.org/doc/release/4.2/html/pages.html

Everything else: 

http://www.vtk.org/

TCL

Manual: 

http://www.tcl.tk/man/tcl8.4/TclCmd/contents.htm

Online tutorial: 

http://www.tcl.tk/man/tcl8.5/tutorial/tcltutorial.html

Everything else: 

http://www.tcl.tk/

Software: see course web page (linux) or  

http://www.vtk.org/

N.B. DICE versions ­ vtk : 4.2.4 & tcl : 8.4.7­2

Toby Breckon Computer Graphics & VTK  38

Summary

Computer Graphics (basics)

representing object geometry as polygon meshes

illumination models (ambient, diffuse, specular)

camera model & projection (VTK)

VTK

Overview of VTK rendering pipeline

simple example in TCL and Java

basis of TCL programming language

VTK interactive visualisation

Next lecture: systems architectures for visualisation

References

Related documents

Supervisor of completed doctoral theses (year of doctoral degree) Petri Aaltonen (co-supervisor, Helsinki University of Technology, 2007) Katariina Ponteva (co-supervisor,

The objectives of this study were: (1) to survey the Republican River Valley and selected tributaries in Nebraska for potentially rare plant species (as listed by the

Sep 1, 2015 - This year, the nisse is coming early to Oregon Coast Community College, where a busy fall term brings gifts aplenty to our students and the communities we serve

Also in 2012, the Department of Broadcasting, Telecommunications, and Mass Media changed its name to Media Studies and Production while the Department of Strategic Communication

Attach your Two recent Passport Size Photographs, Attested copy of CNIC, Domicile (Copy), Education Certificates (Copy), Experience Certificates (Copy) and Original Bank

The set of indicators available in the dataset (for details, see Annex 4) is broadly organised around three topics: (1) inputs and output of the production function, including

GROUP OF THIRTY, FINANCIAL REFORM: A FRAMEWORK FOR STABILITY 29 (2009), available at http://www.group30.org/images/PDF/Financial Reform-A

The shaded boxes below illustrate the complete SAS program used to import the two necessary databases, merge the databases together, ensure the attachments and their