230 likes | 440 Views
3D-Pool Game Simulator. CS491B Aslan Neishaboori. Background . Simulation: CS area of study CS and other fields hand-in-hand Needs data Provides simulators. Background. Benefits: Prediction Unknown aspects of the study matter Cost effective. Background . 3D Graphics
E N D
3D-Pool Game Simulator CS491B Aslan Neishaboori Introduction to Java3D1
Background • Simulation: • CS area of study • CS and other fields hand-in-hand • Needs data • Provides simulators Introduction to Java3D2
Background • Benefits: • Prediction • Unknown aspects of the study matter • Cost effective Introduction to Java3D3
Background • 3D Graphics • One of important branches of CS • Java 3D • Involves advance OO programming Introduction to Java3D4
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 Java3D5
Objective: • Simple presentation • Accurate physics Introduction to Java3D6
Objectives • Add involving physical factors one by one • Start with main factors • Abstract less important factors Introduction to Java3D7
What are the factors? • Gravity • Cue • Friction • Velocity • Rotation, Spin • Elasticity of collisions • …. Introduction to Java3D8
Spin and Translation! Introduction to Java3D9
Linear and angular velocity +Friction! Introduction to Java3D10
Simplify: • Create a simple working model first • Add more functionality to that model Introduction to Java3D11
Code! • Geometry classes • Initialization classes • Auxiliary classes • Behavior classes • Collision detection classes Introduction to Java3D12
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 Java3D13
Content Branch View Branch Introduction to Java3D14
BG TG TG TG TG TG TG TG TG TG TG Content Branch Introduction to Java3D15
Actual code • TransformGroup + shape3D’s • BallTG() • CueTG() • tableGeometry() • TableTop() • Outlines() Introduction to Java3D16
Initializing other classes: • Initz_balls() • CompleteTable() • Init_Cue() Introduction to Java3D17
Transformations: • Translation • Scaling • Reflection • Rotation Introduction to Java3D18
3D Rotation The 3D rotation matrices about each coordinate: About x-axis (x-roll) About y-axis (y-roll) About z-axis (z-roll) Introduction to Java3D19
Behavior Classes: • StickMouseTranslate() • StickMouseRotate() • CueBallCollision() • KeyNavigatorBehavior() in pool1() class Introduction to Java3D20
Problems • JAVA 3D API is complex • Collision detection • Communication between live nodes Introduction to Java3D21
Final word • 3D pool covers the whole Java 3D • Good practice for OO programming • Open source / Online project • and…. Introduction to Java3D22
Thank you, Introduction to Java3D23