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 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.
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.
XNA L04–Primitives, IndexBuffer and VertexBufferMohammad Shaker
This document discusses drawing 3D primitives and using vertex and index buffers in XNA game development. It begins with an overview of different primitive types like points, lines, and triangles. It then covers drawing triangles by defining vertex positions and colors. Next, it demonstrates creating a rotating tetrahedron using triangle lists. The document concludes by explaining how to create an icosahedron mesh using vertex and index buffers to store vertex data more efficiently for rendering. Key steps include generating vertex and index data, creating vertex and index buffers, and drawing indexed triangles.
The document discusses 3D rendering in WPF. It provides code examples for creating 3D models like a cuboid using triangles, adding lighting and cameras, and manipulating 3D objects. It also covers using the Viewport2DVisual3D control to display 2D UI elements in a 3D environment. Code is provided to construct the geometry and add 2D components like text blocks and buttons to the visual host.
This document provides an overview of shaders in XNA game development. It discusses what shaders are and how they allow developers to program graphics pipelines rather than relying on fixed function pipelines. It also covers HLSL (High Level Shader Language) and how to define vertex formats, vertex shaders, and techniques in HLSL code files to render 3D objects with customized shaders. Specific topics covered include declaring effects, loading shader files, using techniques and passes, defining a custom vertex format structure, and writing a simple vertex shader to render colored triangles.
The document discusses experimenting with shaders in XNA game development. It describes replacing code in an HLSL file to output vertex color values directly from position data. This avoids color clipping issues. It also discusses passing unclipped position data to the pixel shader and interpolating color values properly. Examples of other shader techniques are briefly mentioned like texturing, lighting, shadow mapping, and post-processing effects.
The document provides an introduction and tutorial to Java 3D, a library for displaying three-dimensional graphics in Java. It covers installing Java 3D, creating a basic 3D program with a cube, adding lighting, positioning objects in 3D space using transformations, changing object appearances using materials and textures, and more. Examples of Java 3D code are provided throughout to demonstrate key concepts.
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.
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.
XNA L04–Primitives, IndexBuffer and VertexBufferMohammad Shaker
This document discusses drawing 3D primitives and using vertex and index buffers in XNA game development. It begins with an overview of different primitive types like points, lines, and triangles. It then covers drawing triangles by defining vertex positions and colors. Next, it demonstrates creating a rotating tetrahedron using triangle lists. The document concludes by explaining how to create an icosahedron mesh using vertex and index buffers to store vertex data more efficiently for rendering. Key steps include generating vertex and index data, creating vertex and index buffers, and drawing indexed triangles.
The document discusses 3D rendering in WPF. It provides code examples for creating 3D models like a cuboid using triangles, adding lighting and cameras, and manipulating 3D objects. It also covers using the Viewport2DVisual3D control to display 2D UI elements in a 3D environment. Code is provided to construct the geometry and add 2D components like text blocks and buttons to the visual host.
This document provides an overview of shaders in XNA game development. It discusses what shaders are and how they allow developers to program graphics pipelines rather than relying on fixed function pipelines. It also covers HLSL (High Level Shader Language) and how to define vertex formats, vertex shaders, and techniques in HLSL code files to render 3D objects with customized shaders. Specific topics covered include declaring effects, loading shader files, using techniques and passes, defining a custom vertex format structure, and writing a simple vertex shader to render colored triangles.
The document discusses experimenting with shaders in XNA game development. It describes replacing code in an HLSL file to output vertex color values directly from position data. This avoids color clipping issues. It also discusses passing unclipped position data to the pixel shader and interpolating color values properly. Examples of other shader techniques are briefly mentioned like texturing, lighting, shadow mapping, and post-processing effects.
The document provides an introduction and tutorial to Java 3D, a library for displaying three-dimensional graphics in Java. It covers installing Java 3D, creating a basic 3D program with a cube, adding lighting, positioning objects in 3D space using transformations, changing object appearances using materials and textures, and more. Examples of Java 3D code are provided throughout to demonstrate key concepts.
Harris corner detection is used to extract local features from images. It works by (1) computing the gradient at each point, (2) constructing a second moment matrix from the gradient, and (3) using the eigenvalues of this matrix to score how "corner-like" each point is. Points with a large, local maximum score are detected as corners. The Harris operator, which is a variant using the trace of the matrix, is commonly used due to its efficiency. Corners provide distinctive local features that can be matched between images.
Here is a function to calculate the factorial of an integer N using a for loop:
function fact = factorial(N)
fact = 1;
for i = 1:N
fact = fact * i;
end
end
To test it:
N = 5;
result = factorial(N);
This function:
1. Initializes the factorial variable fact to 1 outside the loop
2. Uses a for loop from 1 to N to iterate over the integers
3. On each iteration, it multiplies the running fact variable by the current integer i
4. After the loop, fact will contain the final factorial
This is complete JavaScript framework for building 3D games and experiences with HTML5, WebGL, WebVR and Web Audio (https://www.babylonjs.com). BabylonJS' basic concepts are explained and illustrated based on a handson lab provided by Mozilla.
This document contains conceptual problems and their solutions related to optical images formed by mirrors and lenses. For concave mirrors, it discusses that the virtual image size depends on the object distance, and real images are possible. Convex mirrors never form real images. A concave mirror can form enlarged real images if the object is between the center of curvature and focal point. Plane mirrors form virtual images, and the eye location range to see the image is discussed. Spherical mirrors equations relate image and object distances. Refraction through a fish bowl or glass rod immersed in water is analyzed. A double concave lens problem applies lens equations to find the focal length, image location and size, and determines if the image is real/virtual and
This chapter discusses reflection and mirrors. Key points include:
1) Plane mirrors form images that are virtual, same size, and laterally inverted compared to the object. Spherical mirrors can form real or virtual images depending on the object distance.
2) Ray tracing diagrams can be used to determine the nature, size, and location of images formed by spherical mirrors based on the object distance and mirror parameters like radius of curvature and focal length.
3) Mirror equations relate the object and image distances (p and q), focal length (f), and magnification (M) of spherical mirrors. Real, inverted images form when the object is between the focal point and center of curvature. Virtual, erect images form when
Company of Heroes 2 (COH2) Rendering Technology: The cold facts of recreating...Daniel Barrero
Presentation at KGC2013 about the techniques developed for COH2 to reproduce the harsh winter conditions of the eastern front of World War 2. It covers the technology developed for dynamic snow and ice rendering, what worked what didn't. It covers as well the lighting and conversion of the COH1 engine from forward to a deferred renderer.
Animation involves rapidly displaying a sequence of images to create the illusion of movement. When developing mobile web games or animations, developers must consider resource management, object representation, animation techniques, and event processing to optimize performance. Hardware acceleration is also important, as it improves the performance of canvas and CSS3D transformations on mobile devices. The Collie library is designed to help with high performance animation across devices by supporting optimized rendering methods and detailed region detection of objects.
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.
The document discusses a lecture on iPhone application development that covers views, drawing, and animation. It provides information on views including view fundamentals, the view hierarchy, view structures like frames and bounds, and creating and manipulating views. It also discusses drawing in views by overriding the drawRect method and using Core Graphics for drawing operations.
The document describes how to create water flow maps using Houdini. It explains that a tessellated grid is used to represent the water surface, which is then deformed using techniques like combing normals or magnet deformers to generate flow patterns. The deformed grid is then rendered to create a texture map representing the water flow. Specific nodes and techniques in Houdini like comb tools, metaballs, and attribute transfers are demonstrated for generating realistic yet controllable water flow maps.
Shadow Mapping with Today's OpenGL HardwareMark Kilgard
The document discusses shadow mapping, a technique for real-time shadow generation in 3D graphics. Shadow mapping works by rendering the scene from the point of view of the light to generate a depth map, then using that depth map to determine whether surfaces are in shadow during the main rendering pass from the camera's point of view. Hardware support for shadow mapping allows efficient shadow tests by comparing depth map values to fragment depths.
This document provides an overview of views, drawing, and animation in iPhone application development. It discusses view fundamentals like the view hierarchy, frames and bounds, and view-related structures. It covers drawing by overriding drawRect and using Core Graphics. It also discusses animating view properties.
Introduction to Game Programming TutorialRichard Jones
The slides to accompany the Introduction to Game Programming tutorial I ran at LCA 2010. The tutorial ran over 90 minutes with the participants following along.
The document provides instructions on creating and customizing Java applets. It explains that applets extend the JApplet class and must implement init(), start(), stop(), and paint() methods. It also lists Graphics methods that can be used to draw on applets and describes how to add mouse event handling.
This document provides an overview of graphics and animations in Android. It discusses the architecture including surfaces, views, and view groups. It covers graphics topics such as Skia, OpenGL, rendering scripts, surfaces, and drawing with canvases, paints, shaders, color filters, and bitmaps. It also discusses animations including the animation superclass, transformation, fading, sequence, cross-fading, and layout animations. It provides tips on performance and previews future property animation capabilities in Android.
The Ring programming language version 1.5.3 book - Part 48 of 184Mahmoud Samir Fayed
This document provides documentation on creating a 2D game engine in Ring. It discusses organizing the project into layers, including the games layer, game engine classes layer, and interface to graphics library layer. It then describes the key classes in the game engine - Game, GameObject, Sprite, Text, Animate, Sound, and Map. It provides details on the attributes and methods for each class. It also provides an example of how to load the game engine library, create a Game object, and start drawing text to the screen. The document is intended to teach how to structure a 2D game engine project using different programming paradigms in Ring.
Maximizing performance of 3 d user generated assets in unityWithTheBest
Maximizing performance of 3D user-generated assets in Unity
The document discusses optimizing 3D assets in Unity. It begins with an introduction and agenda, then covers optimization principles through examples from a trail renderer asset. The examples demonstrate reducing garbage collection by using queues instead of arrays, reusing components instead of creating new game objects, and comparing distances through dot products instead of taking square roots. Hands-on demonstrations are provided. Key takeaways are to profile for garbage collection, eliminate it by reusing objects when possible, and optimize comparisons.
2. reflection (solved example + exercise)SameepSehgal1
This document contains 20 solved examples related to the concepts of reflection.
The examples cover topics like laws of reflection, image formation using plane and curved mirrors, relative motion of object and image in plane mirrors, and numerical problems to calculate angles of incidence and reflection, focal length of curved mirrors, position and nature of images. Detailed step-by-step solutions are provided for each example.
The examples range from basic to slightly complex, involving application of mirror equations, concept of virtual objects and images, and relative motion concepts to solve problems related to reflection of light.
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.
The document provides tips for creating effective presentation slides, including using bullets for lists rather than explanations, limiting pie charts and bar graphs to 4-6 slices/bars, demonstrating trends through line charts, limiting transitions and animations, keeping slides simple with a consistent color scheme and readable font above size 22, and citing additional resources.
This document provides guidelines for creating effective PowerPoint presentations with tips on fonts, text, graphics, and design. The key recommendations include using no more than two fonts, keeping font sizes 32 point or larger, limiting the number of words and bullets per slide, choosing simple backgrounds, and focusing on the content rather than flashy designs. Overall, the guidelines emphasize keeping presentations clear, concise and focused on conveying the central message through the content.
Harris corner detection is used to extract local features from images. It works by (1) computing the gradient at each point, (2) constructing a second moment matrix from the gradient, and (3) using the eigenvalues of this matrix to score how "corner-like" each point is. Points with a large, local maximum score are detected as corners. The Harris operator, which is a variant using the trace of the matrix, is commonly used due to its efficiency. Corners provide distinctive local features that can be matched between images.
Here is a function to calculate the factorial of an integer N using a for loop:
function fact = factorial(N)
fact = 1;
for i = 1:N
fact = fact * i;
end
end
To test it:
N = 5;
result = factorial(N);
This function:
1. Initializes the factorial variable fact to 1 outside the loop
2. Uses a for loop from 1 to N to iterate over the integers
3. On each iteration, it multiplies the running fact variable by the current integer i
4. After the loop, fact will contain the final factorial
This is complete JavaScript framework for building 3D games and experiences with HTML5, WebGL, WebVR and Web Audio (https://www.babylonjs.com). BabylonJS' basic concepts are explained and illustrated based on a handson lab provided by Mozilla.
This document contains conceptual problems and their solutions related to optical images formed by mirrors and lenses. For concave mirrors, it discusses that the virtual image size depends on the object distance, and real images are possible. Convex mirrors never form real images. A concave mirror can form enlarged real images if the object is between the center of curvature and focal point. Plane mirrors form virtual images, and the eye location range to see the image is discussed. Spherical mirrors equations relate image and object distances. Refraction through a fish bowl or glass rod immersed in water is analyzed. A double concave lens problem applies lens equations to find the focal length, image location and size, and determines if the image is real/virtual and
This chapter discusses reflection and mirrors. Key points include:
1) Plane mirrors form images that are virtual, same size, and laterally inverted compared to the object. Spherical mirrors can form real or virtual images depending on the object distance.
2) Ray tracing diagrams can be used to determine the nature, size, and location of images formed by spherical mirrors based on the object distance and mirror parameters like radius of curvature and focal length.
3) Mirror equations relate the object and image distances (p and q), focal length (f), and magnification (M) of spherical mirrors. Real, inverted images form when the object is between the focal point and center of curvature. Virtual, erect images form when
Company of Heroes 2 (COH2) Rendering Technology: The cold facts of recreating...Daniel Barrero
Presentation at KGC2013 about the techniques developed for COH2 to reproduce the harsh winter conditions of the eastern front of World War 2. It covers the technology developed for dynamic snow and ice rendering, what worked what didn't. It covers as well the lighting and conversion of the COH1 engine from forward to a deferred renderer.
Animation involves rapidly displaying a sequence of images to create the illusion of movement. When developing mobile web games or animations, developers must consider resource management, object representation, animation techniques, and event processing to optimize performance. Hardware acceleration is also important, as it improves the performance of canvas and CSS3D transformations on mobile devices. The Collie library is designed to help with high performance animation across devices by supporting optimized rendering methods and detailed region detection of objects.
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.
The document discusses a lecture on iPhone application development that covers views, drawing, and animation. It provides information on views including view fundamentals, the view hierarchy, view structures like frames and bounds, and creating and manipulating views. It also discusses drawing in views by overriding the drawRect method and using Core Graphics for drawing operations.
The document describes how to create water flow maps using Houdini. It explains that a tessellated grid is used to represent the water surface, which is then deformed using techniques like combing normals or magnet deformers to generate flow patterns. The deformed grid is then rendered to create a texture map representing the water flow. Specific nodes and techniques in Houdini like comb tools, metaballs, and attribute transfers are demonstrated for generating realistic yet controllable water flow maps.
Shadow Mapping with Today's OpenGL HardwareMark Kilgard
The document discusses shadow mapping, a technique for real-time shadow generation in 3D graphics. Shadow mapping works by rendering the scene from the point of view of the light to generate a depth map, then using that depth map to determine whether surfaces are in shadow during the main rendering pass from the camera's point of view. Hardware support for shadow mapping allows efficient shadow tests by comparing depth map values to fragment depths.
This document provides an overview of views, drawing, and animation in iPhone application development. It discusses view fundamentals like the view hierarchy, frames and bounds, and view-related structures. It covers drawing by overriding drawRect and using Core Graphics. It also discusses animating view properties.
Introduction to Game Programming TutorialRichard Jones
The slides to accompany the Introduction to Game Programming tutorial I ran at LCA 2010. The tutorial ran over 90 minutes with the participants following along.
The document provides instructions on creating and customizing Java applets. It explains that applets extend the JApplet class and must implement init(), start(), stop(), and paint() methods. It also lists Graphics methods that can be used to draw on applets and describes how to add mouse event handling.
This document provides an overview of graphics and animations in Android. It discusses the architecture including surfaces, views, and view groups. It covers graphics topics such as Skia, OpenGL, rendering scripts, surfaces, and drawing with canvases, paints, shaders, color filters, and bitmaps. It also discusses animations including the animation superclass, transformation, fading, sequence, cross-fading, and layout animations. It provides tips on performance and previews future property animation capabilities in Android.
The Ring programming language version 1.5.3 book - Part 48 of 184Mahmoud Samir Fayed
This document provides documentation on creating a 2D game engine in Ring. It discusses organizing the project into layers, including the games layer, game engine classes layer, and interface to graphics library layer. It then describes the key classes in the game engine - Game, GameObject, Sprite, Text, Animate, Sound, and Map. It provides details on the attributes and methods for each class. It also provides an example of how to load the game engine library, create a Game object, and start drawing text to the screen. The document is intended to teach how to structure a 2D game engine project using different programming paradigms in Ring.
Maximizing performance of 3 d user generated assets in unityWithTheBest
Maximizing performance of 3D user-generated assets in Unity
The document discusses optimizing 3D assets in Unity. It begins with an introduction and agenda, then covers optimization principles through examples from a trail renderer asset. The examples demonstrate reducing garbage collection by using queues instead of arrays, reusing components instead of creating new game objects, and comparing distances through dot products instead of taking square roots. Hands-on demonstrations are provided. Key takeaways are to profile for garbage collection, eliminate it by reusing objects when possible, and optimize comparisons.
2. reflection (solved example + exercise)SameepSehgal1
This document contains 20 solved examples related to the concepts of reflection.
The examples cover topics like laws of reflection, image formation using plane and curved mirrors, relative motion of object and image in plane mirrors, and numerical problems to calculate angles of incidence and reflection, focal length of curved mirrors, position and nature of images. Detailed step-by-step solutions are provided for each example.
The examples range from basic to slightly complex, involving application of mirror equations, concept of virtual objects and images, and relative motion concepts to solve problems related to reflection of light.
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.
The document provides tips for creating effective presentation slides, including using bullets for lists rather than explanations, limiting pie charts and bar graphs to 4-6 slices/bars, demonstrating trends through line charts, limiting transitions and animations, keeping slides simple with a consistent color scheme and readable font above size 22, and citing additional resources.
This document provides guidelines for creating effective PowerPoint presentations with tips on fonts, text, graphics, and design. The key recommendations include using no more than two fonts, keeping font sizes 32 point or larger, limiting the number of words and bullets per slide, choosing simple backgrounds, and focusing on the content rather than flashy designs. Overall, the guidelines emphasize keeping presentations clear, concise and focused on conveying the central message through the content.
Basic Guidelines For PowerPoint PresentationNikki Dapanas
This document provides guidelines for creating effective PowerPoint presentations with 3 or fewer bullet points per slide, use of clear fonts and colors, inclusion of informative graphs, and balance of text and graphics. Key recommendations include using an outline slide to structure the presentation, writing in point form rather than sentences, employing consistent backgrounds and fonts, proofreading for errors, and closing with a summary and question slide.
PowerPoint presentations should follow simple design rules: use text sparingly and pictures over built-in backgrounds; align graphics to lead the eye to text; reduce excessive animations and sounds; and focus on clear communication using logic, credibility, and emotion, with the presenter taking center stage over the presentation slides.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive functioning. Exercising for at least 30 minutes three times per week is recommended to see these mental health benefits.
How to create an effective presentationKay Franklin
Create an engaging introduction to grab attention, focus on a clear main message and reinforce it throughout, and involve the audience with questions. Tell a relevant story to enhance the message. Conclude powerfully by summarizing the key point you want the audience to remember.
This is the 2 day workshop for Effective Design in PowerPoint. It combines technical and basic design techniques.
This was training deck for corporate training specially for Managers.
Guidelines on Developing Effective PowerPoint PresentationAsif Mehmood, CLDP
Asif Mehmood, [CLDP] is a Certified Learning and Development Professional from Concord Certification Corp, Canada. He holds a Masters degree in Business Administration [MBA] and has undergone a Training of Trainers [ToT] from the Pakistan Institute of Management [PIM]. He also holds a diploma in Information Technology. Currently he is working as a Training Associate at the Centre for Capacity Building, SDPI.
Asif has rich experience of conducting workshops on Microsoft Office 2003, 2007 & 2010 and Prezi for international development, public and corporate sector clients such as the Royal Norwegian Embassy [RNE], Fauji Fertilizer Bin Qasim Limited [FFBL], National Bank of Pakistan [NBP], IESCO, SACH and NDMA. Asif is known for his helpful and personalized training style.
Presentation Skills - Presenting to a Group Ossama Motawae
This document provides guidance on preparing and delivering a group presentation. It discusses preparing the presentation by analyzing the audience, setting objectives, and developing visual aids. It also covers delivering the presentation, including structuring it with an introduction, body, and conclusion and dealing with podium panic. The presentation time should be divided among these three sections, with the body taking the majority of time to cover the main points through questions and visuals to engage the audience. Overall, the document offers a comprehensive overview of effectively planning and presenting to a group.
The document provides tips for designing effective PowerPoint presentations. It recommends making slides big, simple, clear, progressive and consistent. Specifically, it suggests using large font sizes, simple language and visuals, clear contrasts and focal points, focusing on key points progressively, and maintaining consistency in design elements. The document also provides tips for presenting, such as speaking loudly and making eye contact with the audience.
The document discusses using XNA for game development on Windows Phone. It covers topics like using 2D and 3D graphics, handling input from touches, sensors and orientation changes, integrating networking, ads and Xbox Live functionality, and optimizing performance. Code examples are provided for common tasks like drawing sprites, handling input and animating objects. Future directions for XNA on other platforms like Silverlight and Windows 8 are also mentioned.
The document discusses techniques for optimizing Android UI performance. It covers optimizing adapter views by reusing views, pre-scaling images to avoid runtime scaling, invalidating specific regions instead of entire views, using fewer views in layouts by combining views, and avoiding memory allocations in performance critical code. The document provides examples of using view holders, compound drawables, ViewStubs, merge tags, custom views and layouts to reduce view count. It also discusses caching objects using soft and weak references to avoid memory leaks.
- HTML5 Canvas allows for dynamic drawing and animating directly in HTML using JavaScript scripting. It can be used to draw shapes, images, text and respond to user input like mouse clicks.
- The canvas element creates a grid that allows positioning images and objects by x and y coordinates. Basic drawing functions include lines, rectangles, curves and filling areas with colors.
- Transformations like translation and rotation can change the orientation of drawings on the canvas. The drawing state can be saved and restored to return to previous settings.
- Images can be drawn and manipulated at the pixel level by accessing image data. Animation is achieved by redrawing the canvas repeatedly with small changes.
- Data from sources like JSON can be
Async Redux Actions With RxJS - React Rally 2016Ben Lesh
Redux-observable allows combining RxJS and Redux by introducing Epics. Epics are Observable streams that handle asynchronous logic in response to Redux actions. This avoids callback hell and enables features like cancellation. An Epic takes an action stream, performs asynchronous operations like AJAX calls using RxJS, and dispatches result actions. This keeps Redux synchronous while managing complex async flows in a declarative and reusable way.
The document describes an implementation of the Model-View-Intent (MVI) architecture pattern for Android applications. It explains the key components of MVI - the Intent, Model, and View. The Intent interprets user interactions and outputs actions. The Model manages application state from actions and outputs state changes. The View renders state. It then provides code examples of an Android drawing app implemented using MVI, including classes for the Intent, Model, View, and drawing state data.
This document provides an overview of developing a Silverlight game, including designing levels and storyboards, implementing game logic for player movement and collision detection, developing the game using tools like Visual Studio and Expression Blend, and organizing code using the MVC pattern. It also describes techniques for animating game elements like scrolling the game board and frame-by-frame animations, as well as managing sounds. The game is divided into modular XAP files that are downloaded and loaded dynamically.
WebGL is a JavaScript API for rendering interactive 3D graphics and 2D graphics within any compatible web browser without the use of plug-ins. It can be used for data visualization, creative coding, art, 3D design environments, music videos, mathematical function graphing, 3D modeling, texture creation, physics simulations, and more. WebGL works by using JavaScript to interface with the GPU through WebGL API calls. Common libraries like Three.js simplify the use of WebGL. The basics of a WebGL app include setting up a 3D scene, camera, and rendering loop. Sample code is provided to load a 3D model and texture and allow interactive rotation. Resources listed for learning more include tutorials on Phil
asmt7/~$sc_210_-_assignment_7_fall_15.doc
asmt7/cosc_210_-_assignment_7_fall_15.doc
COSC 210 - Object Oriented Programming
Assignment 7
The objectives of this assignment are to:
1) Gain further understanding and experience with inheritance.
2) Gain understanding and experience with polymorphism.
3) Gain further understanding and experience with interfaces.
4) Gain understanding and experience with low level graphics.
5) Modify an existing program to meet new requirements applying concepts of objectives 1 through 4.
6) Gain experience with medium-size Java program.
7) Continue to practice good programming techniques.
AFTER YOU HAVE COMPLETED, create a zip file named [your name]Assignment7.zip containing your entire project. Upload the .zip file to Moodle. Printout all source files you created or modified. Include a screen shot of the editor with boxes, ellipses, lines and images shown in the editor. Turn-in all printouts.
COSC 210 – Fundamentals of Computer Science
Assignment 7 Problem Statement
Updated
On the tomcat drive in folder cosc210 you will find file named PainterStartup.zip. This file contains the source code for the start of a Painter program. In its current state, Painter can create boxes and text objects at given locations. Both boxes and text objects can be repositioned and resized using a mouse. The task is to add to the program the implementation for an ellipse, line, image, and group objects.
Instructions:
1) Add an ellipse object. An ellipse is very similar in implementation as the box, except it renders an oval instead of a rectangle. The ellipse can be repositioned by dragging the object to a new location. The ellipse can be resized by first clicking over the ellipse to display grab handles and then dragging a grab handle to a new position. The grab handles are to be rendered at the same positions as the box. Likewise, clicking anywhere in the smallest rectangle that encloses the ellipse performs selection.
2) Add a Line object. A Line is to be created by selecting a Line tool and then click and drag over the canvas. The line is rendered from the point of the initial click to the mouse pointer. On releasing the mouse the construction of the line object is completed. Have the Line object inherit from PtrDrawAbstractAreaObject. Thus it will have only two grab handles.
A Line is selected by clicking anywhere over the line. Right now if you click anywhere in the rectangular region hold the line, then the line is selected. To accomplish this task, override the isOver method in PtrDrawAbstractAreaObject.
Given below is a partial solution to determine if a mouse click position (the x and y parameters to the isOver method) is over a line:
double ratio = (double) getWidth() / (double) getHeight();
if (Math.abs((x - getX()) * ratio) - (y - getY()) <= 1) {
return true;
}
You need to modify this code when the y to x ratio is less than -1 or greater than 1. (Hint: Inverse the r ...
These are the slides of my talk about HexGL at the Adobe User Group meetup in the Netherlands.
More info: http://bkcore.com/blog/general/adobe-user-group-nl-talk-video-hexgl.html
This document provides an introduction to coding using JavaScript and codeguppy.com. It discusses creating accounts on codeguppy.com, using the code editor and output canvas, and exploring built-in assets like sprites and backgrounds. It then covers basic coding concepts like drag-and-drop coding, variables, functions, and animations using techniques like increasing variable values in a loop function. The document provides examples like drawing a bear face and coding a moving car to demonstrate these concepts.
The document discusses different methods for creating skyboxes and terrains in XNA game development. It provides code examples for creating a skydome using a model and single texture. It also discusses loading skybox textures, creating the skybox from six faces with different textures, and manipulating the terrain through a vertex buffer and height map. Websites referenced for additional skybox and terrain tutorials include Riemers, Rbwhitaker, Innovative Games, and PacktPub.
This document provides an overview of creating 3D graphics using the Three.js library. It describes the basic structure of a Three.js application including creating a scene, camera, and renderer. It also explains how to add objects like a cube to the scene, animate the cube by incrementally changing its rotation, and customize properties like color, size and rotation speed. The goal is to introduce the fundamentals needed to get started with Three.js and create simple animated 3D graphics in a web application.
The document discusses building 2D and 3D games with Ruby using low-level APIs. It covers topics like building 2D games with Ruby SDL, building 3D games with Ruby OpenGL, and whether Ruby is a legitimate player in the gaming space. Examples provided include sample code for sprites, events, and extensions to interface with C libraries for graphics and game development.
The document discusses building 2D and 3D games with Ruby using low-level APIs. It covers topics like building 2D games with Ruby SDL, building 3D games with Ruby OpenGL, and whether Ruby is a legitimate player in the gaming space. Examples provided include sample code for sprites, events, and extensions to interface with C libraries for graphics and game development.
The document discusses 2D graphics and particle engines in game development. It covers topics like SpriteBatches for drawing textures, acquiring fonts, texture atlases for animated sprites, rotating sprites by specifying a center point of rotation, and the anatomy of a 2D particle engine which includes particles, particle emitters that determine the location and number of particles created, and the engine itself. Code examples are provided for drawing sprites, text, and implementing animated sprites and rotating sprites.
The document provides an agenda and overview for an introduction to computer vision in .NET. The agenda includes discussing what digital images and computer vision are, demonstrating Hello OpenCV in .NET, covering convolution and edge detection, facial detection, facial detection with the Vonage Video API, and feature tracking and image projection. The document shares code examples and resources for working with computer vision libraries like OpenCV and Emgu CV in .NET.
The document discusses creating and animating custom views in Android. It covers topics like why to use custom views, the View class hierarchy, drawing and styling custom views, and different techniques for animating views including using Runnables, ValueAnimators, and ObjectAnimators. Key points include how to subclass View, override drawing methods like onDraw(), apply XML styling attributes, and animate view properties over time through interpolation of values.
Advanced Game Development with the Mobile 3D Graphics APITomi Aarnio
This document provides an overview of the Mobile 3D Graphics API (M3G), which was designed for 3D graphics on mobile devices. It discusses why developers should use M3G and highlights some of its key features, including scene graphs, dynamic meshes, animation, textures, and more. The document also provides code examples for common tasks like setting up a camera, rendering a rotating cube, and creating animated keyframe sequences.
This document provides an introduction to React and React Native. It begins with an overview of ReactJS, including its motivation as a library for building user interfaces and key concepts like components, the virtual DOM, JSX, immutability, and one-way data flow. It then covers React Native, explaining how it uses native components to render interfaces for mobile rather than HTML/CSS. The document concludes with exercises for creating basic React and React Native apps.
Semelhante a XNA L03–Models, Basic Effect and Animation (20)
Ultra Fast, Cross Genre, Procedural Content Generation in Games [Master Thesis]Mohammad Shaker
In my MSc. thesis, I have re-tackled the problem of procedurally generating content for physics-based games I have previously investigated in my BSc. graduation thesis. This time around I propose two novel methods: the first is projection based for faster generation of physics-based games content. The other, The Progressive Generation, is a generic, wide-range, across genre, customisable with playability check method all bundled in a fast progressive approach. This new method is applied on two completely different games: NEXT And Cut the Rope.
Short, Matters, Love - Passioneers Event 2015Mohammad Shaker
Short, Matters, Love is a presentation I prepared for freshmen students at the Faculty of Information Technology in Damascus, Syria organised by Passioneers - 2015
This document discusses Unity3D and game development. It provides an overview of Unity3D and other game engines like Unreal Engine, comparing their features and costs. Examples are given of popular games made with each engine. The document also lists several games the author has made using Unity3D and provides some additional resources and references.
The document discusses various topics related to mobile application design including cloud interaction, Android touch and gesture interaction, UI element sizing, screen sizes, changing orientation, retaining objects during configuration changes, multi-device targeting, and wearables. It provides examples and guidelines for designing applications that can adapt to different devices and configurations.
The document discusses principles of interaction design, color theory, and game design. It covers topics like primary and secondary colors, color harmonies, using color to attract attention and set mood, the importance of white space and negative space in design, and how games like Journey, Fez, Luftrausers, Monument Valley, Ori and the Blind Forest, and Limbo effectively use techniques like the rule of thirds, establishing a sense of goal, and game feel.
This document discusses various topics related to typography including letter shapes like the letter "T", how words for concepts like water have evolved across languages, symbols for ideas like fish, and different writing styles such as styles that would be impossible to write. It examines typography from multiple perspectives like shapes, language evolution, symbols, and stylization.
Interaction Design L04 - Materialise and CouplingMohammad Shaker
This document discusses various aspects of coupling and interaction design in mobile applications. It addresses good and bad examples of coupling on Android and iOS, such as how apps are switched between. It also discusses using accurate text to represent backend processes, and using faster progress bars to reduce cognitive load on users. Visualizations are suggested to improve progress bars.
The document discusses various options for storing data in an Android application including SharedPreferences for simple key-value pairs, internal storage for private files, external storage for public files, SQLite databases for structured data, network connections for storing data on a web server, and ContentProviders for sharing data between applications. It provides details on using SharedPreferences, internal SQLite databases stored in the application's files, and ContentProviders for sharing Contacts data with other apps.
The document discusses various interaction design concepts in Android including toasts, notifications, threads, broadcast receivers, and alarms. It provides code examples for creating toasts, setting notification priorities, and scheduling alarms to fire at boot or at specific times using the AlarmManager. Broadcast receivers can be used to set alarms during device boot by listening for the BOOT_COMPLETED intent filter and implementing the onReceive callback.
This document provides an overview of various mobile development technologies and frameworks including Cloud, iOS, Android, iPad Pro, Xcode, Model-View-Controller (MVC), C, Objective-C, Foundation data types, functions calls, Swift, iOS Dev Center, coordinate systems, Windows Phone, .NET support, MVVM, binding, WebClient, and navigation. It also mentions tools like Expression Blend and frameworks like jQuery Mobile, PhoneGap, Sencha Touch, and Xamarin.
This document discusses various topics related to mobile app design including user experience (UX), user interface (UI), interaction design, user constraints like limited data/battery and screen size, and using context like location to improve the user experience. It provides examples of a pizza ordering app and making ATM machines smarter. It also covers design patterns and principles like focusing on user needs and testing designs through feedback.
This document discusses principles of visual organization and responsive grid systems for web design. It mentions laws of proximity, similarity, common fate, continuity, closure, and symmetry which help organize visual elements. It also discusses column-based and ratio-based grid systems as well as responsive grid systems that adapt to different screen widths, citing examples from Pinterest, Bootstrap, and the website www.mohammadshaker.com which demonstrates responsive design.
This document provides an overview comparison of key aspects of mobile app development for iOS and Android platforms. It discusses differences in app store policies, pricing, monetization options like ads and in-app purchases, development tools including engines like Unity and Unreal, and the publishing process. Key points mentioned include Android apps averaging over 2.5x the price of similar iOS apps, Apple's restrictive app review policies, the 70/30 revenue split in Google Play Store, and tools for user testing and publishing on both platforms. It also shares stats on the revenue and success of specific apps like Monument Valley.
The document discusses various ways to implement cloud functionality in Android applications using services like Parse and Android Backup. It provides code examples for backing up app data to the cloud using Android Backup, setting up a backend using Parse, pushing notifications with Parse, and performing analytics tracking with Parse.
This document discusses several topics related to developing Android apps including:
1. Adding markers to maps by setting an onMapClickListener and adding a MarkerOptions to the clicked location.
2. Signing into apps with Google accounts using the Google Identity API.
3. Following Material Design guidelines for visual style and user interfaces.
4. Maintaining multiple APK versions and using OpenGL ES for games.
This document discusses various techniques for styling Android applications including adding styles, overriding styles, using themes, custom backgrounds, nine-patch images, and animations. It provides links to tutorials and documentation on animating views with zoom animations and other motion effects.
This document provides information about various Android development topics including:
- ListAdapters and mapping models to UI using an MVVM-like pattern
- Creating custom lists
- Starting a new activity using an Intent and passing data between activities
- Understanding the Android activity lifecycle and methods like onPause() and onResume()
- Handling configuration changes that recreate the activity
- Working with permissions
The document discusses common patterns for working with lists, launching new screens, and handling activity state changes. It also provides code examples for starting a new activity, passing data between activities, and handling the activity lifecycle callbacks.
This document provides an overview of various topics related to mobile application development including cloud computing, interaction design, Android, iOS, web technologies like HTML5 and JavaScript, programming languages like Java and Objective-C, frameworks, gaming, user experience design, and more. It discusses tools for Android development and covers basics of creating an Android app like setting up the IDE, creating the UI, adding interactivity, debugging, and referencing documentation.
"Choosing proper type of scaling", Olena SyrotaFwdays
Imagine an IoT processing system that is already quite mature and production-ready and for which client coverage is growing and scaling and performance aspects are life and death questions. The system has Redis, MongoDB, and stream processing based on ksqldb. In this talk, firstly, we will analyze scaling approaches and then select the proper ones for our system.
Dandelion Hashtable: beyond billion requests per second on a commodity serverAntonios Katsarakis
This slide deck presents DLHT, a concurrent in-memory hashtable. Despite efforts to optimize hashtables, that go as far as sacrificing core functionality, state-of-the-art designs still incur multiple memory accesses per request and block request processing in three cases. First, most hashtables block while waiting for data to be retrieved from memory. Second, open-addressing designs, which represent the current state-of-the-art, either cannot free index slots on deletes or must block all requests to do so. Third, index resizes block every request until all objects are copied to the new index. Defying folklore wisdom, DLHT forgoes open-addressing and adopts a fully-featured and memory-aware closed-addressing design based on bounded cache-line-chaining. This design offers lock-free index operations and deletes that free slots instantly, (2) completes most requests with a single memory access, (3) utilizes software prefetching to hide memory latencies, and (4) employs a novel non-blocking and parallel resizing. In a commodity server and a memory-resident workload, DLHT surpasses 1.6B requests per second and provides 3.5x (12x) the throughput of the state-of-the-art closed-addressing (open-addressing) resizable hashtable on Gets (Deletes).
Have you ever been confused by the myriad of choices offered by AWS for hosting a website or an API?
Lambda, Elastic Beanstalk, Lightsail, Amplify, S3 (and more!) can each host websites + APIs. But which one should we choose?
Which one is cheapest? Which one is fastest? Which one will scale to meet our needs?
Join me in this session as we dive into each AWS hosting service to determine which one is best for your scenario and explain why!
What is an RPA CoE? Session 1 – CoE VisionDianaGray10
In the first session, we will review the organization's vision and how this has an impact on the COE Structure.
Topics covered:
• The role of a steering committee
• How do the organization’s priorities determine CoE Structure?
Speaker:
Chris Bolin, Senior Intelligent Automation Architect Anika Systems
Session 1 - Intro to Robotic Process Automation.pdfUiPathCommunity
👉 Check out our full 'Africa Series - Automation Student Developers (EN)' page to register for the full program:
https://bit.ly/Automation_Student_Kickstart
In this session, we shall introduce you to the world of automation, the UiPath Platform, and guide you on how to install and setup UiPath Studio on your Windows PC.
📕 Detailed agenda:
What is RPA? Benefits of RPA?
RPA Applications
The UiPath End-to-End Automation Platform
UiPath Studio CE Installation and Setup
💻 Extra training through UiPath Academy:
Introduction to Automation
UiPath Business Automation Platform
Explore automation development with UiPath Studio
👉 Register here for our upcoming Session 2 on June 20: Introduction to UiPath Studio Fundamentals: https://community.uipath.com/events/details/uipath-lagos-presents-session-2-introduction-to-uipath-studio-fundamentals/
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...Fwdays
Direct losses from downtime in 1 minute = $5-$10 thousand dollars. Reputation is priceless.
As part of the talk, we will consider the architectural strategies necessary for the development of highly loaded fintech solutions. We will focus on using queues and streaming to efficiently work and manage large amounts of data in real-time and to minimize latency.
We will focus special attention on the architectural patterns used in the design of the fintech system, microservices and event-driven architecture, which ensure scalability, fault tolerance, and consistency of the entire system.
Fueling AI with Great Data with Airbyte WebinarZilliz
This talk will focus on how to collect data from a variety of sources, leveraging this data for RAG and other GenAI use cases, and finally charting your course to productionalization.
Main news related to the CCS TSI 2023 (2023/1695)Jakub Marek
An English 🇬🇧 translation of a presentation to the speech I gave about the main changes brought by CCS TSI 2023 at the biggest Czech conference on Communications and signalling systems on Railways, which was held in Clarion Hotel Olomouc from 7th to 9th November 2023 (konferenceszt.cz). Attended by around 500 participants and 200 on-line followers.
The original Czech 🇨🇿 version of the presentation can be found here: https://www.slideshare.net/slideshow/hlavni-novinky-souvisejici-s-ccs-tsi-2023-2023-1695/269688092 .
The videorecording (in Czech) from the presentation is available here: https://youtu.be/WzjJWm4IyPk?si=SImb06tuXGb30BEH .
The Microsoft 365 Migration Tutorial For Beginner.pptxoperationspcvita
This presentation will help you understand the power of Microsoft 365. However, we have mentioned every productivity app included in Office 365. Additionally, we have suggested the migration situation related to Office 365 and how we can help you.
You can also read: https://www.systoolsgroup.com/updates/office-365-tenant-to-tenant-migration-step-by-step-complete-guide/
"Scaling RAG Applications to serve millions of users", Kevin GoedeckeFwdays
How we managed to grow and scale a RAG application from zero to thousands of users in 7 months. Lessons from technical challenges around managing high load for LLMs, RAGs and Vector databases.
5th LF Energy Power Grid Model Meet-up SlidesDanBrown980551
5th Power Grid Model Meet-up
It is with great pleasure that we extend to you an invitation to the 5th Power Grid Model Meet-up, scheduled for 6th June 2024. This event will adopt a hybrid format, allowing participants to join us either through an online Mircosoft Teams session or in person at TU/e located at Den Dolech 2, Eindhoven, Netherlands. The meet-up will be hosted by Eindhoven University of Technology (TU/e), a research university specializing in engineering science & technology.
Power Grid Model
The global energy transition is placing new and unprecedented demands on Distribution System Operators (DSOs). Alongside upgrades to grid capacity, processes such as digitization, capacity optimization, and congestion management are becoming vital for delivering reliable services.
Power Grid Model is an open source project from Linux Foundation Energy and provides a calculation engine that is increasingly essential for DSOs. It offers a standards-based foundation enabling real-time power systems analysis, simulations of electrical power grids, and sophisticated what-if analysis. In addition, it enables in-depth studies and analysis of the electrical power grid’s behavior and performance. This comprehensive model incorporates essential factors such as power generation capacity, electrical losses, voltage levels, power flows, and system stability.
Power Grid Model is currently being applied in a wide variety of use cases, including grid planning, expansion, reliability, and congestion studies. It can also help in analyzing the impact of renewable energy integration, assessing the effects of disturbances or faults, and developing strategies for grid control and optimization.
What to expect
For the upcoming meetup we are organizing, we have an exciting lineup of activities planned:
-Insightful presentations covering two practical applications of the Power Grid Model.
-An update on the latest advancements in Power Grid -Model technology during the first and second quarters of 2024.
-An interactive brainstorming session to discuss and propose new feature requests.
-An opportunity to connect with fellow Power Grid Model enthusiasts and users.
Skybuffer SAM4U tool for SAP license adoptionTatiana Kojar
Manage and optimize your license adoption and consumption with SAM4U, an SAP free customer software asset management tool.
SAM4U, an SAP complimentary software asset management tool for customers, delivers a detailed and well-structured overview of license inventory and usage with a user-friendly interface. We offer a hosted, cost-effective, and performance-optimized SAM4U setup in the Skybuffer Cloud environment. You retain ownership of the system and data, while we manage the ABAP 7.58 infrastructure, ensuring fixed Total Cost of Ownership (TCO) and exceptional services through the SAP Fiori interface.
Monitoring and Managing Anomaly Detection on OpenShift.pdfTosin Akinosho
Monitoring and Managing Anomaly Detection on OpenShift
Overview
Dive into the world of anomaly detection on edge devices with our comprehensive hands-on tutorial. This SlideShare presentation will guide you through the entire process, from data collection and model training to edge deployment and real-time monitoring. Perfect for those looking to implement robust anomaly detection systems on resource-constrained IoT/edge devices.
Key Topics Covered
1. Introduction to Anomaly Detection
- Understand the fundamentals of anomaly detection and its importance in identifying unusual behavior or failures in systems.
2. Understanding Edge (IoT)
- Learn about edge computing and IoT, and how they enable real-time data processing and decision-making at the source.
3. What is ArgoCD?
- Discover ArgoCD, a declarative, GitOps continuous delivery tool for Kubernetes, and its role in deploying applications on edge devices.
4. Deployment Using ArgoCD for Edge Devices
- Step-by-step guide on deploying anomaly detection models on edge devices using ArgoCD.
5. Introduction to Apache Kafka and S3
- Explore Apache Kafka for real-time data streaming and Amazon S3 for scalable storage solutions.
6. Viewing Kafka Messages in the Data Lake
- Learn how to view and analyze Kafka messages stored in a data lake for better insights.
7. What is Prometheus?
- Get to know Prometheus, an open-source monitoring and alerting toolkit, and its application in monitoring edge devices.
8. Monitoring Application Metrics with Prometheus
- Detailed instructions on setting up Prometheus to monitor the performance and health of your anomaly detection system.
9. What is Camel K?
- Introduction to Camel K, a lightweight integration framework built on Apache Camel, designed for Kubernetes.
10. Configuring Camel K Integrations for Data Pipelines
- Learn how to configure Camel K for seamless data pipeline integrations in your anomaly detection workflow.
11. What is a Jupyter Notebook?
- Overview of Jupyter Notebooks, an open-source web application for creating and sharing documents with live code, equations, visualizations, and narrative text.
12. Jupyter Notebooks with Code Examples
- Hands-on examples and code snippets in Jupyter Notebooks to help you implement and test anomaly detection models.
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...Alex Pruden
Folding is a recent technique for building efficient recursive SNARKs. Several elegant folding protocols have been proposed, such as Nova, Supernova, Hypernova, Protostar, and others. However, all of them rely on an additively homomorphic commitment scheme based on discrete log, and are therefore not post-quantum secure. In this work we present LatticeFold, the first lattice-based folding protocol based on the Module SIS problem. This folding protocol naturally leads to an efficient recursive lattice-based SNARK and an efficient PCD scheme. LatticeFold supports folding low-degree relations, such as R1CS, as well as high-degree relations, such as CCS. The key challenge is to construct a secure folding protocol that works with the Ajtai commitment scheme. The difficulty, is ensuring that extracted witnesses are low norm through many rounds of folding. We present a novel technique using the sumcheck protocol to ensure that extracted witnesses are always low norm no matter how many rounds of folding are used. Our evaluation of the final proof system suggests that it is as performant as Hypernova, while providing post-quantum security.
Paper Link: https://eprint.iacr.org/2024/257
4. Some 3D Modeling Programs
• 3D Max
• Maya
• Blender
• Wings3D
• Google SketchUp
• … etc
5. Using 3D Models - Loading the Model
• Global Scope
private Model model; Initialize
LoadContent
UnloadContent
Update
Draw
Game1
6. Using 3D Models - Loading the Model
• Global Scope
• LoadContent()
private Model model;
model = Content.Load<Model>("Ship");
Initialize
LoadContent
UnloadContent
Update
Draw
Game1
7. Using 3D Models - Drawing the Model
• Must set appropriate matrices
private Matrix world = Matrix.CreateTranslation(new Vector3(0, 0, 0));
private Matrix view = Matrix.CreateLookAt(new Vector3(0, 0, 10),
new Vector3(0, 0, 0),
Vector3.UnitY);
private Matrix projection = Matrix.CreatePerspectiveFieldOfView(
MathHelper.ToRadians(45),
800f / 480f,
0.1f,
100f);
12. BasicEffect
• Effects in XNA
– An effect is simply a method of designating how an object should be rendered on the screen.
– In the past (graphics API)
• tell the graphics card everything it needed to know
– HLSL
– It can be quite a bit of work to create a complete effect from scratch
• XNA guys delivered to us the “BasicEffect” class
21. Lighting
• Diffuse Light
– Diffuse light is the basic kind of light. This is the kind of light that lights an object we are
viewing, for the most part. The intensity of the light mostly comes from the angle the surface
makes with the light itself, so surfaces that face away from the light don't aren't bright at all,
while surfaces that face the light are lit up pretty well.
22. Lighting
• Specular Light
– Specular light (or specular highlights) are the shiny spots that appear when an object is
somewhat reflective. This light is based on how reflective the surface is, as well as the angle
that is being made between the light source, the surface, and the viewer.
23. Lighting
• Ambient Light
– Ambient light is light that doesn't come from any particular light source, but instead is kind of
"background light" that comes from all over. In the real world, there is always a small amount
of ambient light, and in our game, we will want to add a little bit to make our objects look
more realistic.
24. Lighting
• Emissive Light
– Emissive light is light that is coming from the surface itself. In games, however, emissive light
doesn't automatically light up nearby objects, so it often doesn't have the same effect that we
would like, but it still has its uses.
25. Lighting with the BasicEffect Class
• Default Lighting
effect.EnableDefaultLighting();
26. Lighting with the BasicEffect Class
• Default Lighting
• Custom Lighting
effect.EnableDefaultLighting();
27. Lighting with the BasicEffect Class
• Default Lighting
• Custom Lighting
effect.EnableDefaultLighting();
effect.LightingEnabled = true; // turn on the lighting subsystem.
effect.DirectionalLight0.DiffuseColor = new Vector3(0.5f, 0, 0); // a red light
effect.DirectionalLight0.Direction = new Vector3(1, 0, 0); // coming along the x-axis
effect.DirectionalLight0.SpecularColor = new Vector3(0, 1, 0); // with green highlights
28. Lighting with the BasicEffect Class
• Default Lighting
• Custom Lighting
effect.EnableDefaultLighting();
effect.LightingEnabled = true; // turn on the lighting subsystem.
effect.DirectionalLight0.DiffuseColor = new Vector3(0.5f, 0, 0); // a red light
effect.DirectionalLight0.Direction = new Vector3(1, 0, 0); // coming along the x-axis
effect.DirectionalLight0.SpecularColor = new Vector3(0, 1, 0); // with green highlights
R G B
29. Lighting with the BasicEffect Class
• Default Lighting
• Custom Lighting
effect.EnableDefaultLighting();
effect.LightingEnabled = true; // turn on the lighting subsystem.
effect.DirectionalLight0.DiffuseColor = new Vector3(0.5f, 0, 0); // a red light
effect.DirectionalLight0.Direction = new Vector3(1, 0, 0); // coming along the x-axis
effect.DirectionalLight0.SpecularColor = new Vector3(0, 1, 0); // with green highlights
R G B
X Y Z
30. Lighting with the BasicEffect Class
• Default Lighting
• Custom Lighting
effect.EnableDefaultLighting();
effect.LightingEnabled = true; // turn on the lighting subsystem.
effect.DirectionalLight0.DiffuseColor = new Vector3(0.5f, 0, 0); // a red light
effect.DirectionalLight0.Direction = new Vector3(1, 0, 0); // coming along the x-axis
effect.DirectionalLight0.SpecularColor = new Vector3(0, 1, 0); // with green highlights
R G B
X Y Z
R G B
31.
32. Lighting with the BasicEffect Class
• You can turn individual lights on and off with
• you can set the effect's ambient light color
effect.DirectionalLight0.Enabled = false;
effect.AmbientLightColor = new Vector3(0.2f, 0.2f, 0.2f);
effect.EmissiveColor = new Vector3(1, 0, 0);
36. BasicEffect Fog
• Rendering Fog with the BasicEffect Class
effect.FogEnabled = true;
effect.FogColor = Color.CornflowerBlue.ToVector3();
effect.FogStart = 9.75f;
effect.FogEnd = 10.25f;
37. BasicEffect Fog
• Rendering Fog with the BasicEffect Class
effect.FogEnabled = true;
effect.FogColor = Color.CornflowerBlue.ToVector3();
effect.FogStart = 9.75f;
effect.FogEnd = 10.25f;
46. 3D Animation
• Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
position= new Vector3(0, 0, 0);
position += new Vector3(0, 0.01f, 0);
47. 3D Animation
• Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
position= new Vector3(0, 0, 0);
position += new Vector3(0, 0.01f, 0);
48. 3D Animation
• Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
position= new Vector3(0, 0, 0);
position += new Vector3(0, 0.01f, 0);
49. 3D Animation
• Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
position= new Vector3(0, 0, 0);
position += new Vector3(0, 0.01f, 0);
50. 3D Animation
• Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
position= new Vector3(0, 0, 0);
position += new Vector3(0, 0.01f, 0);
LoadContent() Update() Draw()
51. 3D Animation
• Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
position= new Vector3(0, 0, 0);
position += new Vector3(0, 0.01f, 0);
LoadContent() Update() Draw()
52. 3D Animation
• Now we want to move the Model
– “Attaching position vector with our model”
world = Matrix.CreateTranslation(position);
53. 3D Animation
• Now we want to move the Model
– “Attaching position vector with our model”
world = Matrix.CreateTranslation(position);
54. 3D Animation
• Now we want to move the Model
– “Attaching position vector with our model”
world = Matrix.CreateTranslation(position);
55. 3D Animation
• Now we want to move the Model
– “Attaching position vector with our model”
world = Matrix.CreateTranslation(position);
56. 3D Animation
• Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
position= new Vector3(0, 0, 0);
position += new Vector3(0, 0.01f, 0);
world = Matrix.CreateTranslation(position);
57. 3D Animation
• Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
position= new Vector3(0, 0, 0);
position += new Vector3(0, 0.01f, 0);
world = Matrix.CreateTranslation(position);
58. 3D Animation
• Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
position= new Vector3(0, 0, 0);
position += new Vector3(0, 0.01f, 0);
world = Matrix.CreateTranslation(position);
59. 3D Animation
• Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
position= new Vector3(0, 0, 0);
position += new Vector3(0, 0.01f, 0);
world = Matrix.CreateTranslation(position);
67. • Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
position= new Vector3(0, 0, 0);
position += new Vector3(0, 0.01f, 0);
world = Matrix.CreateTranslation(position);
3D Animation
72. • Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
position= new Vector3(0, 0, 0);
position += new Vector3(0, 0.01f, 0);
world = Matrix.CreateTranslation(position);
3D Animation
73. • Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
position= new Vector3(0, 0, 0);
position += new Vector3(0, 0.01f, 0);
world = Matrix.CreateTranslation(position);
3D Animation
74. • Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
position= new Vector3(0, 0, 0);
position += new Vector3(0, 0.01f, 0);
world = Matrix.CreateTranslation(position);
3D Animation
75. • Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
position= new Vector3(0, 0, 0);
position += new Vector3(0, 0.01f, 0);
world = Matrix.CreateTranslation(position);
3D Animation
76. • Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
position= new Vector3(0, 0, 0);
position += new Vector3(0, 0.01f, 0);
world = Matrix.CreateTranslation(position);
3D Animation
77. • Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
position= new Vector3(0, 0, 0);
position += new Vector3(0, 0.01f, 0);
world = Matrix.CreateTranslation(position);
3D Animation
78. • Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
private float angle;
position= new Vector3(0, 0, 0);
angle = 0;
position += new Vector3(0, 0.01f, 0);
world = Matrix.CreateTranslation(position);
3D Animation
79. • Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
private float angle;
position= new Vector3(0, 0, 0);
angle = 0;
position += new Vector3(0, 0.01f, 0);
angle += 0.03f;
world = Matrix.CreateTranslation(position);
3D Animation
80. • Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
private float angle;
position= new Vector3(0, 0, 0);
angle = 0;
position += new Vector3(0, 0.01f, 0);
angle += 0.03f;
world = Matrix.CreateTranslation(position);
3D Animation
81. • Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
private float angle;
position= new Vector3(0, 0, 0);
angle = 0;
position += new Vector3(0, 0.01f, 0);
angle += 0.03f;
world = Matrix.CreateRotationY(angle) *
Matrix.CreateTranslation(position);
3D Animation
82. • Create a Place to Store the Position
• Initialize the Position
• Creating animation/ Updating Position!
private Vector3 position;
private float angle;
position= new Vector3(0, 0, 0);
angle = 0;
position += new Vector3(0, 0.01f, 0);
angle += 0.03f;
world = Matrix.CreateRotationY(angle) *
Matrix.CreateTranslation(position);
3D Animation
86. Mesh-by-Mesh Animation
• Firing Up!
– Setup
• We will first need to acquire a model that has different parts that will allow us to do the movements
that we want
• Our "Helicopter" model included in appendix
92. Mesh-by-Mesh Animation
• Loading the model in LoadContent() method
• Updating the angles and location of the Helicopter model in Update()method
helicopterModel = Content.Load<Model>("Helicopter");
tailRotorAngle -= 0.15f;
mainRotorAngle -= 0.15f;
angle += 0.02f;
location += Vector3.Transform(new Vector3(0.1f, 0, 0),
Matrix.CreateRotationY(MathHelper.ToRadians(90) + angle));