The document discusses JavaTM Platform, Micro Edition Part 8 – Mobile 3D Graphics, which defines the Mobile 3D Graphics API (JSR 184) for creating 3D graphics on Java ME-powered mobile devices. JSR 184 allows developers to load 3D content from files into scene graphs and render them using classes like Graphics3D and World. The API provides both immediate and retained rendering modes as well as tools for creating, loading, and modifying 3D scenes programmatically or from model files.
Project Wonderland is a 100% Java, open-source toolkit for creating 3D immersive virtual worlds. It was developed by Sun Microsystems Laboratories to improve business collaboration and distance education by enhancing social interaction and a sense of presence through immersion in a 3D space. The toolkit allows users to build virtual worlds for applications such as training, simulation, collaboration, teaching, learning, and data visualization.
2 track kinect@Bicocca - hardware e funzinamentoMatteo Valoriani
The document discusses the Microsoft Kinect sensor and its capabilities. It provides information on the Kinect's resolutions for color, depth and skeletal tracking. It compares the Microsoft Kinect SDK to the OpenNI SDK. It also provides an overview of getting started with the Kinect SDK and examples of basic Kinect API usage in C# for discovering sensors, managing the sensor state, retrieving data, and controlling the tilt motor.
The document discusses LG's 3D technology for mobile devices called Real3D. It promotes the LG Optimus 3D series which offers 3D viewing without glasses. It describes LG's Real3D Engine which allows 3D content creation and sharing. Developers can use the Real3D SDK to enable 3D capabilities in their Android applications.
LightWave 3D 11 is a 3D modeling, rendering and animation software. It offers features like instancing for mass object duplication, Bullet physics engine for realistic simulations, fracture tools for breaking 3D objects, flocking tools for natural crowd behaviors, and iridescent car paint shaders for realistic materials. LightWave 11 also enhances its interchange with ZBrush for sculpting details and improves its rendering tools and user interface for faster workflows.
SIGGRAPH Asia 2012: GPU-accelerated Path RenderingMark Kilgard
Presented at SIGGRAPH Asia 2012 in Singapore on Friday, 30 November 14:15 - 16:00 during the "Points and Vectors" session.
Find the paper at http://developer.nvidia.com/game/gpu-accelerated-path-rendering or on Slideshare.
For thirty years, resolution-independent 2D standards (e.g. PostScript, SVG) have relied largely on CPU-based algorithms for the filling and stroking of paths. Learn about our approach to accelerate path rendering with our GPU-based "Stencil, then Cover" programming interface. We've built and productized our OpenGL-based system.
The document discusses Alternativa3D, a 3D engine for Flash. It can be used to create 3D games and business applications. It features include a hierarchy system, animation, lighting effects, and collision detection. Alternativa3D has advantages over other Flash 3D engines like high performance and memory optimization. Developers can also use the full AlternativaPlatform which includes the 3D engine, tools, and a server for real-time applications. Licensing is available for individual, commercial, and non-commercial use. Technological partnerships are also offered to help produce 3D content and applications.
2008 brokerage 04 smart vision system [compatibility mode]imec.archive
Smart vision systems embed intelligence through advanced image processing to enhance visual experiences, improve interactions, and facilitate decisions. They require increasingly complex algorithms to perform tasks like 3D reconstruction, gesture recognition, and event detection. These algorithms must be matched to diverse platform architectures with different performance and power constraints. Successful system design requires matching applications, algorithms, and architectures. The document discusses examples including 3D video interpolation, eye-gaze corrected video chatting, and a 3D camera prototype for elderly monitoring. It concludes that IBBT brings together competences in applications, algorithms, and architectures to enable new smart vision systems.
SIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and BeyondMark Kilgard
Location: Conference Hall K, Singapore EXPO
Date: Thursday, November 29, 2012
Time: 11:00 AM - 11:50 PM
Presenter: Mark Kilgard (Principal Software Engineer, NVIDIA, Austin, Texas)
Abstract: Attend this session to get the most out of OpenGL on NVIDIA Quadro and GeForce GPUs. Learn about the new features in OpenGL 4.3, particularly Compute Shaders. Other topics include bindless graphics; Linux improvements; and how to best use the modern OpenGL graphics pipeline. Learn how your application can benefit from NVIDIA's leadership driving OpenGL as a cross-platform, open industry standard.
Topic Areas: Computer Graphics; Development Tools & Libraries; Visualization; Image and Video Processing
Level: Intermediate
Project Wonderland is a 100% Java, open-source toolkit for creating 3D immersive virtual worlds. It was developed by Sun Microsystems Laboratories to improve business collaboration and distance education by enhancing social interaction and a sense of presence through immersion in a 3D space. The toolkit allows users to build virtual worlds for applications such as training, simulation, collaboration, teaching, learning, and data visualization.
2 track kinect@Bicocca - hardware e funzinamentoMatteo Valoriani
The document discusses the Microsoft Kinect sensor and its capabilities. It provides information on the Kinect's resolutions for color, depth and skeletal tracking. It compares the Microsoft Kinect SDK to the OpenNI SDK. It also provides an overview of getting started with the Kinect SDK and examples of basic Kinect API usage in C# for discovering sensors, managing the sensor state, retrieving data, and controlling the tilt motor.
The document discusses LG's 3D technology for mobile devices called Real3D. It promotes the LG Optimus 3D series which offers 3D viewing without glasses. It describes LG's Real3D Engine which allows 3D content creation and sharing. Developers can use the Real3D SDK to enable 3D capabilities in their Android applications.
LightWave 3D 11 is a 3D modeling, rendering and animation software. It offers features like instancing for mass object duplication, Bullet physics engine for realistic simulations, fracture tools for breaking 3D objects, flocking tools for natural crowd behaviors, and iridescent car paint shaders for realistic materials. LightWave 11 also enhances its interchange with ZBrush for sculpting details and improves its rendering tools and user interface for faster workflows.
SIGGRAPH Asia 2012: GPU-accelerated Path RenderingMark Kilgard
Presented at SIGGRAPH Asia 2012 in Singapore on Friday, 30 November 14:15 - 16:00 during the "Points and Vectors" session.
Find the paper at http://developer.nvidia.com/game/gpu-accelerated-path-rendering or on Slideshare.
For thirty years, resolution-independent 2D standards (e.g. PostScript, SVG) have relied largely on CPU-based algorithms for the filling and stroking of paths. Learn about our approach to accelerate path rendering with our GPU-based "Stencil, then Cover" programming interface. We've built and productized our OpenGL-based system.
The document discusses Alternativa3D, a 3D engine for Flash. It can be used to create 3D games and business applications. It features include a hierarchy system, animation, lighting effects, and collision detection. Alternativa3D has advantages over other Flash 3D engines like high performance and memory optimization. Developers can also use the full AlternativaPlatform which includes the 3D engine, tools, and a server for real-time applications. Licensing is available for individual, commercial, and non-commercial use. Technological partnerships are also offered to help produce 3D content and applications.
2008 brokerage 04 smart vision system [compatibility mode]imec.archive
Smart vision systems embed intelligence through advanced image processing to enhance visual experiences, improve interactions, and facilitate decisions. They require increasingly complex algorithms to perform tasks like 3D reconstruction, gesture recognition, and event detection. These algorithms must be matched to diverse platform architectures with different performance and power constraints. Successful system design requires matching applications, algorithms, and architectures. The document discusses examples including 3D video interpolation, eye-gaze corrected video chatting, and a 3D camera prototype for elderly monitoring. It concludes that IBBT brings together competences in applications, algorithms, and architectures to enable new smart vision systems.
SIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and BeyondMark Kilgard
Location: Conference Hall K, Singapore EXPO
Date: Thursday, November 29, 2012
Time: 11:00 AM - 11:50 PM
Presenter: Mark Kilgard (Principal Software Engineer, NVIDIA, Austin, Texas)
Abstract: Attend this session to get the most out of OpenGL on NVIDIA Quadro and GeForce GPUs. Learn about the new features in OpenGL 4.3, particularly Compute Shaders. Other topics include bindless graphics; Linux improvements; and how to best use the modern OpenGL graphics pipeline. Learn how your application can benefit from NVIDIA's leadership driving OpenGL as a cross-platform, open industry standard.
Topic Areas: Computer Graphics; Development Tools & Libraries; Visualization; Image and Video Processing
Level: Intermediate
Nearly all of today's PC and console games use 3D graphics. With mobile phones getting more and more powerful and some devices even boasting a hardware 3D acceleration, development using three-dimensional graphics is an important topic for mobile computing. This module covers the JSR 184 (Mobile 3D Graphics) and explores the possibilities offered by its retained mode (high level) API for defining a scene graph and modifying objects in the world. A detailed example walks you through the basics of the free, open source 3D package Blender. Using this powerful software, you can create a sample 3D scene that you can display on your mobile phone with just a few lines of code. The challenge is about extending a sample 3D game framework, featuring an exciting car racing game!
Contents:
* Mobile 3D - Overview
* JSR 184 (m3g)
* Scene graph
* Your first m3g file with Blender
* Display, load and modify the 3D scene
* Objects and materials
* Challenge: 3D car racing game
This document provides resources and information about Minko SDKs. It lists various resources available for Minko, including documentation, forums, code samples, and more. It then describes the Community SDK as being free and open source, while the Professional SDK offers advanced features. The document goes on to cover scripting with Minko, using controllers and scripts to add interactivity. It also discusses using shaders with Minko's ActionScript shader language. Finally, it mentions the WYSIWYG scene editor for building scenes and importing file formats.
In the first module of the Java ME course, you will get a quick overview of the concepts behind Java ME. This includes information on the architecture of Java ME applications and how they differ from Java SE. In order to give you an impression on what is involved in developing for mobile phones using Java ME, the slides also contain basic information on distributing your applications. After this generic introduction, the concept of commands is introduced. In the challenge you will develop, debug and deploy your very first "Hello World" MIDlet.
Contents:
* Java Platform, Micro Edition
* Profiles, Configurations — MIDP, CLDC, CDC
* MIDlet Suites, Manifest, .jad and .jar
* Signing, Obfuscation, Over-the-Air distribution
* IDEs, Emulators
* JTWI, MSA, MIDP 3.0, JavaFX
* Commands
Microsoft Windows Phone 8 offers native code support that enables development and porting of high-performance games. This training-lab webinar will give you an overview of Windows Phone 8 capabilities that support complex games development. It also will introduce available tools and frameworks that increase developer productivity and will demonstrate a hands-on approach to games development with the Windows Phone SDK 8. By leveraging frameworks such as the Microsoft Direct3D API and support for popular physics and rendering engines, you can now create games with native performance as well as use your own or third-party engines and middleware for games development for Windows Phone 8 users.
This presentation made at TI Developer Conference 2008, introduces the options available for developers to create User Interfaces on TI SGX based platforms.
First, you will learn how to create your own mobile project. Then, you will add the prewritten game logic of a small Arkanoid-like game called "Mopoid". This provides an interesting place to get to know important parts of development for Symbian OS, including the following:
* Preparation: Setup of the tools and SDK
* Creating a new project
* Testing the project
* Defining the menu
* Displaying the about box
* Getting the application to the mobile phone!
* Adding the game engine to your project
* Loading images (.svg vector graphics)
* Scaling and displaying the graphics
* Handling keys
* Displaying text
* Reading and writing files
* Setting the application icon
* Handling being in the background
* Periodic events
* Exercises
You will see the results of your actions right away. Whenever a speciality of Symbian OS comes into sight (like memory handling), a short explanation will give you a brief overview of why it is this way and how to work with it.
Of course, during this tutorial, we will only scratch the surface of all those topics, as each of them would easily fill an own tutorial of this size. But this tutorial will give you a basic understanding of how development for mobile phones using C++ works, and is a good starting point for your own projects.
The original version of this tutorial has been released in December 2004 and was based on S60 1.x. In January 2009, the updated version for Symbian OS 9 / S60 3.x+ was released. The tutorial has been rewritten, the slides created from scratch, the game updated and greatly extended. Choose the version that fits to your target platform - most likely, this is going to be the new version. It's recommended to use both the tutorial document and the slides when working through the tutorial on your own.
The document discusses various 3D animation and modeling workflows and file formats, including OBJ, FBX, Collada, and Alembic formats. It also covers motion capture techniques from low to high budget options as well as cleaning up motion capture data. The document then discusses the free and open source 3D software Blender and its Cycles renderer. It also mentions the Luxrender, Radeon Pro, Unity, and Unreal game engines.
Данило Ульянич “C89 OpenGL for ARM microcontrollers on Cortex-M. Basic functi...Lviv Startup Club
This document discusses building OpenGL on ARM devices without a GPU. It proposes using an STM32 microcontroller and linear algebra library to perform 3D graphics operations via the CPU. Key steps include using meshes to define 3D objects as triangles, applying model-view-projection matrices to transform vertices, and implementing a depth buffer in SDRAM to solve visibility since the CPU lacks hardware acceleration. Benchmarks show a maximum frame rate of 139.82 FPS when clearing only the framebuffer between draws. The goal is to port OpenGL's syntax to run basic 3D graphics without a GPU.
The document discusses visualization systems and proposes concepts for their future development. It summarizes:
1) The "Visual Realityware" visualization software development environment, which uses an abstraction layer to allow developers to freely select mainstream graphics technologies and expand applications across multiple platforms with minimal bugs.
2) An application called "Virtual Anatomia" developed using Visual Realityware to visualize 3D biological data in real-time.
3) The concept of "Visionize" which is defined as a risk management methodology using visual communication to allow sharing of goals and visions in order to identify and prevent risks before issues arise.
Gdc 14 bringing unreal engine 4 to open_glchangehee lee
This document discusses bringing Unreal Engine 4 to OpenGL by porting its render hardware interface (RHI) to support OpenGL. It describes mapping the D3D11-based RHI to OpenGL, developing a cross-compiler to compile HLSL shaders to GLSL, addressing differences between D3D and OpenGL like texture coordinate systems, and optimizations to achieve performance parity with D3D11. It also covers bringing UE4 to Android by leveraging an NVIDIA Tegra K1 mobile chip's full OpenGL 4.4 support.
JIT Spraying Never Dies - Bypass CFG By Leveraging WARP Shader JIT Spraying.pdfSamiraKids
This document discusses bypassing Control Flow Guard (CFG) via Windows Advanced Rasterization Platform (WARP) shader Just-In-Time (JIT) spraying. It begins with background on Direct3D, WARP, shaders, and WebGL. It then explains the basic principle of CFG and known bypass methods. The presentation will demonstrate a new JIT spraying technique to bypass CFG by circumventing restrictions on the WARP JIT engine and reliably achieving CFG bypass. It concludes with a live demo of bypassing CFG on Internet Explorer 11 and Microsoft Edge on Windows 10.
Hacking for Salone: Drone Races - Di Saverio; Lippolis - Codemotion Milan 2016Codemotion
This year for the Salone del Mobile at frog, we came up with a funky experiment, based on Drones, Android, and VR. In this talk, your hosts will walk you through our Drone Race experiment, touching topics like real-time computer vision, reactive programming for mobile, indoor positioning and (wheeled) Drones hacking. The variety and complexity of these topics is equal to its coolness though, so you may be puzzled asking yourself: "Where do I start?" We will share experiences and lots of code, so that you can start right away.
Presentation Video : http://tinyurl.com/pfhz96m
Stage 3D introduction in Adobe Flash Player and Adobe AIR lets you use techniques such as deferred lighting, screen space dynamic shadow, MRT, and more through vertex and fragment shaders. Join Jean-Philippe Doiron, Principal Architect R&D at Frima Studio, and Jean-Philippe Auclair, R&D Architect, for a deep dive into GPU programming with the new Flash Player, and discover how to produce beautiful GPU effects that are reusable in your games and applications.
The game API is one of the most interesting and unique concepts of Java ME. It consists of very useful classes that help you with typical tasks that are required in almost ever game — for example sprite handling, tiled backgrounds or collision detection. This module will explain those concepts and how to create an own game loop. The challenge is the largest project yet and involves writing your own game called "Schlabo". The player moves his avatar at the bottom of the screen and has to shoot the enemy that moves randomly at the top.
Contents:
* Performance
* Game API
* Game loop
* GameCanvas
* Bitmaps
* Sprite
* Layer and TiledLayer
* LayerManager
Introduction to html5 game programming with impact jsLuca Galli
Luca Galli presented an introduction to HTML5 game programming using ImpactJS. ImpactJS is a JavaScript game framework that uses the HTML5 Canvas element to create 2D games that can be played on the web or mobile. Key points discussed include:
- HTML5 allows for cross-platform game development and deployment without plugins or additional costs.
- Using a framework like ImpactJS avoids needing to write boilerplate code from scratch and provides tools to handle issues like asynchronous loading and variable performance across devices.
- ImpactJS uses a module system to organize code and classes to structure objects in a prototypal inheritance model. Core classes cover game loop, entities, backgrounds, collisions and input handling.
-
ngGoBuilder and collaborative development between San Francisco and Tokyonotolab
This document discusses ngGoBuilder, a game engine and set of tools for developing games using ngCore. It describes ngGoBuilder 1.x features like scrolling layers and particle effects. It then discusses plans for ngGoBuilder 2.0 which will focus on a better user experience and include ngCore, debugging tools, and sample games. Future roadmaps include improved animation support and integration with the ngServer platform. The document also covers collaboration between the San Francisco and Tokyo teams working on the project.
This document provides an overview of using the libGDX framework to implement a simple 2D game in Java. It discusses topics such as setting up the starter class, loading assets like images and audio, rendering with an orthographic camera, sprite batch for drawing textures, handling input, collision detection using rectangles, and more. The goal is to demonstrate the basic building blocks for creating a 2D game with libGDX.
Woden 2: Developing a modern 3D graphics engine in SmalltalkESUG
Tue, August 23, 2:30pm – 3:00pm
Youtube: https://youtu.be/fnPv7jtVY8U
First Name: Ronie
Last Name: Salgado
Email: roniesalg@gmail.com
Title: Woden 2: Developing a modern 3D graphics engine in Smalltalk.
Type: Talk
Abstract:
Developing a 3D graphics engine is hard. A 3D graphics engine has to be fast and has to be very flexible for being used in multiples projects. By writing
a graphics engine in Smalltalk, we gain a huge flexibility for free. However, Smalltalk is not a fast programming language as C++. Newer low-level
graphics APIs such as Vulkan, Direct3D 12 and Metal allows to communicate very fast with the graphics card by mapping memory buffers present in the
graphics processing unit in the CPU address space.
For Woden 2, we extended Smalltalk to get more performance in some critical sections, such as the math library. With these extensions we are able to write
directly to the graphics card memory and to avoid marshalling/unmarshalling overhead. We made an abstraction layer for low-level graphics APIs (Vulkan,
Direct3D 12 and Metal) in C that we are calling via FFI. For programming the GPU, we made a custom shader language with a compiler written in Smalltalk.
This custom shader language can be compiled into graphics API specific shader languages for being executed by the GPU.
This talk is about the challenges of the new architecture behind Woden 2, and about building an integrated environment for 3D graphics software
development.
Bio: Ronie Salgado is the main architect behind Woden, a 3D graphics engine that won the third place in ESUG 2014, 11th innovation technology awards.
The document discusses Stage3D and Starling frameworks. It describes how Stage3D allows managing texture memory, vertex and pixel shading, and mesh rendering using OpenGL and DirectX. It also explains that Starling uses a quad batching approach to group quads with the same state for efficient rendering and provides a vertex buffer description to store quad vertex attributes. The document recommends profiling tools for optimizing 3D rendering and references books for further reading.
Nearly all of today's PC and console games use 3D graphics. With mobile phones getting more and more powerful and some devices even boasting a hardware 3D acceleration, development using three-dimensional graphics is an important topic for mobile computing. This module covers the JSR 184 (Mobile 3D Graphics) and explores the possibilities offered by its retained mode (high level) API for defining a scene graph and modifying objects in the world. A detailed example walks you through the basics of the free, open source 3D package Blender. Using this powerful software, you can create a sample 3D scene that you can display on your mobile phone with just a few lines of code. The challenge is about extending a sample 3D game framework, featuring an exciting car racing game!
Contents:
* Mobile 3D - Overview
* JSR 184 (m3g)
* Scene graph
* Your first m3g file with Blender
* Display, load and modify the 3D scene
* Objects and materials
* Challenge: 3D car racing game
This document provides resources and information about Minko SDKs. It lists various resources available for Minko, including documentation, forums, code samples, and more. It then describes the Community SDK as being free and open source, while the Professional SDK offers advanced features. The document goes on to cover scripting with Minko, using controllers and scripts to add interactivity. It also discusses using shaders with Minko's ActionScript shader language. Finally, it mentions the WYSIWYG scene editor for building scenes and importing file formats.
In the first module of the Java ME course, you will get a quick overview of the concepts behind Java ME. This includes information on the architecture of Java ME applications and how they differ from Java SE. In order to give you an impression on what is involved in developing for mobile phones using Java ME, the slides also contain basic information on distributing your applications. After this generic introduction, the concept of commands is introduced. In the challenge you will develop, debug and deploy your very first "Hello World" MIDlet.
Contents:
* Java Platform, Micro Edition
* Profiles, Configurations — MIDP, CLDC, CDC
* MIDlet Suites, Manifest, .jad and .jar
* Signing, Obfuscation, Over-the-Air distribution
* IDEs, Emulators
* JTWI, MSA, MIDP 3.0, JavaFX
* Commands
Microsoft Windows Phone 8 offers native code support that enables development and porting of high-performance games. This training-lab webinar will give you an overview of Windows Phone 8 capabilities that support complex games development. It also will introduce available tools and frameworks that increase developer productivity and will demonstrate a hands-on approach to games development with the Windows Phone SDK 8. By leveraging frameworks such as the Microsoft Direct3D API and support for popular physics and rendering engines, you can now create games with native performance as well as use your own or third-party engines and middleware for games development for Windows Phone 8 users.
This presentation made at TI Developer Conference 2008, introduces the options available for developers to create User Interfaces on TI SGX based platforms.
First, you will learn how to create your own mobile project. Then, you will add the prewritten game logic of a small Arkanoid-like game called "Mopoid". This provides an interesting place to get to know important parts of development for Symbian OS, including the following:
* Preparation: Setup of the tools and SDK
* Creating a new project
* Testing the project
* Defining the menu
* Displaying the about box
* Getting the application to the mobile phone!
* Adding the game engine to your project
* Loading images (.svg vector graphics)
* Scaling and displaying the graphics
* Handling keys
* Displaying text
* Reading and writing files
* Setting the application icon
* Handling being in the background
* Periodic events
* Exercises
You will see the results of your actions right away. Whenever a speciality of Symbian OS comes into sight (like memory handling), a short explanation will give you a brief overview of why it is this way and how to work with it.
Of course, during this tutorial, we will only scratch the surface of all those topics, as each of them would easily fill an own tutorial of this size. But this tutorial will give you a basic understanding of how development for mobile phones using C++ works, and is a good starting point for your own projects.
The original version of this tutorial has been released in December 2004 and was based on S60 1.x. In January 2009, the updated version for Symbian OS 9 / S60 3.x+ was released. The tutorial has been rewritten, the slides created from scratch, the game updated and greatly extended. Choose the version that fits to your target platform - most likely, this is going to be the new version. It's recommended to use both the tutorial document and the slides when working through the tutorial on your own.
The document discusses various 3D animation and modeling workflows and file formats, including OBJ, FBX, Collada, and Alembic formats. It also covers motion capture techniques from low to high budget options as well as cleaning up motion capture data. The document then discusses the free and open source 3D software Blender and its Cycles renderer. It also mentions the Luxrender, Radeon Pro, Unity, and Unreal game engines.
Данило Ульянич “C89 OpenGL for ARM microcontrollers on Cortex-M. Basic functi...Lviv Startup Club
This document discusses building OpenGL on ARM devices without a GPU. It proposes using an STM32 microcontroller and linear algebra library to perform 3D graphics operations via the CPU. Key steps include using meshes to define 3D objects as triangles, applying model-view-projection matrices to transform vertices, and implementing a depth buffer in SDRAM to solve visibility since the CPU lacks hardware acceleration. Benchmarks show a maximum frame rate of 139.82 FPS when clearing only the framebuffer between draws. The goal is to port OpenGL's syntax to run basic 3D graphics without a GPU.
The document discusses visualization systems and proposes concepts for their future development. It summarizes:
1) The "Visual Realityware" visualization software development environment, which uses an abstraction layer to allow developers to freely select mainstream graphics technologies and expand applications across multiple platforms with minimal bugs.
2) An application called "Virtual Anatomia" developed using Visual Realityware to visualize 3D biological data in real-time.
3) The concept of "Visionize" which is defined as a risk management methodology using visual communication to allow sharing of goals and visions in order to identify and prevent risks before issues arise.
Gdc 14 bringing unreal engine 4 to open_glchangehee lee
This document discusses bringing Unreal Engine 4 to OpenGL by porting its render hardware interface (RHI) to support OpenGL. It describes mapping the D3D11-based RHI to OpenGL, developing a cross-compiler to compile HLSL shaders to GLSL, addressing differences between D3D and OpenGL like texture coordinate systems, and optimizations to achieve performance parity with D3D11. It also covers bringing UE4 to Android by leveraging an NVIDIA Tegra K1 mobile chip's full OpenGL 4.4 support.
JIT Spraying Never Dies - Bypass CFG By Leveraging WARP Shader JIT Spraying.pdfSamiraKids
This document discusses bypassing Control Flow Guard (CFG) via Windows Advanced Rasterization Platform (WARP) shader Just-In-Time (JIT) spraying. It begins with background on Direct3D, WARP, shaders, and WebGL. It then explains the basic principle of CFG and known bypass methods. The presentation will demonstrate a new JIT spraying technique to bypass CFG by circumventing restrictions on the WARP JIT engine and reliably achieving CFG bypass. It concludes with a live demo of bypassing CFG on Internet Explorer 11 and Microsoft Edge on Windows 10.
Hacking for Salone: Drone Races - Di Saverio; Lippolis - Codemotion Milan 2016Codemotion
This year for the Salone del Mobile at frog, we came up with a funky experiment, based on Drones, Android, and VR. In this talk, your hosts will walk you through our Drone Race experiment, touching topics like real-time computer vision, reactive programming for mobile, indoor positioning and (wheeled) Drones hacking. The variety and complexity of these topics is equal to its coolness though, so you may be puzzled asking yourself: "Where do I start?" We will share experiences and lots of code, so that you can start right away.
Presentation Video : http://tinyurl.com/pfhz96m
Stage 3D introduction in Adobe Flash Player and Adobe AIR lets you use techniques such as deferred lighting, screen space dynamic shadow, MRT, and more through vertex and fragment shaders. Join Jean-Philippe Doiron, Principal Architect R&D at Frima Studio, and Jean-Philippe Auclair, R&D Architect, for a deep dive into GPU programming with the new Flash Player, and discover how to produce beautiful GPU effects that are reusable in your games and applications.
The game API is one of the most interesting and unique concepts of Java ME. It consists of very useful classes that help you with typical tasks that are required in almost ever game — for example sprite handling, tiled backgrounds or collision detection. This module will explain those concepts and how to create an own game loop. The challenge is the largest project yet and involves writing your own game called "Schlabo". The player moves his avatar at the bottom of the screen and has to shoot the enemy that moves randomly at the top.
Contents:
* Performance
* Game API
* Game loop
* GameCanvas
* Bitmaps
* Sprite
* Layer and TiledLayer
* LayerManager
Introduction to html5 game programming with impact jsLuca Galli
Luca Galli presented an introduction to HTML5 game programming using ImpactJS. ImpactJS is a JavaScript game framework that uses the HTML5 Canvas element to create 2D games that can be played on the web or mobile. Key points discussed include:
- HTML5 allows for cross-platform game development and deployment without plugins or additional costs.
- Using a framework like ImpactJS avoids needing to write boilerplate code from scratch and provides tools to handle issues like asynchronous loading and variable performance across devices.
- ImpactJS uses a module system to organize code and classes to structure objects in a prototypal inheritance model. Core classes cover game loop, entities, backgrounds, collisions and input handling.
-
ngGoBuilder and collaborative development between San Francisco and Tokyonotolab
This document discusses ngGoBuilder, a game engine and set of tools for developing games using ngCore. It describes ngGoBuilder 1.x features like scrolling layers and particle effects. It then discusses plans for ngGoBuilder 2.0 which will focus on a better user experience and include ngCore, debugging tools, and sample games. Future roadmaps include improved animation support and integration with the ngServer platform. The document also covers collaboration between the San Francisco and Tokyo teams working on the project.
This document provides an overview of using the libGDX framework to implement a simple 2D game in Java. It discusses topics such as setting up the starter class, loading assets like images and audio, rendering with an orthographic camera, sprite batch for drawing textures, handling input, collision detection using rectangles, and more. The goal is to demonstrate the basic building blocks for creating a 2D game with libGDX.
Woden 2: Developing a modern 3D graphics engine in SmalltalkESUG
Tue, August 23, 2:30pm – 3:00pm
Youtube: https://youtu.be/fnPv7jtVY8U
First Name: Ronie
Last Name: Salgado
Email: roniesalg@gmail.com
Title: Woden 2: Developing a modern 3D graphics engine in Smalltalk.
Type: Talk
Abstract:
Developing a 3D graphics engine is hard. A 3D graphics engine has to be fast and has to be very flexible for being used in multiples projects. By writing
a graphics engine in Smalltalk, we gain a huge flexibility for free. However, Smalltalk is not a fast programming language as C++. Newer low-level
graphics APIs such as Vulkan, Direct3D 12 and Metal allows to communicate very fast with the graphics card by mapping memory buffers present in the
graphics processing unit in the CPU address space.
For Woden 2, we extended Smalltalk to get more performance in some critical sections, such as the math library. With these extensions we are able to write
directly to the graphics card memory and to avoid marshalling/unmarshalling overhead. We made an abstraction layer for low-level graphics APIs (Vulkan,
Direct3D 12 and Metal) in C that we are calling via FFI. For programming the GPU, we made a custom shader language with a compiler written in Smalltalk.
This custom shader language can be compiled into graphics API specific shader languages for being executed by the GPU.
This talk is about the challenges of the new architecture behind Woden 2, and about building an integrated environment for 3D graphics software
development.
Bio: Ronie Salgado is the main architect behind Woden, a 3D graphics engine that won the third place in ESUG 2014, 11th innovation technology awards.
The document discusses Stage3D and Starling frameworks. It describes how Stage3D allows managing texture memory, vertex and pixel shading, and mesh rendering using OpenGL and DirectX. It also explains that Starling uses a quad batching approach to group quads with the same state for efficient rendering and provides a vertex buffer description to store quad vertex attributes. The document recommends profiling tools for optimizing 3D rendering and references books for further reading.
1. Java™ Platform, Micro Edition
Part 8 – Mobile 3D Graphics
1 Andreas Jakl, 2009 v3.0a – 25 April 2009
2. Disclaimer
● These slides are provided free of charge at http://www.symbianresources.com and are
used during Java ME courses at the University of Applied Sciences in Hagenberg,
Austria at the Mobile Computing department ( http://www.fh-ooe.at/mc )
● Respecting the copyright laws, you are allowed to use them:
for your own, personal, non-commercial use
in the academic environment
● In all other cases (e.g. for commercial training), please contact andreas.jakl@fh-
hagenberg.at
● The correctness of the contents of these materials cannot be guaranteed. Andreas Jakl is
not liable for incorrect information or damage that may arise from using the materials.
● This document contains copyright materials which are proprietary to Sun or various
mobile device manufacturers, including Nokia, SonyEricsson and Motorola. Sun, Sun
Microsystems, the Sun Logo and the Java™ Platform, Micro Edition are trademarks or
registered trademarks of Sun Microsystems, Inc. in the United States and other
countries.
2 Andreas Jakl, 2009
3. Agenda
● Mobile 3D – Overview
● JSR 184
● Scene graph
● Your first m3g file with Blender
● Display, load and modify the 3D scene
● Objects and materials
3 Andreas Jakl, 2009
5. 3D Java Game Examples
Brothers in Arms: Earned Tornado Mania! 3D Planet Riders 3D Massive Snowboarding 3D
in Blood (Gameloft) (Digital Chocolate) (Fishlabs) (Gameloft)
For comparison: Current C++ / Open GL ES based N-Gage games (Symbian OS)
(This is what is currently possible with mid-/higher class mobile phones)
Blades & Magic 3D
Hooked On: Creatures of the
(Fishlabs)
Deep (Infinite Dreams)
Star Wars: The Force One (Digital Legends)
5 Unleashed (Universomo / Andreas Jakl, 2009
LucasArts)
6. Benchmark Your Phone
● Futuremark SPMarkJava JSR
184
http://www.futuremark.com/products/
spmark/spmarkjavajsr184/
● JBenchmark 3D/HD:
http://www.jbenchmark.com/
6 Andreas Jakl, 2009
7. 3D APIs for Java ME
● Mobile 3D Graphics API (JSR 184)
Java based 3D graphics library
Supports immediate and retained mode (low and high level)
Optional package
● Open GL ES (JSR 239)
Provide Java bindings to the Open GL ES native 3D graphics library
OpenGL ES can also be used in native code (Symbian OS / C++)
● Mascot Capsule
Like JSR 184, additionally supported by e.g. SonyEricsson
● (Java 3D from Java SE is too bloated for mobile phones: ~40 MB)
7 Andreas Jakl, 2009
8. 3D APIs
● M3G builds on the feature set of OpenGL ES
● Both APIs are designed concurrently
Native Java Applications
C / C++
Applications M3G (JSR 184)
OpenGL ES
Graphics Hardware
8 Andreas Jakl, 2009
9. Performance
● Java is slow on mobile phones
● KVM most widely used today
● Nokia (and others) migrating to HotSpot VM from Sun
● But HotSpot takes a lot of RAM problematic in real life
Image downsampling
HotSpot
Jazelle™
KVM
Vertex Transformation
Assembly
0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
Relative speed
9 Andreas Jakl, 2009
Benchmarked on an ARM926EJ-S processor with hand-optimized Java and assembly code
Diagram from Tomi Aarnio (see sources slide at the end)
11. JSR 184
● Hardware independent
Uses newer hardware + 3D accelerators if present
● Separate code from content
m3g file format contains models, animation, appearance,
textures, ...
Control logic in source code
● Tightly integrated with LCDUI (from MIDP, requires floating
point support of CLDC 1.1+)
● Built in high level & low level API
Scene graphs, keyframe animation, bones, ...
11 Andreas Jakl, 2009
12. Keeps graphics
Modes processing code in
native code (no Java)!
● Immediate Mode ● Retained mode
Create objects Create objects in 3D app
programmatically Scene graphs
Uses triangles as primitives
Low level
Mixing is possible
(e.g. insert immediate object into a scene graph)
12 Andreas Jakl, 2009
13. Tools
● Blender (Freeware, http://www.blender.org/)
m3g exporter plug-in:
http://www.nelson-games.de/bl2m3g/default.html
Blender: Powerful,
but difficult to learn UI
Written in Python
● Commercial
3DS Max (integrated)
Maya
Lightwave
13 Andreas Jakl, 2009
14. JSR 184 – Synchronous Structure
● All APIs are synchronous
Calls return when completed
Create own thread for loading larger scenes!
● Structure
No callbacks (interfaces, events, abstract methods)
Do not override any methods
14 Andreas Jakl, 2009
15. m3g File Format
● Compact binary format
● Stores complete
scene graph in file
Objects are serialized
Includes camera(s), lightning and objects
● Can be compressed
● Viewer:
http://www.mascotcapsule.com/toolkit/m3g/en/index.php
15 Andreas Jakl, 2009
16. Scene Graph
World is a top-level node Background defines the
containing the whole scene background against which the
World Background 3D scene is rendered
Groups allow the application
to treat multiple nodes as a
single unit Group Camera Light
Groups can be
nested inside
Sprite3D is a other groups Camera Light defines
2D image with a defines a a light source
3D position viewpoint in the scene
Sprite3D Group
User object Group Mesh Mesh defines the 3D
geometry of a visible
An arbitrary user object object
can be associated with
any scene object Morphing
SkinnedMesh
Mesh Morphing and skinned
meshes are animated
geometry objects
16 Andreas Jakl, 2009
Based on the scene graph image from the JSR 184 API documentation
17. Graph vs. Tree
● Scene graph has a tree structure
Node can belong to at most one group at a time
But components (VertexArrays, textures, ...) can be
shared
No cyclic structures allowed
Node Node Component Group Group
Component Node
17 Andreas Jakl, 2009
18. Scene Graph – Example
World root node
Camera and light
The car
The landscape scene group
Tree
The tree consists
of two meshes
The tree has no
texture image
Grass block
Grass texture
18 Andreas Jakl, 2009
19. Node
● Abstract base class for all scene graph nodes
● Contains information about:
Transformation
Parent
Alignment (also automatic!)
Visibility
Node
...
Group Camera Light Mesh Sprite3D
World
19 Andreas Jakl, 2009
20. Key Classes
3D graphics context
Graphics3D
Handles all rendering
Utility to load m3g and png files
Loader
(entire scene graphs or single objects)
Root node of the scene graph
World
20 Andreas Jakl, 2009
21. Graphics3D Graphics3D
● Stores global state
Rendering target, viewport, depth buffer, back buffer
Camera, light sources
Rendering quality hints (Antialiasing, dithering, true color
rendering)
● Each node has its own local state
Geometry & appearance (material, textures, ...)
Transformation relative to the parent or world
21 Andreas Jakl, 2009
22. Graphics3D – Rendering Modes
● Retained mode
Render entire world (scenegraph)
Uses lights and camera nodes from the world
● Immediate mode
Render scene graph nodes or submesh
Uses lights and camera from Graphics3D object
22 Andreas Jakl, 2009
23. Graphics3D – Render Targets
● Graphics3D can render to any Graphics object or Image2D
possible to render to textures (eg. environment mapping)
World
M3G
(JSR 184)
Graphics3D Image2D
Graphics Canvas
Image MIDP
CustomItem
23 Andreas Jakl, 2009
24. Graphics3D – Example
● Target has to be bound and released
● Do not modify the target from the outside in between
public class MyCanvas extends Canvas
{
Graphics3D myG3D = Graphics3D.getInstance();
public void paint(Graphics g) {
try {
myG3D.bindTarget(g);
// ... update the scene ...
// ... render the scene ...
} finally {
myG3D.releaseTarget();
}
}
24 Andreas Jakl, 2009
25. World Node World
● Top level node for a scene graph
● Contains
Other nodes that compose the scene
Background
Camera, Light, Fog
● Requires an active camera for rendering
25 Andreas Jakl, 2009
26. Example – Goal
● Create an m3g file with Blender
● Load and display the file in a MIDlet
● Rotate the object
26 Andreas Jakl, 2009
28. Blender – Interface
3D Viewport
Light
Sample Cube
Camera
Buttons Window
28 Andreas Jakl, 2009
29. Blender – Windows
The highlighted window receives
keyboard inputs:
Highlighted
(slightly brighter
colour)
Change the window type:
... you can split, join and resize windows and
drag mini windows (with the )
29 Andreas Jakl, 2009
30. Blender – 3D Viewport
Click + hold middle mouse button
Rotate viewport
Shift + middle mouse button
Pan view (move sideways)
Mouse wheel
Zoom
Z-key
Toggle wireframe or solid mode
Choose viewport shading
NUM5 (with NUM LOCK on)
(more options than Z)
Toggle Ortographic / Perspective
NUM refers to the number pad – if you
pressed the numbers above the normal
keys instead, press 1 to return to the
NUM0 (with NUM LOCK on)
normal view (for viewing layer 1) Camera view (MMB will exit it)
30 Andreas Jakl, 2009
31. The 3D Cursor
Task: place the 3D cursor
between the camera and the cube
1. Make sure you are in object mode
(press TAB to toggle)
2. Disable the “3d transform manipulator”
to make sure you can move the cursor
without selecting the cube by accident
3. Hit NUM7 to get to the top view
4. Click with LMB between cube and
camera
5. Choose different view (NUM1 – front
view or NUM3 – side view)
6. Click between cube and camera with Note: we’re working
LMB in a 3D space but only
have a 2D screen –
7. Rotate the view to see if it was
therefore you need
positioned correctly two views to set all
three coordinates of
31 Andreas Jakl, 2009 the cursor!
32. Deleting and Adding Objects
Task: replace the cube with a monkey
1. Set “Object Mode”; switch off “3d
transform manipulator” (see previous
slide)
2. Move the cursor to the center
(Shift+CKEY)
3. RMB on the cube to select it
4. DELKEY to delete the object. Confirm in
the prompt window (“Erase Selected”)
5. Use the Add menu to add a new object.
Here: Add Mesh Monkey
6. Blender automatically switches to edit
mode. Go to object mode (TAB), press
CKEY to center the cursor on the screen,
ZKEY to toggle solid and wireframe
mode. Zoom in (Mouse wheel)
32 Andreas Jakl, 2009
33. Material
Task: change the material of the monkey
1. Select the monkey object (RMB); set “Object
Mode”
2. Press the shading button
3. In contrast to the cube, the monkey doesn’t
have a default material. Click the button next
to “Add New” and choose “O Material”
(same that was originally on the cube)
4. In the “Material” tab, set any color you want
for “Col” and “Spe” (specular color, for
highlights)
5. Press the button with the small car in the
“Links and Pipeline” tab for an automatic
material name
6. Set the draw type of the 3D Viewport to
“Shaded” for a more accurate preview
33 Andreas Jakl, 2009
34. IDs and m3g Export
Task: to access the nodes from the m3g file
in source code, they need IDs.
1. Set “Object Mode”
2. Select the monkey with the RMB
3. Add #01 at the end of the object name
to give it the ID 1 in the m3g file
4. Do the same for the light (#02) and the
camera (#03)
Task: export the m3g file (requires the m3g
exporter plug-in)
1. File Export M3G
2. You can safely disable texturing
34 Andreas Jakl, 2009
35. m3g File
Open the m3g file in the m3g viewer* and
choose Display Scene Graph View
Our IDs have been saved in the file
* http://www.mascotcapsule.com/toolkit/m3g/en/index.php
35 Andreas Jakl, 2009
36. Switching to the Java side
Display the 3D scene
36 Andreas Jakl, 2009
37. Loading the m3g File
● Create a simple MIDlet and Canvas-class (sample start
project is provided) Object3D[] roots = null;
try {
● Add the monkey.m3g to // Load the m3g file
the root of the .jar // The loader will return all root level objects of the file,
// which are not referenced by any other objects.
// Always state an absolute path ("/")!
● Init code snippet roots = Loader.load("/monkey.m3g");
of the Canvas: } catch (IOException ex) {
// couldn't open the file, or invalid data in the file
ex.printStackTrace();
}
// Usually the world node is the only and first node.
// If loading unknown files, you should check it though.
// Save the world node to an instance variable
for (int i = 0; i < roots.length; ++i) {
if (roots[i] instanceof World) {
iWorld = (World) roots[i];
}
}
37 Andreas Jakl, 2009
38. Game loop in a GameCanvas
public void run() {
// Get the singleton Graphics3D instance that is associated with this midlet.
Graphics3D g3d = Graphics3D.getInstance();
// Measure the time that has passed since the prev. frame
long start, elapsed = 0; int time = 0;
while (iIsActive) {
start = System.currentTimeMillis();
try {
// Bind the 3D graphics context to the given MIDP Graphics object.
g3d.bindTarget(getGraphics());
// Update the world [...]
iWorld.animate(time); // Animate the world
// Render the view from the active camera
g3d.render(iWorld);
} finally {
// Release the graphics context
g3d.releaseTarget();
}
flushGraphics(); // Flush the rendered image to the screen
// Give other threads a chance to run
Thread.sleep(20); // This sample omits try and catch
elapsed = System.currentTimeMillis() - start;
time += elapsed; // Time that has passed since the last frame
} 38 Andreas Jakl, 2009
}
40. The Camera
● The camera was too far away in the
Blender scene
● Move it towards the object after loading
the world:
Camera cam = iWorld.getActiveCamera();
cam.setTranslation(-5.0f, 5.0f, -4.0f);
40 Andreas Jakl, 2009
41. Node Transformations
● Each node: local coordinate system
● Node transformation: from this node to the parent
node (ignored for root)
World
Translation T
Rotation R
Group
Non-uniform scale S
Generic matrix M
Sprite3D Group
● Composite C = TRSM
Group Mesh
41 Andreas Jakl, 2009
42. Modifying Objects
● Rotate the monkey
private static final int ID_MONKEY = 1;
// Find searches through all children of this node
Node monkey = (Node) iWorld.find(ID_MONKEY);
switch (getKeyStates())
{
case LEFT_PRESSED:
// Parameters: angle, x / y / z component of
// the rotation axis. Here: all on z axis
monkey.postRotate(5.0f, 0.0f, 0.0f, -1.0f);
break;
case RIGHT_PRESSED:
monkey.postRotate(5.0f, 0.0f, 0.0f, 1.0f);
break;
}
42 Andreas Jakl, 2009
43. What is actually rendered?
Objects and Materials
43 Andreas Jakl, 2009
44. Textures
● Add visual richness
Backgrounds
Surface structure
Sprites for “cheating”
(no complex 3D models)
Character images copyright David Dang
http://www.chi-3d.co.uk/
Sprites in “Doom” by id Software
44 Andreas Jakl, 2009
45. Perspective Correction
● Perspective correction
Expensive, avoid if possible
But still better than a lot more polygons
Nokia: 2% fixed overhead, 20% in the worst case
Perspective correction
http://en.wikipedia.org/wiki/Texture_mapping
45 Andreas Jakl, 2009
46. Light Maps
● Lightning
Use light maps instead of real light
Pre-calculate light for non-textured (colored) objects:
vertex coloring
light map light map
(unfiltered) (filtered)
w/o light maps with light maps
46 Andreas Jakl, 2009
Images from lecture slides of Stephen Chenney (see sources at the end)
47. Mobile Textures II
● Backgrounds
Use background images, no skybox or real
3D
Sprites in a 3D scene
● Sprites Playman World Soccer
(Mr.Goodliving)
Much faster than real geometry or
textured quads
But too much overhead for particle
effects
● Images
Load through Loader class (Image2D) –
going through MIDP Image wastes 3D Sprites can be useful
memory for 2D games as well
(rotation!)
Tower Bloxx (Digital
47 Andreas Jakl, 2009 Chocolate)
48. Mesh
● How is the object defined? (vertices, material, ...)
Mesh
Vertex positions,
normals, texture
coordinates, ...
VertexBuffer
Defines a submesh
(consisting of
IndexBuffer triangle strips) –
IndexBuffer
IndexBuffer reference data
from the vertex
Appearance buffer
Appearance
Appearance
1 Appearance per
submesh. Defines
color, texture, ...
48 Andreas Jakl, 2009
49. Sprite3D
● 2D image with 3D position
● Fast, but functionally restricted alternative to textured
geometry
Scaled mode: billboards, trees, ...
Unscaled mode: text labels, icons, ...
Sprite3D Appearance Contains compositing
and fogging attributes
Image2D
49 Andreas Jakl, 2009
51. Animations
● Defined in the m3g file
● Automatically played corresponding to the time by
animate() method
Defines time within
Animated Object Animation the animation,
AnimationTrack
(Object3D) Controller speed, weight for
blending, ...
Keyframe
AnimationTrack
Each track associates a Sequence Values of the
property (e.g. position) with animated property
a controler & keyframe data. Keyframe (keyframes) + the
Multiple tracks may be interpolation mode.
blended.
Sequence
51 Andreas Jakl, 2009
52. Keyframe
KeyframeSequence Sequence
● Keyframe: time & property value at that time
● Sequence:
Can store multiple keyframes
Several interpolation methods
Can be looping
property value
v
t sequence time
52 Andreas Jakl, 2009
Diagram based on Sean Ellis, Superscape
53. Keyframe
KeyframeSequence Sequence
● Keyframe: time & property value at that time
● Sequence:
Can store multiple keyframes
Several interpolation methods
Can be looping
property value
sequence time
53 Andreas Jakl, 2009
Diagram based on Sean Ellis, Superscape
54. Keyframe
KeyframeSequence Sequence
● Keyframe: time & property value at that time
● Sequence:
Can store multiple keyframes
Several interpolation methods
Can be looping
property value
sequence time
54 Andreas Jakl, 2009
Diagram based on Sean Ellis, Superscape
55. Keyframe
KeyframeSequence Sequence
● Keyframe: time & property value at that time
● Sequence:
Can store multiple keyframes
Several interpolation methods
Can be looping
property value
v
t sequence time
55 Andreas Jakl, 2009
Diagram based on Sean Ellis, Superscape
56. Animation
AnimationController Controller
● Controls position, speed and weight of an animation
sequence
● Usually controls multiple AnimationTracks (properties) at
the same time
● Defines mapping from world time to sequence time
0 s sequence time d
t1 t2 world time
56 Andreas Jakl, 2009
Diagram based on Sean Ellis, Superscape
57. Unfortunately, the animations are not exported to the pdf
Morphing
Mesh MorphingMesh
Base Target 1 Target 2 Animate eyes
eyes closed mouth closed and mouth
independently
57 Andreas Jakl, 2009
Images from Aarnio and Pulli (see sources at the end)
58. Unfortunately, the animations are not exported to the pdf
Skinning
Mesh SkinnedMesh
No skinning Local skinning Smooth skinning
one bone per vertex two bones per vertex
58 Andreas Jakl, 2009
Images from Aarnio and Pulli (see sources at the end)
59. Summary
● M3G enables real-time 3D on mobile phones
Works both with software and hardware 3D
Supported by millions of devices
● Mixture of low- and high level
Allows easy creation of scenes
But still gives the developer full control
● Flexible architecture
Based on OpenGL ES features
Defines a convenient file format
59 Andreas Jakl, 2009
60. Sources
● Tomi Aarnio and Kari Pulli: Advanced Game Development with the Mobile 3D Graphics API. JavaOne Conference,
2004.
● Andrew Davison: Special Topics in Info. Eng.: Introduction to J2ME Programming. Lecture slides, 2007
● Qusay H. Mahmoud: Getting Started With the Mobile 3D Graphics API for J2ME.
http://developers.sun.com/mobility/apis/articles/3dgraphics/
● Carol Hamer: Creating a basic M3G file with Blender. http://bittyjava.wordpress.com/2007/01/04/creating-a-basic-
m3g-file-with-blender/
● David Millet, Arthur Tombs et al.: Blender 3D: Noob to Pro. http://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro
● Mikael Baros: 3D programming tutorial for mobile devices using M3G (JSR 184).
http://developer.sonyericsson.com/site/global/techsupport/tipstrickscode/mobilejava3d/p_java3d_tutorial_part1_
compliments_redikod.jsp
● Kari Pulli et al.: Developing Mobile 3D Applications With OpenGL ES and M3G. Eurographics 2006.
http://people.csail.mit.edu/kapu/mobile_3D_course/index.html
● Janne Hellsten: Building scalable 3D apps - Tips & tricks for developers.
http://www.khronos.org/developers/library/seoul_04_2005/Hybrid_Tips-and-Tricks.ppt
● Stephen Chenney: Computer Game Technology. Lecture slides, 2001.
http://www.cs.wisc.edu/graphics/Courses/638-f2001/
60 Andreas Jakl, 2009