Introduction to Java3D 1 3D-Pool Game Simulator CS491B Aslan Neishaboori

Preview:

Citation preview

Introduction to Java3D 1

3D-Pool Game Simulator

CS491B

Aslan Neishaboori

Introduction to Java3D 2

Background Simulation: CS area of study CS and other fields hand-in-hand Needs data Provides simulators

Introduction to Java3D 3

Background Benefits: Prediction Unknown aspects of the study matter Cost effective

Introduction to Java3D 4

Background 3D Graphics One of important branches of CS Java 3D Involves advance OO programming

Introduction to Java3D 5

3D pool Simulator The data is provided

The physics of the game is known 3D Graphics

Somewhere to start! Pool has a simple Geometry

Introduction to Java3D 6

Objective: Simple presentation Accurate physics

Introduction to Java3D 7

Objectives Add involving physical factors one by one Start with main factors Abstract less important factors

Introduction to Java3D 8

What are the factors? Gravity Cue Friction Velocity Rotation, Spin Elasticity of collisions ….

Introduction to Java3D 9

Spin and Translation!

Introduction to Java3D 10

Linear and angular velocity +Friction!

Introduction to Java3D 11

Simplify: Create a simple working model first Add more functionality to that model

Introduction to Java3D 12

Code! Geometry classes Initialization classes Auxiliary classes Behavior classes Collision detection classes

Introduction to Java3D 13

Scene Graph? A scene graph is a tree-like data structure

that stores, organizes, and renders 3D scene information (3D objects, materials, lights, behaviours ...). It is not a tree It has nodes and arcs (connects the nodes) Nodes are java classes

Introduction to Java3D 14

Content Branch View Branch

Introduction to Java3D 15

BG

TG

TG TG TG TG

TG

TG

TG

TG

TG

Content Branch

Introduction to Java3D 16

Actual code TransformGroup + shape3D’s

BallTG() CueTG() tableGeometry() TableTop() Outlines()

Introduction to Java3D 17

Initializing other classes: Initz_balls() CompleteTable() Init_Cue()

Introduction to Java3D 18

Transformations: Translation Scaling

Reflection Rotation

Introduction to Java3D 19

3D RotationThe 3D rotation matrices about each coordinate:

1

0

0

0

0

cos ( )

sin ( )

0

0

sin ( )

cos ( )

0

0

0

0

1

About x-axis (x-roll)

cos ( )

0

sin ( )

0

0

1

0

0

sin ( )

0

cos ( )

0

0

0

0

1

About y-axis (y-roll)

cos ( )

sin ( )

0

0

sin ( )

cos ( )

0

0

0

0

1

0

0

0

0

1

About z-axis (z-roll)

Introduction to Java3D 20

Behavior Classes: StickMouseTranslate() StickMouseRotate() CueBallCollision() KeyNavigatorBehavior() in pool1() class

Introduction to Java3D 21

Problems JAVA 3D API is complex Collision detection Communication between live nodes

Introduction to Java3D 22

Final word 3D pool covers the whole Java 3D Good practice for OO programming Open source / Online project and….

Introduction to Java3D 23

Thank you,