introduction to java3d 1 3d-pool game simulator cs491b aslan neishaboori
Post on 21-Dec-2015
231 views
TRANSCRIPT
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,