CS 354R: Computer Game Technology

Size: px
Start display at page:

Download "CS 354R: Computer Game Technology"

Transcription

1 CS 354R: Computer Game Technology Ogre Overview Fall 2017

2 Working with Ogre Ogre is a graphics engine not actually a game engine Things it has: Resource management Camera and animation support Input handling Rendering loop Things it doesn t have: Pre-existing game objects or object hierarchies Pre-existing game components Physics and simulation Networking support AI support 2

3 Resource Configurations resources.cfg contains directories of assets Scripts Meshes Textures GUI layouts Do not use environment variables Cannot search subdirectories 3

4 Resource and Scene Manager Resource Manager handles resource pool Index Look up Load Destroy Scene Manager handles scene geometry, objects and behaviors Spatial partitioning Culling Rendering 4

5 Initialize Configuration mroot = new Ogre::Root(mPluginsCfg); // Load resource paths from config file Ogre::ConfigFile cf; cf.load(mresourcescfg); // Parse all sections & settings in the file Ogre::ConfigFile::SectionIterator seci = cf.getsectioniterator(); Ogre::String secname, typename, archname; while (seci.hasmoreelements()) { secname = seci.peeknextkey(); Ogre::ConfigFile::SettingsMultiMap *settings = seci.getnext(); Ogre::ConfigFile::SettingsMultiMap::iterator i; for (i = settings->begin(); i!= settings->end(); ++i) { typename = i->first; archname = i->second; Ogre::ResourceGroupManager::getSingleton(). addresourcelocation(archname, typename, secname); // Show the configuration dialog and initialize the system if((mroot->restoreconfig() mroot->showconfigdialog())) { //If initialized, create a render window mwindow = mroot->initialise(true, Demo App"); else { return false; 5

6 Initialize Resource Mgr and Scene // Set default mipmap level (note: some APIs ignore this) Ogre::TextureManager::getSingleton().setDefaultNumMipmaps(5); // initialise all resource groups Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); // Create the SceneManager, in this case a generic one mscenemgr = mroot->createscenemanager("defaultscenemanager"); // Create a scene mscenemgr->setskybox(true, "Examples/MorningSkyBox", 5000, false); PlayingField* bcourt = new PlayingField(mSceneMgr); ball = new Ball(mSceneMgr); bcourt->addchild(ball->getnode()); ball->setplayingfield(bcourt); 6

7 What else do we need? 7

8 Camera Cameras have: Position LookAt Near plane Far plane Aspect ratio Cameras render out to a portion of the screen using a viewport (Silicon Graphics) 8

9 Setting up a Camera // Create the camera mcamera = mscenemgr->createcamera("playercam"); // Position it near front of the room mcamera->setposition(ogre::vector3(0.0f, 0.0f, 0.4f * bcourt->getlength())); // Look at the origin mcamera->lookat(ogre::vector3(0,0,0)); mcamera->setnearclipdistance(5); // create a default camera controller mcameraman = new OgreBites::SdkCameraMan(mCamera); // Create one viewport, entire window Ogre::Viewport* vp = mwindow->addviewport(mcamera); vp->setbackgroundcolour(ogre::colourvalue(0,0,0)); // Alter the camera aspect ratio to match the viewport mcamera->setaspectratio( Ogre::Real(vp->getActualWidth()) / Ogre::Real(vp->getActualHeight())); 9

10 Camera vs Camera Manager Cameras are tools for looking into the scene Provide mathematical information to OpenGL for drawing the scene Camera managers are tools for controlling camera position and orientation Handle mouse and keyboard input to camera Usually allow for first-person and orbital camera movements SdkCameraMan is part of the OgreBites sample framework Not natively available on the lab machines Other open source frameworks available Also possible to create your own! 10

11 Mouse and Keyboard Listeners OIS (Object-Oriented Input System) handles mouse and keyboard events Listener for each mouse, keyboard, joystick etc Listeners are protected functions Listeners take events as parameters One listener per device for performance reasons 11

12 Mouse and Keyboard Input #include <OISEvents.h> #include <OISInputManager.h> #include <OISKeyboard.h> #include <OISMouse.h> #include <OgreRenderWindow.h> #include <SdkTrays.h> #include <SdkCameraMan.h> class ControlListener : public OIS::KeyListener, public OIS::MouseListener { protected: OIS::InputManager* inputmanager; OIS::Mouse* mouse; OIS::Keyboard* keyboard; Ogre::RenderWindow* window; Ogre::Camera* camera; bool mshutdown; 12

13 Mouse and Keyboard Input cont d protected: // OIS::KeyListener virtual bool keypressed( const OIS::KeyEvent &arg ); virtual bool keyreleased( const OIS::KeyEvent &arg ); // OIS::MouseListener virtual bool mousemoved( const OIS::MouseEvent &arg ); virtual bool mousepressed( const OIS::MouseEvent &arg, OIS::MouseButtonID id ); virtual bool mousereleased( const OIS::MouseEvent &arg, OIS::MouseButtonID id ); public: BaseApplication(Ogre::RenderWindow* window); ~BaseApplication(); ; 13

14 Using Callbacks Events associated with a listener Buffer of events dispatched as callbacks Allow the programmer to react to changes in the system 14

