The document describes a program that draws and rotates a color cube using OpenGL. It defines vertex and color arrays to represent the cube. It also defines functions to draw the cube faces with the proper vertex colors and orientations. The main function initializes OpenGL, sets callbacks for display, idle, mouse, and reshape events, and runs the main loop. The idle callback rotates the cube along a selected axis, and mouse clicks select the rotation axis.
The document discusses 3D matrix transformations in XNA game development. It explains that to render a 3D scene, a camera matrix, projection matrix, and separate world matrix for each object must be set up. It provides details on creating view matrices with CreateLookAt, projection matrices with CreatePerspectiveFieldOfView or CreateOrthographic, and transforming objects using world matrices created from scaling, rotation, translation and other transformations. Multiple transformations can be combined by multiplying the matrices together in order.
The document discusses using 3D models, textures, lighting, fog, and animation in XNA game development. It explains how to load 3D models, apply the BasicEffect to set textures, lighting properties, and fog. It also demonstrates how to create simple animation by updating the model's position over time in the game's update loop and applying the transformation to the world matrix.
The document discusses various techniques for constructing shadows and lighting effects in 3D computer graphics, including using projection matrices to generate shadow polygons and accounting for factors like light source positioning, radial intensity attenuation, and surface reflectance properties. It also examines methods for animating camera movement and introducing texture mapping to surfaces.
This document discusses various topics related to the cocos2d game engine and game development. It mentions cocos2d features like CCMoveBy and CCMoveTo actions. It provides code samples for loading animation frames from a texture atlas and running animations using CCRepeatForever. It also discusses using SimpleAudioEngine for sound, and transforming sprites by modifying the CCLayer or CCSprite transform properties.
This document describes the ORB (Oriented FAST and Rotated BRIEF) image feature detection and description algorithm. It first discusses image features in general, including corner detection methods like FAST, BRIEF and SIFT. It then provides an overview of ORB, which combines oFAST for keypoint detection with rBRIEF for descriptor extraction. The document proceeds to explain the details of the ORB algorithm, including using an image pyramid for scale invariance, computing keypoint orientations, and generating rotation-invariant BRIEF descriptors.
Collision detection determines whether two objects in a virtual world overlap and have collided. Accurate collision detection is fundamental to a solid game engine. XNA has two main types for implementing collision detection: bounding boxes and bounding spheres. Bounding boxes are better for rectangular objects while bounding spheres offer a better fit for rounded objects. Both bounding boxes and bounding spheres can be used to check for intersections and containment between game objects.
The document describes a program that draws and rotates a color cube using OpenGL. It defines vertex and color arrays to represent the cube. It also defines functions to draw the cube faces with the proper vertex colors and orientations. The main function initializes OpenGL, sets callbacks for display, idle, mouse, and reshape events, and runs the main loop. The idle callback rotates the cube along a selected axis, and mouse clicks select the rotation axis.
The document discusses 3D matrix transformations in XNA game development. It explains that to render a 3D scene, a camera matrix, projection matrix, and separate world matrix for each object must be set up. It provides details on creating view matrices with CreateLookAt, projection matrices with CreatePerspectiveFieldOfView or CreateOrthographic, and transforming objects using world matrices created from scaling, rotation, translation and other transformations. Multiple transformations can be combined by multiplying the matrices together in order.
The document discusses using 3D models, textures, lighting, fog, and animation in XNA game development. It explains how to load 3D models, apply the BasicEffect to set textures, lighting properties, and fog. It also demonstrates how to create simple animation by updating the model's position over time in the game's update loop and applying the transformation to the world matrix.
The document discusses various techniques for constructing shadows and lighting effects in 3D computer graphics, including using projection matrices to generate shadow polygons and accounting for factors like light source positioning, radial intensity attenuation, and surface reflectance properties. It also examines methods for animating camera movement and introducing texture mapping to surfaces.
This document discusses various topics related to the cocos2d game engine and game development. It mentions cocos2d features like CCMoveBy and CCMoveTo actions. It provides code samples for loading animation frames from a texture atlas and running animations using CCRepeatForever. It also discusses using SimpleAudioEngine for sound, and transforming sprites by modifying the CCLayer or CCSprite transform properties.
This document describes the ORB (Oriented FAST and Rotated BRIEF) image feature detection and description algorithm. It first discusses image features in general, including corner detection methods like FAST, BRIEF and SIFT. It then provides an overview of ORB, which combines oFAST for keypoint detection with rBRIEF for descriptor extraction. The document proceeds to explain the details of the ORB algorithm, including using an image pyramid for scale invariance, computing keypoint orientations, and generating rotation-invariant BRIEF descriptors.
Collision detection determines whether two objects in a virtual world overlap and have collided. Accurate collision detection is fundamental to a solid game engine. XNA has two main types for implementing collision detection: bounding boxes and bounding spheres. Bounding boxes are better for rectangular objects while bounding spheres offer a better fit for rounded objects. Both bounding boxes and bounding spheres can be used to check for intersections and containment between game objects.
Homemade GoTo mount for Telescopes using Nylon wheels, GT2 belts and 100:1 ge...Janis Alnis
This document describes the construction of a homemade GoTo mount for telescopes using an AZ-ALT configuration with 75mm aperture telescopes. It includes inspirations from DIY communities and discusses initial attempts using a Seben mount that had issues with flexing and backlash. The final design uses Nema 17 stepper motors, 3D printed wheels, thrust bearings, and Arduino control for smooth tracking. Testing was done with various cameras including a webcam, DSLR, and observations of Mars.
This document describes a robust visual tracking system for golf clubs during a swing using a single video camera. The system detects the club in each frame using background subtraction and parallel segment detection. It generates hypotheses for the club location and removes implausible ones. Tracking is done frame-by-frame using a maximum likelihood estimation technique over multiple frames to deal with detection errors. The system models club motion with a double pendulum model and separates the swing into upswing and downswing phases with different motion models.
The Ring programming language version 1.10 book - Part 66 of 212Mahmoud Samir Fayed
The document describes code for rendering a 3D scene with OpenGL containing snowmen using a camera that can be moved with keyboard controls or mouse dragging. It includes functions for initializing GLUT, setting up the viewport and projection, drawing a snowman object, updating the camera position on key presses, and handling mouse movement to rotate the camera. It also introduces code for adding popup menus to control color, drawing style, and scale of the snowmen.
The document provides examples of using Lagrange multipliers to find the extremum of a function subject to a constraint. In example 8, the critical point and extremum are found for f(x,y,z) = x + y + z with the constraint x + y + z = 1. In example 9, the critical point (0, 0, 0) is identified as minimizing the distance from any point (x,y,z) to the origin. Example 10 finds the critical point (0, √2, √2) minimizes the distance function with the constraint x^2 + y^2 + z^2 = 2.
This document discusses techniques for improving cascaded shadow maps (CSM) to reduce flickering shadow quality. It presents an exact solution that uses bounding spheres to calculate stable split view matrices. It also presents an approximated solution that uses bounding boxes, directly calculates scaled and offset texture coordinates, and interpolates these values over frames. Finally, it discusses storage strategies and optimizing texture coordinate computation between the vertex and pixel shaders.
The Ring programming language version 1.8 book - Part 61 of 202Mahmoud Samir Fayed
This document contains examples of Ring code for implementing camera controls and mouse interactions in OpenGL programs using the RingFreeGLUT library. It shows how to update the camera position and direction based on key presses and mouse movement. Functions are provided to handle window resizing, rendering the scene from the camera's perspective, and processing input events for keys and mouse buttons.
This document provides an overview of various techniques for edge detection in digital images, including gradient edge detectors, compass detectors, Laplace detectors, edge linking, and the Hough transform. It defines edges and different types of edges. It explains how to approximate derivatives and gradients in digital images using convolution kernels. Examples are given of edge detection using Prewitt, Sobel, Roberts, Kirsch, and Laplacian operators. Edge linking and the Hough transform are introduced as methods for connecting detected edge pixels and finding line segments.
- Tiled is an open-source editor for creating and editing tile maps for use in video games and other multimedia projects.
- LibGDX is a cross-platform game development framework that supports loading and rendering Tiled maps.
- Tiled maps can have multiple layers, tiles, and object layers for entities like the player.
- LibGDX provides classes for loading, rendering, and getting tile map data from Tiled maps to enable map navigation and collision detection in games.
1. The document provides biographical information about Hang Xie and describes his interests which include bike travelling, poetry, programming, and working with the Kinect sensor.
2. It discusses several Kinect programming concepts and demos including getting depth and RGB images, working with point clouds and skeleton data, and creating augmented reality and gesture-based applications.
3. The document recommends several resources for learning Kinect programming including OpenNI, SimpleOpenNI, and various code examples and tutorials available online. It encourages exploring ways to create new applications using Kinect.
This document provides an introduction to Java 3D and building 3D scenes. It discusses Java 3D concepts like scene graphs, lighting, shapes, materials, and transformations. It also presents an example program called Checkers3D that demonstrates these concepts by creating a 3D scene with a tiled floor, floating sphere, lighting, and background. The document recommends installing the latest Java and Java 3D software to get started with 3D programming.
Beginning direct3d gameprogramming06_firststepstoanimation_20161115_jintaeksJinTaek Seo
This document provides an overview of transformations in the 3D graphics pipeline, including world, view, projection, and clipping transforms. It explains how to set up common transformation matrices like world, view, and projection matrices in Direct3D. Key matrix classes covered include D3DXMatrixTranslation, D3DXMatrixRotationY, and D3DXMatrixPerspectiveFovLH. The document also discusses quaternions, tutorials for using matrices, and techniques like depth buffering.
This document discusses 3D development technologies including 3D engines, tools, and algorithms. It provides examples of commonly used 3D engines like Unity3D, Unreal Engine, and CryEngine. It also covers 3D modeling tools, basics of different shader types, algorithms for transmittance and refraction, and examples of high quality real-time 3D rendering capabilities.
1) The document discusses AlphaGo and its use of machine learning techniques like deep neural networks, reinforcement learning, and Monte Carlo tree search to master the game of Go.
2) AlphaGo uses reinforcement learning to learn Go strategies and evaluate board positions by playing many games against itself. It also uses deep neural networks and convolutional neural networks to pattern-match board positions and Monte Carlo tree search to simulate future moves and strategies.
3) By combining these techniques, AlphaGo was able to defeat top human Go players by developing an intuitive understanding of the game and strategizing several moves in advance.
Introduction to Canvas - Toronto HTML5 User Groupbernice-chan
This document provides an overview of HTML5 Canvas and how it can be used to draw graphics and animate sprites. It discusses how Canvas uses an immediate mode where the entire canvas is redrawn on each frame. The 2D context API allows drawing shapes, text and images onto the canvas. Transformations can change the canvas but objects drawn become a single pixel collection. Browser support is checked using a dummy canvas element. Basic drawing includes rectangles, lines, arcs and text. Images can also be added and clipped. Compositing controls transparency. Sprite animation is demonstrated using a tile sheet and timer loop. Finally, rocket science is used as an example for animating a rotating and accelerating rocket.
Projection matrices are used to project 3D scenes onto a 2D viewport. OpenGL uses normalization to convert all projections to orthogonal projections within the default view volume. This allows using standard transformations in the graphics pipeline and efficient clipping. Oblique projections involve a shear transformation followed by an orthogonal projection. Perspective projections are achieved by applying a perspective matrix that maps the near and far planes to the default clipping volume while preserving depth ordering for hidden surface removal.
Here are the key steps to solve this problem:
1. Write the rotation matrix for 45 degree rotation about the x-axis:
R = [1 0 0]
[0 cos(45) -sin(45)]
[0 sin(45) cos(45)]
2. Write the scaling matrix with factors of 4 in each direction:
S = [4 0 0]
[0 4 0]
[0 0 4]
3. Pre-multiply the original coordinates by the rotation matrix, then scale the results by pre-multiplying the rotation matrix by the scaling matrix:
A' = SR(0,1,0)
= S(0,0.
CS 354 Object Viewing and RepresentationMark Kilgard
- The document summarizes a lecture on viewing and representing 3D objects in computer graphics. It discusses representing objects as triangle meshes and storing vertex data in arrays indexed by triangle lists. It also covers transforms like glFrustum and gluLookAt for viewing, and examples of modeling transforms.
- Common ways to represent 3D objects include procedural, explicit polygon meshes, and implicit surfaces. Triangle meshes stored with unique vertex positions and triangle indices are popular due to efficiency and compatibility with OpenGL/GPU rendering.
- The lecture also covered projection transforms, modeling transforms, lighting, and "look at" camera positioning for 3D viewing. Next lecture will discuss mesh properties and OpenGL rendering details.
OpenGL ES 1.1 is the 3D graphics API used by the iPhone and while it is extremely powerful it can often be very intimidating to the beginner. One of the main issues is that while there is a great deal of documentation and tutorials for OpenGL like the “Red Book” and other sources online there seem to be very few available resources for Open GL ES. This session will introduce the concepts of developing with OpenGL ES 1.1 and demonstrate them via sample code.
Homemade GoTo mount for Telescopes using Nylon wheels, GT2 belts and 100:1 ge...Janis Alnis
This document describes the construction of a homemade GoTo mount for telescopes using an AZ-ALT configuration with 75mm aperture telescopes. It includes inspirations from DIY communities and discusses initial attempts using a Seben mount that had issues with flexing and backlash. The final design uses Nema 17 stepper motors, 3D printed wheels, thrust bearings, and Arduino control for smooth tracking. Testing was done with various cameras including a webcam, DSLR, and observations of Mars.
This document describes a robust visual tracking system for golf clubs during a swing using a single video camera. The system detects the club in each frame using background subtraction and parallel segment detection. It generates hypotheses for the club location and removes implausible ones. Tracking is done frame-by-frame using a maximum likelihood estimation technique over multiple frames to deal with detection errors. The system models club motion with a double pendulum model and separates the swing into upswing and downswing phases with different motion models.
The Ring programming language version 1.10 book - Part 66 of 212Mahmoud Samir Fayed
The document describes code for rendering a 3D scene with OpenGL containing snowmen using a camera that can be moved with keyboard controls or mouse dragging. It includes functions for initializing GLUT, setting up the viewport and projection, drawing a snowman object, updating the camera position on key presses, and handling mouse movement to rotate the camera. It also introduces code for adding popup menus to control color, drawing style, and scale of the snowmen.
The document provides examples of using Lagrange multipliers to find the extremum of a function subject to a constraint. In example 8, the critical point and extremum are found for f(x,y,z) = x + y + z with the constraint x + y + z = 1. In example 9, the critical point (0, 0, 0) is identified as minimizing the distance from any point (x,y,z) to the origin. Example 10 finds the critical point (0, √2, √2) minimizes the distance function with the constraint x^2 + y^2 + z^2 = 2.
This document discusses techniques for improving cascaded shadow maps (CSM) to reduce flickering shadow quality. It presents an exact solution that uses bounding spheres to calculate stable split view matrices. It also presents an approximated solution that uses bounding boxes, directly calculates scaled and offset texture coordinates, and interpolates these values over frames. Finally, it discusses storage strategies and optimizing texture coordinate computation between the vertex and pixel shaders.
The Ring programming language version 1.8 book - Part 61 of 202Mahmoud Samir Fayed
This document contains examples of Ring code for implementing camera controls and mouse interactions in OpenGL programs using the RingFreeGLUT library. It shows how to update the camera position and direction based on key presses and mouse movement. Functions are provided to handle window resizing, rendering the scene from the camera's perspective, and processing input events for keys and mouse buttons.
This document provides an overview of various techniques for edge detection in digital images, including gradient edge detectors, compass detectors, Laplace detectors, edge linking, and the Hough transform. It defines edges and different types of edges. It explains how to approximate derivatives and gradients in digital images using convolution kernels. Examples are given of edge detection using Prewitt, Sobel, Roberts, Kirsch, and Laplacian operators. Edge linking and the Hough transform are introduced as methods for connecting detected edge pixels and finding line segments.
- Tiled is an open-source editor for creating and editing tile maps for use in video games and other multimedia projects.
- LibGDX is a cross-platform game development framework that supports loading and rendering Tiled maps.
- Tiled maps can have multiple layers, tiles, and object layers for entities like the player.
- LibGDX provides classes for loading, rendering, and getting tile map data from Tiled maps to enable map navigation and collision detection in games.
1. The document provides biographical information about Hang Xie and describes his interests which include bike travelling, poetry, programming, and working with the Kinect sensor.
2. It discusses several Kinect programming concepts and demos including getting depth and RGB images, working with point clouds and skeleton data, and creating augmented reality and gesture-based applications.
3. The document recommends several resources for learning Kinect programming including OpenNI, SimpleOpenNI, and various code examples and tutorials available online. It encourages exploring ways to create new applications using Kinect.
This document provides an introduction to Java 3D and building 3D scenes. It discusses Java 3D concepts like scene graphs, lighting, shapes, materials, and transformations. It also presents an example program called Checkers3D that demonstrates these concepts by creating a 3D scene with a tiled floor, floating sphere, lighting, and background. The document recommends installing the latest Java and Java 3D software to get started with 3D programming.
Beginning direct3d gameprogramming06_firststepstoanimation_20161115_jintaeksJinTaek Seo
This document provides an overview of transformations in the 3D graphics pipeline, including world, view, projection, and clipping transforms. It explains how to set up common transformation matrices like world, view, and projection matrices in Direct3D. Key matrix classes covered include D3DXMatrixTranslation, D3DXMatrixRotationY, and D3DXMatrixPerspectiveFovLH. The document also discusses quaternions, tutorials for using matrices, and techniques like depth buffering.
This document discusses 3D development technologies including 3D engines, tools, and algorithms. It provides examples of commonly used 3D engines like Unity3D, Unreal Engine, and CryEngine. It also covers 3D modeling tools, basics of different shader types, algorithms for transmittance and refraction, and examples of high quality real-time 3D rendering capabilities.
1) The document discusses AlphaGo and its use of machine learning techniques like deep neural networks, reinforcement learning, and Monte Carlo tree search to master the game of Go.
2) AlphaGo uses reinforcement learning to learn Go strategies and evaluate board positions by playing many games against itself. It also uses deep neural networks and convolutional neural networks to pattern-match board positions and Monte Carlo tree search to simulate future moves and strategies.
3) By combining these techniques, AlphaGo was able to defeat top human Go players by developing an intuitive understanding of the game and strategizing several moves in advance.
Introduction to Canvas - Toronto HTML5 User Groupbernice-chan
This document provides an overview of HTML5 Canvas and how it can be used to draw graphics and animate sprites. It discusses how Canvas uses an immediate mode where the entire canvas is redrawn on each frame. The 2D context API allows drawing shapes, text and images onto the canvas. Transformations can change the canvas but objects drawn become a single pixel collection. Browser support is checked using a dummy canvas element. Basic drawing includes rectangles, lines, arcs and text. Images can also be added and clipped. Compositing controls transparency. Sprite animation is demonstrated using a tile sheet and timer loop. Finally, rocket science is used as an example for animating a rotating and accelerating rocket.
Projection matrices are used to project 3D scenes onto a 2D viewport. OpenGL uses normalization to convert all projections to orthogonal projections within the default view volume. This allows using standard transformations in the graphics pipeline and efficient clipping. Oblique projections involve a shear transformation followed by an orthogonal projection. Perspective projections are achieved by applying a perspective matrix that maps the near and far planes to the default clipping volume while preserving depth ordering for hidden surface removal.
Here are the key steps to solve this problem:
1. Write the rotation matrix for 45 degree rotation about the x-axis:
R = [1 0 0]
[0 cos(45) -sin(45)]
[0 sin(45) cos(45)]
2. Write the scaling matrix with factors of 4 in each direction:
S = [4 0 0]
[0 4 0]
[0 0 4]
3. Pre-multiply the original coordinates by the rotation matrix, then scale the results by pre-multiplying the rotation matrix by the scaling matrix:
A' = SR(0,1,0)
= S(0,0.
CS 354 Object Viewing and RepresentationMark Kilgard
- The document summarizes a lecture on viewing and representing 3D objects in computer graphics. It discusses representing objects as triangle meshes and storing vertex data in arrays indexed by triangle lists. It also covers transforms like glFrustum and gluLookAt for viewing, and examples of modeling transforms.
- Common ways to represent 3D objects include procedural, explicit polygon meshes, and implicit surfaces. Triangle meshes stored with unique vertex positions and triangle indices are popular due to efficiency and compatibility with OpenGL/GPU rendering.
- The lecture also covered projection transforms, modeling transforms, lighting, and "look at" camera positioning for 3D viewing. Next lecture will discuss mesh properties and OpenGL rendering details.
OpenGL ES 1.1 is the 3D graphics API used by the iPhone and while it is extremely powerful it can often be very intimidating to the beginner. One of the main issues is that while there is a great deal of documentation and tutorials for OpenGL like the “Red Book” and other sources online there seem to be very few available resources for Open GL ES. This session will introduce the concepts of developing with OpenGL ES 1.1 and demonstrate them via sample code.
Computer Graphics - Lecture 03 - Virtual Cameras and the Transformation Pipeline💻 Anton Gerdelan
Slides from when I was teaching CS4052 Computer Graphics at Trinity College Dublin in Ireland.
These slides aren't used any more so they may as well be available to the public!
There are some mistakes in the slides, I'll try to comment below these.
The Day You Finally Use Algebra: A 3D Math PrimerJanie Clayton
This document provides an overview of various math and programming concepts used for graphics. It begins with an introduction to linear algebra and how it allows performing actions on multiple values simultaneously through matrices. It then discusses trigonometry and how triangles are used as a foundation for 3D graphics. Finally, it shares code for a fragment shader that simulates refraction through a sphere to demonstrate these concepts in action.
This is a primer on some of the foundations of 3D math used in computer graphics programming. This is the version of the talk from CocoaConf Chicago 2015.
- The document introduces real-time shaders for artists working in Softimage and discusses three key hurdles for understanding shaders: 1) dot products and shading calculations, 2) normal mapping and environment mapping, and 3) shader blending techniques.
- It provides examples of shader code to illustrate dot products, normal mapping, and blurring textures.
- The goal is to help artists understand and use shaders through a tutorial on basic shader concepts and translating shader logic into Softimage.
This document discusses coordinate systems and mapping between world coordinates and screen coordinates in OpenGL. It explains that:
1) Objects are defined using world coordinates, while screens use pixel coordinates, so OpenGL maps between these spaces.
2) The world window defines the region of the world coordinates that will be drawn, and the viewport defines the screen region it will be drawn to.
3) OpenGL uses a linear transformation to map world to screen coordinates, defined by scaling and translation constants A, B, C, and D that are calculated based on the world window and viewport sizes.
The document describes a geometry shader-based approach to bump mapping that has several advantages over traditional CPU-based approaches. The geometry shader constructs an object-to-texture space mapping for each triangle, allowing lighting computations to be done efficiently in texture space in the pixel shader. It addresses issues like texture mirroring and lighting discontinuities. Examples and Cg source code are provided to illustrate the technique.
This document summarizes Ja-Keoung Koo's presentation on structure from motion. It discusses image formation, the structure from motion pipeline with calibrated cameras, and the 8-point algorithm. The key points are:
1. Image formation maps 3D world points to 2D image points using a camera's intrinsic and extrinsic parameters.
2. Structure from motion with calibrated cameras recovers 3D structure and camera motion from 2D correspondences using the essential matrix and 8-point algorithm.
3. The 8-point algorithm finds the essential matrix from point correspondences, decomposes it to recover the rotation and translation between views.
Shadow Volumes on Programmable Graphics Hardwarestefan_b
The document proposes a method for computing shadow volumes on programmable graphics hardware. It involves using textures to store vertex positions and silhouette edge information. A quad texture stores data for each edge indicating whether it is silhouetted against each light source. During shadow rendering, this texture is used as a vertex array to extrude shadow quads for silhouetted edges. This approach avoids CPU processing and enables dynamic scenes by keeping all data on the GPU.
The Ring programming language version 1.5.1 book - Part 53 of 180Mahmoud Samir Fayed
The document provides examples of Ring code for implementing camera controls and mouse interactions in 3D graphics using the RingFreeGLUT library. It describes how to handle mouse movement and button presses to rotate the camera view by updating the camera's direction vectors based on mouse movement. It also shows how to use keyboard inputs to move the camera position and rotate the camera view. The examples draw a scene with snowmen using 3D primitives and the camera.
The document discusses several OpenGL functions and concepts related to setting up the coordinate system and rendering 3D objects. It explains how functions like glOrtho, glMatrixMode, glTranslate, glRotate, and glScale are used to apply transformations to the modelview and projection matrices. It also covers setting the viewport and world window. Finally, it provides details on functions like glutSolidSphere and glutWireCube that can be used to render basic 3D shapes.
The Ring programming language version 1.6 book - Part 62 of 189Mahmoud Samir Fayed
This document provides documentation for Ring code related to a 3D tic-tac-toe game. It includes classes for:
1. Managing the game logic and checking for a winner (GameOver, CheckWinner)
2. Rendering the 3D cubes that make up the game board using OpenGL (GameCube)
3. Playing background music and sounds (GameSound)
4. Providing a base for graphics applications with event handling (GraphicsAppBase)
Trident International Graphics Workshop 2014 4/5Takao Wada
This document summarizes Day 4 of a 5-day graphics programming workshop using Cocos-2d-x. The agenda includes reviewing concepts, modifying classes to support 3D rendering, per pixel rendering, normal mapping, and parametric surfaces. It discusses updating classes to support 3D shader nodes and lighting, computing lighting per pixel in the fragment shader, culling and composing 2D and 3D scenes, and implementing normal mapping and generating geometries from parametric equations. Attendees are given exercises to render spheres with Blinn-Phong shading, change rendering settings, and create new parametric surfaces.
- The lecture covered graphics math topics including homogeneous coordinates and projective transformations.
- Homework 2 was due and an in-class quiz was given. Details on Project 1 were announced.
- The final exam date was moved and last class will be a review session. Daily quiz solutions will be provided.
- Office hours and last lecture topics were reviewed to introduce the current lecture on further graphics math concepts.
The Ring programming language version 1.5.3 book - Part 65 of 184Mahmoud Samir Fayed
The document describes code for a 3D scene rendered with OpenGL and GLUT. It includes functions for drawing a snowman, moving the camera based on keyboard input, and handling mouse input for camera rotation. It also defines constants for menu items and implements popup menus for color and scale options that can change properties of the rendered snowman.
Similar to Trident International Graphics Workshop 2014 2/5 (20)
DDS Security Version 1.2 was adopted in 2024. This revision strengthens support for long runnings systems adding new cryptographic algorithms, certificate revocation, and hardness against DoS attacks.
Microservice Teams - How the cloud changes the way we workSven Peters
A lot of technical challenges and complexity come with building a cloud-native and distributed architecture. The way we develop backend software has fundamentally changed in the last ten years. Managing a microservices architecture demands a lot of us to ensure observability and operational resiliency. But did you also change the way you run your development teams?
Sven will talk about Atlassian’s journey from a monolith to a multi-tenanted architecture and how it affected the way the engineering teams work. You will learn how we shifted to service ownership, moved to more autonomous teams (and its challenges), and established platform and enablement teams.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
WhatsApp offers simple, reliable, and private messaging and calling services for free worldwide. With end-to-end encryption, your personal messages and calls are secure, ensuring only you and the recipient can access them. Enjoy voice and video calls to stay connected with loved ones or colleagues. Express yourself using stickers, GIFs, or by sharing moments on Status. WhatsApp Business enables global customer outreach, facilitating sales growth and relationship building through showcasing products and services. Stay connected effortlessly with group chats for planning outings with friends or staying updated on family conversations.
Zoom is a comprehensive platform designed to connect individuals and teams efficiently. With its user-friendly interface and powerful features, Zoom has become a go-to solution for virtual communication and collaboration. It offers a range of tools, including virtual meetings, team chat, VoIP phone systems, online whiteboards, and AI companions, to streamline workflows and enhance productivity.
Flutter is a popular open source, cross-platform framework developed by Google. In this webinar we'll explore Flutter and its architecture, delve into the Flutter Embedder and Flutter’s Dart language, discover how to leverage Flutter for embedded device development, learn about Automotive Grade Linux (AGL) and its consortium and understand the rationale behind AGL's choice of Flutter for next-gen IVI systems. Don’t miss this opportunity to discover whether Flutter is right for your project.
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Łukasz Chruściel
No one wants their application to drag like a car stuck in the slow lane! Yet it’s all too common to encounter bumpy, pothole-filled solutions that slow the speed of any application. Symfony apps are not an exception.
In this talk, I will take you for a spin around the performance racetrack. We’ll explore common pitfalls - those hidden potholes on your application that can cause unexpected slowdowns. Learn how to spot these performance bumps early, and more importantly, how to navigate around them to keep your application running at top speed.
We will focus in particular on tuning your engine at the application level, making the right adjustments to ensure that your system responds like a well-oiled, high-performance race car.
GraphSummit Paris - The art of the possible with Graph TechnologyNeo4j
Sudhir Hasbe, Chief Product Officer, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfUndress Baby
The quest for the best AI face swap solution is marked by an amalgamation of technological prowess and artistic finesse, where cutting-edge algorithms seamlessly replace faces in images or videos with striking realism. Leveraging advanced deep learning techniques, the best AI face swap tools meticulously analyze facial features, lighting conditions, and expressions to execute flawless transformations, ensuring natural-looking results that blur the line between reality and illusion, captivating users with their ingenuity and sophistication.
Web:- https://undressbaby.com/
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
OpenMetadata Community Meeting - 5th June 2024OpenMetadata
The OpenMetadata Community Meeting was held on June 5th, 2024. In this meeting, we discussed about the data quality capabilities that are integrated with the Incident Manager, providing a complete solution to handle your data observability needs. Watch the end-to-end demo of the data quality features.
* How to run your own data quality framework
* What is the performance impact of running data quality frameworks
* How to run the test cases in your own ETL pipelines
* How the Incident Manager is integrated
* Get notified with alerts when test cases fail
Watch the meeting recording here - https://www.youtube.com/watch?v=UbNOje0kf6E
4. To cut off a part, specify the UV coordinate less than 1
Cut off a part of a texture
U
V
0.0
0.0
1.0
1.00.25 0.5 0.75
0.5
0.25
5. Create a plane dice
Copy “dice.png” to your
“Resources/Imgaes” folder
Draw a whole image
Cut off the part of “1” and draw
Cut off another number and draw
Work2-1
6. 3D geometry
Right-handed coordinate system Left-handed coordinate system
X
Y
Z
X
Y
Z
• Mathematics
• Most of modeling tools
• OpenGL, etc.
• DirectX
• Unity, etc.
7. Transform calculation of 3-D graphics
Difference between RHS and LHS
x'
y'
z'
w'
æ
è
ç
ç
ç
ç
ö
ø
÷
÷
÷
÷
=
a b c d
e f g h
i j k l
m n o p
æ
è
ç
ç
ç
ç
ç
ö
ø
÷
÷
÷
÷
÷
x
y
z
w
æ
è
ç
ç
ç
ç
ö
ø
÷
÷
÷
÷
x' y' z' w'( )= x y z w( )
a b c d
e f g h
i j k l
m n o p
æ
è
ç
ç
ç
ç
ç
ö
ø
÷
÷
÷
÷
÷
RHS (Right-handed system) uses column vector as vectors, i.e.
position, direction, etc.
LHS (Left-handed system) uses row vector as vectors, i.e. position,
direction, etc.
8. 3-D Transformation
Model space World space View space Screen space
Y
XZ
Y
XZ
Y
XZ
Projection space
Cy C
x C
z
World
transform
View
transform
Projection
transform
Screen
transform
10. Transform from the world space to the camera space
View transformation
// Cocos-2d-x
Mat4::createLookAt(eye, center, up, &modelViewMatrix);
X
Y
Z
eye
lookat
up
eye: Eye position (camera position)
lookat: Look at point (target to look)
up: Up vector (camera attitude)
11. Create a view matrix
Cont’d
X,Y,Z: Normalized basis vector of a model
X’,Y’,Z’: Normalized basis vector of a camera
E: Camera position
x’ = P X’
y’ = P Y’
z’ = P Z’
Xx ' Xy ' Xz ' -(E'· X')
Yx ' Yy ' Yz ' -(E·Y ')
Zx ' Zy ' Zz ' -(E ·Z ')
0 0 0 1
æ
è
ç
ç
ç
ç
ç
ö
ø
÷
÷
÷
÷
÷
Z
X
X’
Z’
P
x
z
x’z’
E
12. FOVy – Filed of view (Vertical)
Perspective projection
transformation
FOVy
Near clip plane Far clip plane
// Cocos-2d-x
Mat4::createPerspective(60, (GLfloat)width / height, 0.1f, 100.0f, &projectionMatrix);
width
height
Aspect ratio
= width / height
Transform from the view space to the normalized 2-D space
-1≤ x ≤ 1
-1 ≤ y ≤ 1
-1 ≤ z ≤ 1
13. Draw the normalized pixel data to a screen
Screen transformation
Projection space
1
1
-1
-1
14. Draw a cubic dice not using a camera
Copy the whole project to a new project “WSSample2”
Create a cube vertices and draw
For lighting, prepare normal vectors (Nx,Ny,Nz)
Work 2-2
GLfloat vertices[] = {
// x y z Nx Ny Nz R G B A U V
-1.0f, 1.0f, -1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, // 1
-1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.25f,
1.0f, 1.0f, -1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.25f, 0.0f,
1.0f, 1.0f, -1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.25f, 0.0f,
-1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.25f,
1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.25f, 0.25f,
// snip…
21. Rotation
Around X,Y or Z axis
Around any vector
Affine transformation 2
Mat4 worldMatrix;
rotY += 1.0f * M_PI / 180; // Convert from degree to
radian
Mat4::createRotationY(rotY, &worldMatrix);
getGLProgramState()->setUniformMat4("u_world", worldMatrix);
Ex. Rotate 1 degree per frame along Y-
axis
23. Scale a model
Scaling matrix (MS)
Rotate a model
Rotation matrix around X or Y or Z axis (MRx, MRy, MRz)
Translate a model
Translation matrix (MT)
Combine transformations by multiplying transformation
matrices
MS * MR * MT
MS * MT * MR
Try other combinations
Work 2-5
24. Draw order problem
Use a depth buffer (2-D array, elements are for pixels)
Store the z-coordinate of the pixel.
If another pixel is rendered in the same pixel, compare its z-
coordinate with the buffer value to decide whether replace or not.
Usually used 16bit depth (unsigned short, 0 – 65535)
Buffer is to be cleared first each frame
Depth buffer and depth test
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
25. Create a 3-D Camera class, “Camera3d” for
Cocos-2d-x
Work 2-6