Basic 3D Graphics Chapter 5. Bird’s Eye View Basic 3D Graphics –Basic concepts of 3D graphics,...

Post on 24-Dec-2015

227 views 3 download

Tags:

Transcript of Basic 3D Graphics Chapter 5. Bird’s Eye View Basic 3D Graphics –Basic concepts of 3D graphics,...

Basic 3D Graphics

Chapter 5

2

Bird’s Eye View Basic 3D Graphics

– Basic concepts of 3D graphics, rendering pipeline, Java 3D programming, scene graph, background, bounds, and making changes in a live scene graph

Graphics Contents Geometric Transformation Views

3

Objectives To describe the 3D rendering process To present an overview of Java 3D programs To define Java 3D scene graph To classify components of a scene graph To apply background nodes To understand and apply bounds objects To make changes in live scene graphs

4

Key Classes and Methods (1/2) com.sun.j3d.util.applet.Mainframe – A utility class to display an applet in a frame. javax.media.j3d.VirtualUniverse – A class encapsulating a coordinate space of the

entire virtual universe. javax.media.j3d.Locale – A class defining a coordinate space with float data type

anchored in the virtual universe. javax.media.j3d.HiResCoord – A fixed-point data type to represent high-resolution

coordinates of the virtual universe. com.sun.j3d.util.universe.SimipleUniverse – A convenience class with a default

implementation of the virtual universe, a locale, and a view branch of the scene graph.

javax.media.j3d.SceneGraphObject – An abstract class served as the root class for all scene-graph elements.

javax.media.j3d.Node – A class for nodes in a scene graph. javax.media.j3d.NodeComponent – A class for node components in a scene graph. javax.media.j3d.Group – A class for group nodes in a scene graph. javax.media.j3d.Leaf – A class for leaf nodes in a scene graph.

5

Key Classes and Methods (2/2) javax.media.j3d.SceneGraphObject.setCapability(int) – A method to allow certain

manipulations of the object in a live scene graph. javax.media.j3d.Group.addChild(Node) – A method to add child nodes in a scene

graph. javax.media.j3d.branchGroup – A special type of group nodes that can be attached to

locale. javax.media.j3d.branchGroup.compile() – A method to compile the scene graph to

improve the performance. javax.media.j3d.background – A leaf node defining the background color, image, and

geometry of a scene. javax.media.j3d.Bounds – A node-component class encapsulating a spatial volume that

is used by environmental nodes to limit their scope of activation. javax.media.j3d.boundingLeaf – A leaf class encapsulating a spatial volume that is used

by environmental nodes to limit their scope of activation. javaxmedia.j3d.BoundingBox – A class encapsulating box-shaped bounds. javax.media.j3d.BoundingSphere – A class encapsulating spherical bounds. javax.media.j3d.BoundingPolytope – A class encapsulating polytope bounds.

6

Key Terms Geometry – A structural definition of a visual object. Appearance – A collection of rendering attributes of a visual object. DAG (directed acyclic graph) – A directed graph with no directed

cycles. Scene graph – A DAG specifying the graph scene to be rendered. Tree – A graph formed by recursively adding distinct child nodes. Leaf node – A node in a tree that has children. Internal node – A node in a tree that has children. Primitive – A basic visual object that may be used to build a model. Capability bit – A flag in SceneGraphObject that gives

permission to performing a specific operation in a live scene graph.

7

3D Model and View

World Space Image

Light

Visual Object

Viewer

8

Rendering Considerations Geometry of the graphics objects Location and position of the objects Geometric transformations applied to objects and views Material properties and texture of the objects Lights and their characteristics Type of projections in a view View position, field of view, and other properties Illumination and shading models Dynamic behaviors of various components Reactions to the user inputs

9

Java 3D Overview

Automatic rendering Modeling with a scene graph Object oriented

Source

A Java 3D Hello program

10

Scene Graph: DAG

a

c

b

d

e f

A digraph

a

c

b

d

e f

A DAG A tree

a

c b d

e f g

h

11

Scene Graph: Legend Virtual Universe

Locale

Group Node

Leaf Node

Node Component

Other Object

Parent-Child Link

Reference

12

Scene Graph

13

Scene Graph: Classes

SceneGraphObject

Node

NodeComponent

Group

Leaf

VirtualUniverse

Locale

SimpleUniverse

14

Superstructure VirtualUniverse – the universe HiResCoord – 256bit fixed point numbers Locale – a “smaller” space

15

Group Nodes

BranchGroup OrderedGroup Primitive SharedGroup Swith TransformGroup

16

Leaf Nodes

Leaf

AlternateAppearance

Background

Fog

Clip

BoundingLeaf

Behavior

Light

Link

ModelClip

SoundScape

Sound

Shape3D

Morph

ViewPlatform

17

Node Components

NodeComponent

Alpha

Appearance

Geometry

DepthComponent

ColoringAttributes

AuralAttributes

ImageComponent

LineAttributes

PolygonAttributes

PointAttributes

MediaContainer

Material

RenderingAttributes

TexCoordGeneration

TransparencyAttributes

TextureUnitState

TextureAttributes

Texture

Font3D

18

Scene Graph

The Java 3D “Hello” program

View Canvas3D

BG

TG

Physical Body

Physical Environment

ViewPlatform

BG

TG

Light

SimpleUniverse

Shape3D

Text3D Appearance

Material

Bounds

19

Use SimpleUniverse Create a Canvas3D object Create a SimpleUniverse object Add content branch

20

Do It Yourself

Create superstructure– VirtualUniverse– Locale

Create the view branch– BranchGroup– TransformGroup– ViewPlatform– View– PhysicalBody– PhysicalEnvironment

Source

21

Background Default background: black Change background with the Background node

Source

Background()Background(Color3f color)Background(float r, float g, float b)Background(ImageComponent2D image)Background(BranchGroup geometry)

22

Bounds Environmental nodes need to be limited by

bounds Two ways:

– Bounds, node component– BoundingLeaf, node

Bounds

BoundingBox

BoundingSphere

BoundingPolytope

Source

23

Live Scene Graph A branch is live when attached to Locale Compile may improve performance Set capability bits explicitly to change attributes

in a live scene graph

Source

public final void setCapability(int bit)

24

Summary We discuss the fundamental concepts of 3D computer graphics and the basic architecture of

the Java 3D system. In a 3D graphics system, a virtual world is built to model a 3D graphics scene. The model is

viewed from a particular perspective to produce a rendering of the scene. The Java 3D API is built on the key concept of scene graphs. A scene graph incorporates all

the graphics descriptions and attributes of a scene to be rendered into a single data structure.

The rules for constructing the scene graphs and their building blocks are introduced. A scene graph is a DAG, with nodes being objects from classes of superstructures, nodes, and node components.

The overall structure of a Java 3D program is presented. By using a scene graph and its related objects, we can build a 3D graphics model and let Java 3D render the scene automatically.

The background of a scene can be change using the Background leaf node. Environmental nodes such as Light and Background need to set bounds to limit their influence in rendering. Bounds and BoundingLeaf objects are two ways of setting bounds.

A branch graph can be compiled to improve rendering efficiency. A component of a live scene graph can be modified only if appropriate capability bits are set.