15 Buffered Input Callbacks bool BaseApplication::keyPressed( const OIS::KeyEvent &arg ) { if (arg.key == OIS::KC_ESCAPE) { mshutdown = true; return true; bool BaseApplication::keyReleased(const OIS::KeyEvent &arg) { return true; bool BaseApplication::mouseMoved(const OIS::MouseEvent &arg) { return true; bool BaseApplication::mousePressed(const OIS::MouseEvent &arg, OIS::MouseButtonID id) { return true; bool BaseApplication::mouseReleased(const OIS::MouseEvent &arg, OIS::MouseButtonID id) { return true; 15

16 Using Callbacks What if other frameworks need to know about events? Example: Camera manager should change camera position based on mouse or keyboard input Needs a method that can take events from one framework and use it in its own framework Controller/GUI manager uses inject calls to take device input from callback and pass it back to controller/ GUI manager 16

17 Buffered Input Callbacks bool ControlListener::keyReleased( const OIS::KeyEvent &arg ) { cameramanager->injectkeyup(arg); return true; bool ControlListener::mouseMoved( const OIS::MouseEvent &arg ) { cameramanager->injectmousemove(arg); return true; bool ControlListener::mousePressed( const OIS::MouseEvent &arg, OIS::MouseButtonID id ) { cameramanager->injectmousedown(arg, id); return true; bool ControlListener::mouseReleased( const OIS::MouseEvent &arg, OIS::MouseButtonID id ) { cameramanager->injectmouseup(arg, id); return true; 17

18 Game Objects #include <Ogre.h> #include "PlayingField.h class Ball { protected: Ogre::SceneNode* rootnode; Ogre::Real bradius; Ogre::Vector3 bdirection; Ogre::Real bspeed; PlayingField* grounds; public: Ball(Ogre::SceneManager* scnmgr); ~Ball(); void move(const Ogre::FrameEvent& evt); Ogre::SceneNode* getnode() { return rootnode; void setplayingfield(playingfield * pf) { grounds = pf; ; 18

19 A Game Object #include <OgreEntity.h> #include <OgreSceneManager.h> #include "Ball.h Ball::Ball(Ogre::SceneManager* scnmgr) { Ogre::Entity* ball = scnmgr->createentity("sphere", "sphere.mesh"); ball->setmaterialname("ballcolor/cubemap"); ball->setcastshadows(true); rootnode = scnmgr->createscenenode("ball"); rootnode->attachobject(ball); rootnode->scale(0.1f,0.1f,0.1f); bradius = 10.0f; bdirection = Ogre::Vector3(1.0f, 2.0f, 3.0f); bdirection.normalise(); bspeed = 250.0f; void Ball::move(const Ogre::FrameEvent& evt) { Ogre::Vector3 bposition = rootnode->getposition(); if (bposition.y < -grounds->getheight()/2.0f + bradius && bdirection.y < 0.0f) bdirection.y = -bdirection.y; if (bposition.y > grounds->getheight()/2.0f - bradius && bdirection.y > 0.0f) bdirection.y = -bdirection.y; if (bposition.z < -grounds->getlength()/2.0f + bradius && bdirection.z < 0.0f) bdirection.z = -bdirection.z; if (bposition.z > grounds->getlength()/2.0f - bradius && bdirection.z > 0.0f) bdirection.z = -bdirection.z; if (bposition.x < -grounds->getwidth()/2.0f + bradius && bdirection.x < 0.0f) bdirection.x = -bdirection.x; if (bposition.x > grounds->getwidth()/2.0f - bradius && bdirection.x > 0.0f) bdirection.x = -bdirection.x; rootnode->translate(bspeed * evt.timesincelastframe * bdirection); 19

20 What s Missing? 20

21 Frame Listener Listener associated with frame events framestarted framerenderingqueued frameended Frame callbacks return true until rendering terminates Possible to register multiple FrameListeners framerenderingqueued called after rendering has been queued for GPU Good use of CPU cycles for changes in next frame 21

22 Rendering Loop class MyFrameListener : public Ogre::FrameListener { // Rendering loop mroot->startrendering(); bool MyFrameListener::frameRenderingQueued(const Ogre::FrameEvent& evt) { if(mwindow->isclosed()) return false; mcontrols->update(); if (mcontrols->exit()) return false; mgui->framerenderingqueued(evt); if (!mgui->isdialogvisible()) { // if dialog isn't up, then update the scene mcameraman->framerenderingqueued(evt); // Move the ball ball->move(evt); return true; 22

23 Unregistering OIS Should unregister OIS when the game program finishes How can we do this? WindowEventListener callbacks windowresized callback tracks window (screen) size windowclosed callback tracks window closing destroy OIS objects for window that created objects 23

24 Window Event Listener //Unattach OIS before window shutdown (very important under Linux) void MyWindowListener::windowClosed(Ogre::RenderWindow* rw) { //Only close for window that created OIS (the main window in these demos) if (rw == mwindow) { if (minputmanager) { minputmanager->destroyinputobject(mmouse); minputmanager->destroyinputobject(mkeyboard); OIS::InputManager::destroyInputSystem(mInputManager); minputmanager = 0; 24

CS 378: Computer Game Technology

CS 378: Computer Game Technology CS 378: Computer Game Technology Collision Detection and More Physics Spring 2012 University of Texas at Austin CS 378 Game Technology Don Fussell Initialize Configuration mroot = new Ogre::Root(mPluginsCfg);

More information

THE MATERIALS OF OTHER! LATE SUBMISSION WILL BE DEDUCTED BY

THE MATERIALS OF OTHER! LATE SUBMISSION WILL BE DEDUCTED BY 3D Game Programming: Programming Assignment One YOU WILL RECEIVE ZERO POINTS IF YOU COPY and PASTE THE MATERIALS OF OTHER! LATE SUBMISSION WILL BE DEDUCTED BY 30 points a day. In this assignment, you must

More information

User Interaction. User Interaction. Input devices. Input devices. Input devices GUIs and GUI design Event-driven programming 3D interaction

User Interaction. User Interaction. Input devices. Input devices. Input devices GUIs and GUI design Event-driven programming 3D interaction User Interaction User Interaction Input devices GUIs and GUI design Event-driven programming 3D interaction CS 465 lecture 19 2003 Steve Marschner 1 2003 Steve Marschner 2 Input devices Input devices Discrete

More information

The Application Stage. The Game Loop, Resource Management and Renderer Design

The Application Stage. The Game Loop, Resource Management and Renderer Design 1 The Application Stage The Game Loop, Resource Management and Renderer Design Application Stage Responsibilities 2 Set up the rendering pipeline Resource Management 3D meshes Textures etc. Prepare data

More information

Principles of Computer Game Design and Implementation. Lecture 5

Principles of Computer Game Design and Implementation. Lecture 5 Principles of Computer Game Design and Implementation Lecture 5 We already knew Introduction to this module History of video High-level information of a game Designing information for a game Execution

More information

CISC 1600 Lecture 2.2 Interactivity&animation in Processing

CISC 1600 Lecture 2.2 Interactivity&animation in Processing CISC 1600 Lecture 2.2 Interactivity&animation in Processing Topics: Interactivity: keyboard and mouse variables Interactivity: keyboard and mouse listeners Animation: vector graphics Animation: bitmap

More information

3. Creating a minimal ogre application, with explanations of each component don t skip the descriptions you ll regret it later!

3. Creating a minimal ogre application, with explanations of each component don t skip the descriptions you ll regret it later! Jason s Mostly-Useless Ogre-view Ogre 1.10 Cheat-Sheet Last Updated: 10/5/2017 I m putting this Ogre-view (aka Overview; reference: Trenton Daugherty) together in the hopes that tackling Ogre in ETGG3801/3802

More information

CISC 1600 Lecture 2.2 Interactivity&animation in Processing

CISC 1600 Lecture 2.2 Interactivity&animation in Processing CISC 1600 Lecture 2.2 Interactivity&animation in Processing Topics: Interactivity: keyboard and mouse variables Interactivity: keyboard and mouse listeners Animation: vector graphics Animation: bitmap

More information

Computer Graphics. Interaction

Computer Graphics. Interaction Computer Graphics Interaction Jordi Linares i Pellicer Escola Politècnica Superior d Alcoi Dep. de Sistemes Informàtics i Computació jlinares@dsic.upv.es http://www.dsic.upv.es/~jlinares processing allows

More information

UI Elements. If you are not working in 2D mode, you need to change the texture type to Sprite (2D and UI)

UI Elements. If you are not working in 2D mode, you need to change the texture type to Sprite (2D and UI) UI Elements 1 2D Sprites If you are not working in 2D mode, you need to change the texture type to Sprite (2D and UI) Change Sprite Mode based on how many images are contained in your texture If you are

More information

Qt in Education. The Graphics View Canvas

Qt in Education. The Graphics View Canvas Qt in Education The Graphics View Canvas. 2012 Digia Plc. The enclosed Qt Materials are provided under the Creative Commons Attribution-Share Alike 2.5 License Agreement. The full license text is available

More information

A B C D CS105 03a Interaction

A B C D CS105 03a Interaction Interaction Function Definition Events Built-in Variables CS105 03a Interaction 1 Which image is drawn by this code? strokeweight(10); stroke(0, 255, 0); // green line(99, 0, 0, 99); stroke(200, 0, 200);

More information

WebGL Seminar: O3D. Alexander Lokhman Tampere University of Technology

WebGL Seminar: O3D. Alexander Lokhman Tampere University of Technology WebGL Seminar: O3D Alexander Lokhman Tampere University of Technology What is O3D? O3D is an open source JavaScript API for creating rich, interactive 3D applications in the browser Created by Google and

More information

Game Programming with. presented by Nathan Baur

Game Programming with. presented by Nathan Baur Game Programming with presented by Nathan Baur What is libgdx? Free, open source cross-platform game library Supports Desktop, Android, HTML5, and experimental ios support available with MonoTouch license

More information

CSE 167: Introduction to Computer Graphics Lecture #4: Vertex Transformation

CSE 167: Introduction to Computer Graphics Lecture #4: Vertex Transformation CSE 167: Introduction to Computer Graphics Lecture #4: Vertex Transformation Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2013 Announcements Project 2 due Friday, October 11

More information

Introduction to Unreal Engine Blueprints for Beginners. By Chaven R Yenketswamy

Introduction to Unreal Engine Blueprints for Beginners. By Chaven R Yenketswamy Introduction to Unreal Engine Blueprints for Beginners By Chaven R Yenketswamy Introduction My first two tutorials covered creating and painting 3D objects for inclusion in your Unreal Project. In this

More information

CS 381 Computer Graphics, Fall 2008 Midterm Exam Solutions. The Midterm Exam was given in class on Thursday, October 23, 2008.

CS 381 Computer Graphics, Fall 2008 Midterm Exam Solutions. The Midterm Exam was given in class on Thursday, October 23, 2008. CS 381 Computer Graphics, Fall 2008 Midterm Exam Solutions The Midterm Exam was given in class on Thursday, October 23, 2008. 1. [4 pts] Drawing Where? Your instructor says that objects should always be

More information

the gamedesigninitiative at cornell university Lecture 14 2D Sprite Graphics

the gamedesigninitiative at cornell university Lecture 14 2D Sprite Graphics Lecture 14 Drawing Images Graphics Lectures SpriteBatch interface Coordinates and Transforms Drawing Perspective Camera Projections Drawing Primitives Color and Textures Polygons 2 Drawing Images Graphics

More information

Introduction to OpenGL. CS 4620 Balazs Kovacs, 2014 Daniel Schroeder, 2013 Pramook Khungurn, 2012

Introduction to OpenGL. CS 4620 Balazs Kovacs, 2014 Daniel Schroeder, 2013 Pramook Khungurn, 2012 Introduction to OpenGL CS 4620 Balazs Kovacs, 2014 Daniel Schroeder, 2013 Pramook Khungurn, 2012 Introduction Show how to produce graphics using OpenGL Introduce our framework for OpenGL programming OpenGL

More information

LOD and Occlusion Christian Miller CS Fall 2011

LOD and Occlusion Christian Miller CS Fall 2011 LOD and Occlusion Christian Miller CS 354 - Fall 2011 Problem You want to render an enormous island covered in dense vegetation in realtime [Crysis] Scene complexity Many billions of triangles Many gigabytes

More information

Viewport 2.0 API Porting Guide for Locators

Viewport 2.0 API Porting Guide for Locators Viewport 2.0 API Porting Guide for Locators Introduction This document analyzes the choices for porting plug-in locators (MPxLocatorNode) to Viewport 2.0 mostly based on the following factors. Portability:

More information

Graphics and Interaction Rendering pipeline & object modelling

Graphics and Interaction Rendering pipeline & object modelling 433-324 Graphics and Interaction Rendering pipeline & object modelling Department of Computer Science and Software Engineering The Lecture outline Introduction to Modelling Polygonal geometry The rendering

More information

User Guide. Vertex Texture Fetch Water

User Guide. Vertex Texture Fetch Water User Guide Vertex Texture Fetch Water Introduction What Is the Vertex Texture Fetch Water Sample? The sample demonstrates a technique to render small to medium bodies of water using Vertex Texture Fetch

More information

CSE 167: Lecture #4: Vertex Transformation. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2012

CSE 167: Lecture #4: Vertex Transformation. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2012 CSE 167: Introduction to Computer Graphics Lecture #4: Vertex Transformation Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2012 Announcements Project 2 due Friday, October 12

More information

Event Driven Programming

Event Driven Programming Event Driven Programming 1. Objectives... 2 2. Definitions... 2 3. Event-Driven Style of Programming... 2 4. Event Polling Model... 3 5. Java's Event Delegation Model... 5 6. How to Implement an Event

More information

The Shadow Rendering Technique Based on Local Cubemaps

The Shadow Rendering Technique Based on Local Cubemaps The Shadow Rendering Technique Based on Local Cubemaps Content 1. Importing the project package from the Asset Store 2. Building the project for Android platform 3. How does it work? 4. Runtime shadows

More information

Google SketchUp/Unity Tutorial Basics

Google SketchUp/Unity Tutorial Basics Software used: Google SketchUp Unity Visual Studio Google SketchUp/Unity Tutorial Basics 1) In Google SketchUp, select and delete the man to create a blank scene. 2) Select the Lines tool and draw a square

More information

Optimizing and Profiling Unity Games for Mobile Platforms. Angelo Theodorou Senior Software Engineer, MPG Gamelab 2014, 25 th -27 th June

Optimizing and Profiling Unity Games for Mobile Platforms. Angelo Theodorou Senior Software Engineer, MPG Gamelab 2014, 25 th -27 th June Optimizing and Profiling Unity Games for Mobile Platforms Angelo Theodorou Senior Software Engineer, MPG Gamelab 2014, 25 th -27 th June 1 Agenda Introduction ARM and the presenter Preliminary knowledge

More information

COMP3421 Computer Graphics

COMP3421 Computer Graphics COMP3421 Computer Graphics Introduction Angela Finlayson Email: angf@cse.unsw.edu.au Computer Graphics Algorithms to automatically render images from models. Light Camera hi mum Objects model image Computer

More information

Spatial Data Structures and Speed-Up Techniques. Tomas Akenine-Möller Department of Computer Engineering Chalmers University of Technology

Spatial Data Structures and Speed-Up Techniques. Tomas Akenine-Möller Department of Computer Engineering Chalmers University of Technology Spatial Data Structures and Speed-Up Techniques Tomas Akenine-Möller Department of Computer Engineering Chalmers University of Technology Spatial data structures What is it? Data structure that organizes

More information

CISC 1600, Lab 2.2: Interactivity in Processing

CISC 1600, Lab 2.2: Interactivity in Processing CISC 1600, Lab 2.2: Interactivity in Processing Prof Michael Mandel 1 Getting set up For this lab, we will again be using Sketchpad, a site for building processing sketches online using processing.js.

More information

Demo Scene Quick Start

Demo Scene Quick Start Demo Scene Quick Start 1. Import the Easy Input package into a new project. 2. Open the Sample scene. Assets\ootii\EasyInput\Demos\Scenes\Sample 3. Select the Input Source GameObject and press Reset Input

More information

Principles of Computer Game Design and Implementation. Lecture 11

Principles of Computer Game Design and Implementation. Lecture 11 Principles of Computer Game Design and Implementation Lecture 11 We already learned Vector operations Sum Subtraction Dot product Cross product A few others about jmonkey, eg. User input, camera, etc 2

More information

Java: Graphical User Interfaces (GUI)

Java: Graphical User Interfaces (GUI) Chair of Software Engineering Carlo A. Furia, Marco Piccioni, and Bertrand Meyer Java: Graphical User Interfaces (GUI) With material from Christoph Angerer The essence of the Java Graphics API Application

More information

Creating the Tilt Game with Blender 2.49b

Creating the Tilt Game with Blender 2.49b Creating the Tilt Game with Blender 2.49b Create a tilting platform. Start a new blend. Delete the default cube right click to select then press X and choose Erase Selected Object. Switch to Top view (NUM

More information

Building a Game with SceneKit

Building a Game with SceneKit Graphics and Games #WWDC14 Building a Game with SceneKit Session 610 Amaury Balliet Software Engineer 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written

More information

Godot engine Documentation

Godot engine Documentation Godot engine Documentation Release 1.1 authorname Apr 22, 2017 Contents i ii Godot engine Documentation, Release 1.1 Introduction Welcome to the Godot Engine documentation center. The aim of these pages

More information

Graphical User Interfaces (GUIs)

Graphical User Interfaces (GUIs) CMSC 132: Object-Oriented Programming II Graphical User Interfaces (GUIs) Department of Computer Science University of Maryland, College Park Model-View-Controller (MVC) Model for GUI programming (Xerox

More information

Rendering Objects. Need to transform all geometry then

Rendering Objects. Need to transform all geometry then Intro to OpenGL Rendering Objects Object has internal geometry (Model) Object relative to other objects (World) Object relative to camera (View) Object relative to screen (Projection) Need to transform

More information

the gamedesigninitiative at cornell university Lecture 6 Scene Graphs

the gamedesigninitiative at cornell university Lecture 6 Scene Graphs Lecture 6 Structure of a CUGL Application Main Application Scene Scene Models Root Models Root 2 Structure of a CUGL Application Main App Configuration Application Memory policy (future lecture) Scene

More information

Final Project. Houdini

Final Project. Houdini Final Project Houdini Houdini (Apprentice Edition) Download from https://www.sidefx.com/download/ install run etc need to create account Loading OBJ Loading OBJ hover mouse and hit tab Loading OBJ Loading

More information

Scene Management. Video Game Technologies 11498: MSc in Computer Science and Engineering 11156: MSc in Game Design and Development

Scene Management. Video Game Technologies 11498: MSc in Computer Science and Engineering 11156: MSc in Game Design and Development Video Game Technologies 11498: MSc in Computer Science and Engineering 11156: MSc in Game Design and Development Chap. 5 Scene Management Overview Scene Management vs Rendering This chapter is about rendering

More information

Creating and Triggering Animations

Creating and Triggering Animations Creating and Triggering Animations 1. Download the zip file containing BraidGraphics and unzip. 2. Create a new Unity project names TestAnimation and set the 2D option. 3. Create the following folders

More information

Unity Game Development

Unity Game Development Unity Game Development 1. Introduction to Unity Getting to Know the Unity Editor The Project Dialog The Unity Interface The Project View The Hierarchy View The Inspector View The Scene View The Game View

More information

Real-Time Graphics Architecture

Real-Time Graphics Architecture Real-Time Graphics Architecture Kurt Akeley Pat Hanrahan http://www.graphics.stanford.edu/courses/cs448a-01-fall Geometry Outline Vertex and primitive operations System examples emphasis on clipping Primitive

More information

CS 4620 Program 3: Pipeline

CS 4620 Program 3: Pipeline CS 4620 Program 3: Pipeline out: Wednesday 14 October 2009 due: Friday 30 October 2009 1 Introduction In this assignment, you will implement several types of shading in a simple software graphics pipeline.

More information

Profiling and Debugging Games on Mobile Platforms

Profiling and Debugging Games on Mobile Platforms Profiling and Debugging Games on Mobile Platforms Lorenzo Dal Col Senior Software Engineer, Graphics Tools Gamelab 2013, Barcelona 26 th June 2013 Agenda Introduction to Performance Analysis with ARM DS-5

More information

Art-based Rendering with Graftals

Art-based Rendering with Graftals : Interactive Computer Graphics Art-based Rendering with Graftals 1 Introduction Due: 3/13/10, 11:59 PM Between Ray in 123 and Photon Mapping that you just did, you ve now had a good deal of exposure to

More information

Blender - Python API #1

Blender - Python API #1 Blender - Python API #1 Serdar ARITAN Department of Computer Graphics Hacettepe University, Ankara, Turkey 1 Blender / Python API Blender is a free 3D graphics package 3D object modelling Materials and

More information

Working with Metal Overview

Working with Metal Overview Graphics and Games #WWDC14 Working with Metal Overview Session 603 Jeremy Sandmel GPU Software 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

PERFORMANCE OPTIMIZATIONS FOR AUTOMOTIVE SOFTWARE

PERFORMANCE OPTIMIZATIONS FOR AUTOMOTIVE SOFTWARE April 4-7, 2016 Silicon Valley PERFORMANCE OPTIMIZATIONS FOR AUTOMOTIVE SOFTWARE Pradeep Chandrahasshenoy, Automotive Solutions Architect, NVIDIA Stefan Schoenefeld, ProViz DevTech, NVIDIA 4 th April 2016

More information

CCSI 3161 Project Flight Simulator

CCSI 3161 Project Flight Simulator 1/11 CCSI 3161 Project Flight Simulator Objectives: To develop a significant OpenGL animation application. Due date: Dec 3 rd, Dec 1st, 11:59pm. No late submission will be accepted since the grades need

More information

3D Rendering Pipeline

3D Rendering Pipeline 3D Rendering Pipeline Reference: Real-Time Rendering 3 rd Edition Chapters 2 4 OpenGL SuperBible 6 th Edition Overview Rendering Pipeline Modern CG Inside a Desktop Architecture Shaders Tool Stage Asset

More information

What s New in Emulate3D. New Tag Grid

What s New in Emulate3D. New Tag Grid What s New in 2016 Emulate3D New Tag Grid The TagBrowser Tag Grid now appears in the main Demo3D properties pane, making it easier to see the tags bound to each component in the model, and to observe component

More information

if(input.getkey(keycode.rightarrow)) { this.transform.rotate(vector3.forward * 1);

if(input.getkey(keycode.rightarrow)) { this.transform.rotate(vector3.forward * 1); 1 Super Rubber Ball Step 1. Download and open the SuperRubberBall project from the website. Open the main scene. In it you will find a game track and a sphere as shown in Figure 1.1. The sphere has a Rigidbody

More information

EDAF80 Introduction to Computer Graphics. Seminar 1. Hierarchical Transformation. Michael Doggett. Some slides by Carl Johan Gribel,

EDAF80 Introduction to Computer Graphics. Seminar 1. Hierarchical Transformation. Michael Doggett. Some slides by Carl Johan Gribel, EDAF80 Introduction to Computer Graphics Seminar 1 Hierarchical Transformation Michael Doggett 2017 Some slides by Carl Johan Gribel, 2010-13 Today Hierarchical Transformation and Scene Graphs TRS - Translation,

More information

Easy Decal Version Easy Decal. Operation Manual. &u - Assets

Easy Decal Version Easy Decal. Operation Manual. &u - Assets Easy Decal Operation Manual 1 All information provided in this document is subject to change without notice and does not represent a commitment on the part of &U ASSETS. The software described by this

More information

CSE 167: Introduction to Computer Graphics Lecture #9: Visibility. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2018

CSE 167: Introduction to Computer Graphics Lecture #9: Visibility. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2018 CSE 167: Introduction to Computer Graphics Lecture #9: Visibility Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2018 Announcements Midterm Scores are on TritonEd Exams to be

More information

Widgets. Widgets Widget Toolkits. 2.3 Widgets 1

Widgets. Widgets Widget Toolkits. 2.3 Widgets 1 Widgets Widgets Widget Toolkits 2.3 Widgets 1 User Interface Widget Widget is a generic name for parts of an interface that have their own behavior: buttons, drop-down menus, spinners, file dialog boxes,

More information

iplots extreme Next-generation interactive graphics for analysis of large data Simon Urbanek AT&T Labs Statistics Research

iplots extreme Next-generation interactive graphics for analysis of large data Simon Urbanek AT&T Labs Statistics Research iplots extreme Next-generation interactive graphics for analysis of large data Simon Urbanek AT&T Labs Statistics Research Overview About interactive graphics iplots: next generation - why and how? New

More information

Exploring Processing

Exploring Processing Exploring Processing What is Processing? Easy-to-use programming environment Let s you edit, run, save, share all in one application Designed to support interactive, visual applications Something we ve

More information

CMSC427 Interac/ve programs in Processing: Polyline editor

CMSC427 Interac/ve programs in Processing: Polyline editor CMSC427 Interac/ve programs in Processing: Polyline editor Interactive programming Example: PaperSnowFlake hbp://rectangleworld.com/papersnowflake/ Big ideas today Event driven programming Object list

More information

John Hsu Nate Koenig ROSCon 2012

John Hsu Nate Koenig ROSCon 2012 John Hsu Nate Koenig ROSCon 2012 Outline What is Gazebo, and why should you use it Overview and architecture Environment modeling Robot modeling Interfaces Getting Help Simulation for Robots Towards accurate

More information

EE 4702 GPU Programming

EE 4702 GPU Programming fr 1 Final Exam Review When / Where EE 4702 GPU Programming fr 1 Tuesday, 4 December 2018, 12:30-14:30 (12:30 PM - 2:30 PM) CST Room 226 Tureaud Hall (Here) Conditions Closed Book, Closed Notes Bring one

More information

Speeding up your game

Speeding up your game Speeding up your game The scene graph Culling techniques Level-of-detail rendering (LODs) Collision detection Resources and pointers (adapted by Marc Levoy from a lecture by Tomas Möller, using material

More information

CS4621/5621 Fall Computer Graphics Practicum Intro to OpenGL/GLSL

CS4621/5621 Fall Computer Graphics Practicum Intro to OpenGL/GLSL CS4621/5621 Fall 2015 Computer Graphics Practicum Intro to OpenGL/GLSL Professor: Kavita Bala Instructor: Nicolas Savva with slides from Balazs Kovacs, Eston Schweickart, Daniel Schroeder, Jiang Huang

More information

Today. Rendering algorithms. Rendering algorithms. Images. Images. Rendering Algorithms. Course overview Organization Introduction to ray tracing

Today. Rendering algorithms. Rendering algorithms. Images. Images. Rendering Algorithms. Course overview Organization Introduction to ray tracing Today Rendering Algorithms Course overview Organization Introduction to ray tracing Spring 2009 Matthias Zwicker Universität Bern Rendering algorithms Problem statement Given computer representation of

More information

360 YouTube videos. Lab 04. Renato Mainetti Jacopo Essenziale.

360 YouTube videos. Lab 04. Renato Mainetti Jacopo Essenziale. 360 YouTube videos Renato Mainetti Jacopo Essenziale renato.mainetti@unimi.it jacopo.essenziale@unimi.it Lab 04 today is a good day to create some 360 videos What we have learned until now? Several techniques

More information

2: Introducing image synthesis. Some orientation how did we get here? Graphics system architecture Overview of OpenGL / GLU / GLUT

2: Introducing image synthesis. Some orientation how did we get here? Graphics system architecture Overview of OpenGL / GLU / GLUT COMP27112 Computer Graphics and Image Processing 2: Introducing image synthesis Toby.Howard@manchester.ac.uk 1 Introduction In these notes we ll cover: Some orientation how did we get here? Graphics system

More information

CS Computer Graphics: Intro to OpenGL

CS Computer Graphics: Intro to OpenGL CS 543 - Computer Graphics: Intro to OpenGL by Robert W. Lindeman gogo@wpi.edu (with help from Emmanuel Agu ;-) OpenGL Basics Last time: What is Computer Graphics? What is a graphics library What to expect

More information

CS Computer Graphics: Intro to OpenGL

CS Computer Graphics: Intro to OpenGL CS 543 - Computer Graphics: Intro to OpenGL by Robert W. Lindeman gogo@wpi.edu (with help from Emmanuel Agu ;-) OpenGL Basics Last time: What is Computer Graphics? What is a graphics library What to expect

More information

Vive Stereo Rendering Toolkit Developer s Guide

Vive Stereo Rendering Toolkit Developer s Guide Vive Stereo Rendering Toolkit Developer s Guide vivesoftware@htc.com Introduction Vive Stereo Rendering Toolkit provides drag-and-drop components for developers to create stereoscopic rendering effects

More information

Pick a number. Conditionals. Boolean Logic Relational Expressions Logical Operators Numerical Representation Binary. CS Conditionals 1

Pick a number. Conditionals. Boolean Logic Relational Expressions Logical Operators Numerical Representation Binary. CS Conditionals 1 Conditionals Boolean Logic Relational Expressions Logical Operators Numerical Representation Binary CS105 04 Conditionals 1 Pick a number CS105 04 Conditionals 2 Boolean Expressions An expression that

More information

Animation Essentially a question of flipping between many still images, fast enough

Animation Essentially a question of flipping between many still images, fast enough 33(70) Information Coding / Computer Graphics, ISY, LiTH Animation Essentially a question of flipping between many still images, fast enough 33(70) Animation as a topic Page flipping, double-buffering

More information

CS148: Maya Lecture. October 9th, 2017 David Hyde

CS148: Maya Lecture. October 9th, 2017 David Hyde CS148: Maya Lecture October 9th, 2017 David Hyde Outline Rendering: A Bird s Eye View 3D Art Tools Maya Outline Demo Rendering: A Bird s Eye View AND WHERE DOES CS148 FIT IN? Image: CS148 2015 Scanline

More information

Widgets. Widgets Widget Toolkits. User Interface Widget

Widgets. Widgets Widget Toolkits. User Interface Widget Widgets Widgets Widget Toolkits 2.3 Widgets 1 User Interface Widget Widget is a generic name for parts of an interface that have their own behavior: buttons, drop-down menus, spinners, file dialog boxes,

More information

Today. Rendering algorithms. Rendering algorithms. Images. Images. Rendering Algorithms. Course overview Organization Introduction to ray tracing

Today. Rendering algorithms. Rendering algorithms. Images. Images. Rendering Algorithms. Course overview Organization Introduction to ray tracing Today Rendering Algorithms Course overview Organization Introduction to ray tracing Spring 2010 Matthias Zwicker Universität Bern Rendering algorithms Problem statement Given computer representation of

More information

Model-view-controller View hierarchy Observer

Model-view-controller View hierarchy Observer -view-controller hierarchy Fall 2004 6831 UI Design and Implementation 1 Fall 2004 6831 UI Design and Implementation 2!"# Separation of responsibilities : application state Maintains application state

More information

CSE 167: Introduction to Computer Graphics Lecture #11: Visibility Culling

CSE 167: Introduction to Computer Graphics Lecture #11: Visibility Culling CSE 167: Introduction to Computer Graphics Lecture #11: Visibility Culling Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2017 Announcements Project 3 due Monday Nov 13 th at

More information

CISC 1600, Lab 3.2: Interactivity in Processing

CISC 1600, Lab 3.2: Interactivity in Processing CISC 1600, Lab 3.2: Interactivity in Processing Prof Michael Mandel 1 Getting set up For this lab, we will be using OpenProcessing, a site for building processing sketches online using processing.js. 1.1.

More information

CSE 167: Introduction to Computer Graphics Lecture 11: Scene Graph 2. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2013

CSE 167: Introduction to Computer Graphics Lecture 11: Scene Graph 2. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2013 CSE 167: Introduction to Computer Graphics Lecture 11: Scene Graph 2 Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2013 Announcements Homework project #5 due Nov. 8 th at 1:30pm

More information

Lecture 08: Hierarchical Modeling with Scene Graphs

Lecture 08: Hierarchical Modeling with Scene Graphs Lecture 08: Hierarchical Modeling with Scene Graphs CSE 40166 Computer Graphics Peter Bui University of Notre Dame, IN, USA November 2, 2010 Symbols and Instances Objects as Symbols Model world as a collection

More information

Game Design Unity Workshop

Game Design Unity Workshop Game Design Unity Workshop Activity 2 Goals: - Creation of small world - Creation of character - Scripting of player movement and camera following Load up unity Build Object: Mini World and basic Chase

More information

Example Programs. COSC 3461 User Interfaces. GUI Program Organization. Outline. DemoHelloWorld.java DemoHelloWorld2.java DemoSwing.

Example Programs. COSC 3461 User Interfaces. GUI Program Organization. Outline. DemoHelloWorld.java DemoHelloWorld2.java DemoSwing. COSC User Interfaces Module 3 Sequential vs. Event-driven Programming Example Programs DemoLargestConsole.java DemoLargestGUI.java Demo programs will be available on the course web page. GUI Program Organization

More information

Game Architecture Revisited

Game Architecture Revisited Lecture 8 Game Architecture Revisited Recall: The Game Loop 60 times/s = 16.7 ms Update Draw Receive player input Process player actions Process NPC actions Interactions (e.g. physics) Cull non-visible

More information

Introduction to 2D Graphics

Introduction to 2D Graphics Introduction to 2D Graphics Using OpenGL 1/32 Why Learn About OpenGL? A well-known industry standard for real-time 2D and 3D computer graphics Available on most platforms Desktop operating systems, mobile

More information

Lewis Weaver. Nell Waliczek. Software Engineering Lead. Program github.

Lewis Weaver. Nell Waliczek. Software Engineering Lead. Program  github. Nell Waliczek Software Engineering Lead Lewis Weaver Program Manager @NellWaliczek github.com/nellwaliczek @lew_weav github.com/leweaver Mixed Reality on the web using WebVR Available October 17 th WebVR

More information

Graphics Programming. Computer Graphics, VT 2016 Lecture 2, Chapter 2. Fredrik Nysjö Centre for Image analysis Uppsala University

Graphics Programming. Computer Graphics, VT 2016 Lecture 2, Chapter 2. Fredrik Nysjö Centre for Image analysis Uppsala University Graphics Programming Computer Graphics, VT 2016 Lecture 2, Chapter 2 Fredrik Nysjö Centre for Image analysis Uppsala University Graphics programming Typically deals with How to define a 3D scene with a

More information

Many rendering scenarios, such as battle scenes or urban environments, require rendering of large numbers of autonomous characters.

Many rendering scenarios, such as battle scenes or urban environments, require rendering of large numbers of autonomous characters. 1 2 Many rendering scenarios, such as battle scenes or urban environments, require rendering of large numbers of autonomous characters. Crowd rendering in large environments presents a number of challenges,

More information

CS 251 Intermediate Programming GUIs: Event Listeners

CS 251 Intermediate Programming GUIs: Event Listeners CS 251 Intermediate Programming GUIs: Event Listeners Brooke Chenoweth University of New Mexico Fall 2017 What is an Event Listener? A small class that implements a particular listener interface. Listener

More information

CS 4204 Computer Graphics

CS 4204 Computer Graphics CS 4204 Computer Graphics GLUT (Continue) More Interactions Yong Cao Virginia Tech References: Interactive Computer Graphics, Fourth Edition, Ed Angle Orthographical Projection Synthetic camera model View

More information

About the FBX Exporter package

About the FBX Exporter package About the FBX Exporter package Version : 1.3.0f1 The FBX Exporter package provides round-trip workflows between Unity and 3D modeling software. Use this workflow to send geometry, Lights, Cameras, and

More information

Dr. House Developer Documentation

Dr. House Developer Documentation Dr. House Developer Documentation This application is a basic graphical user interface framework for experiments on architectural meshes. The meshes are displayed in the form of wires or polygons inside

More information

Hardware Accelerated Graphics for High Performance JavaFX Mobile Applications

Hardware Accelerated Graphics for High Performance JavaFX Mobile Applications Hardware Accelerated Graphics for High Performance JavaFX Mobile Applications Pavel Petroshenko, Sun Microsystems Jan Valenta, Sun Microsystems Jerry Evans, Sun Microsystems Goal of this Session Demonstrate

More information

OpenGL refresher. Advanced Computer Graphics 2012

OpenGL refresher. Advanced Computer Graphics 2012 Advanced Computer Graphics 2012 What you will see today Outline General OpenGL introduction Setting up: GLUT and GLEW Elementary rendering Transformations in OpenGL Texture mapping Programmable shading

More information

CHAPTER 1 Graphics Systems and Models 3

CHAPTER 1 Graphics Systems and Models 3 ?????? 1 CHAPTER 1 Graphics Systems and Models 3 1.1 Applications of Computer Graphics 4 1.1.1 Display of Information............. 4 1.1.2 Design.................... 5 1.1.3 Simulation and Animation...........

More information

EE , GPU Programming

EE , GPU Programming EE 4702-1, GPU Programming When / Where Here (1218 Patrick F. Taylor Hall), MWF 11:30-12:20 Fall 2017 http://www.ece.lsu.edu/koppel/gpup/ Offered By David M. Koppelman Room 3316R Patrick F. Taylor Hall

More information

Chapter 1- The Blender Interface

Chapter 1- The Blender Interface Chapter 1- The Blender Interface The Blender Screen Years ago, when I first looked at Blender and read some tutorials I thought that this looked easy and made sense. After taking the program for a test

More information

Game Design Report appendices

Game Design Report appendices Lokaverkefni 2017 Háskólinn í Reykjavík SUPER-COLLOSAL TITAN WARFARE Game Design Report appendices Hermann Ingi Ragnarsson Jón Böðvarsson Örn Orri Ólafsson Appendix A - Assets & sounds 3D Assets Following

More information

CSE 167: Introduction to Computer Graphics Lecture #10: View Frustum Culling

CSE 167: Introduction to Computer Graphics Lecture #10: View Frustum Culling CSE 167: Introduction to Computer Graphics Lecture #10: View Frustum Culling Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2015 Announcements Project 4 due tomorrow Project

More information