... .141 A Short Road Off a High Cliff (How I Got Here) 141 Ready! Set! Wait, What? (Why IDecidedtoWritea To- Do Application) .142 Data-Driven Applications on the iPhone ... examples Particles are particularly good at simulating systems that are inherently dynamic and ever-changing Fire is a good example You can simulate an OK fire with an animation, but it will always ... data-driven application with SQLite • Ray Kiddy, illustrating the full application development life cycle with Core Data • Steve Finkelstein, marrying an offline e-mail client to Core Data and Florian...
... OpenAL Style Initializing OpenAL Static In-Memory Sound Playback Positional Sound Source Piano Game Loading a Static and Streamed Sound Color Picking Piano Game Logic Final Adjustments Rolling Ball ... 143 xiii ftoc.indd xiii 12/30/11 8:28:33 AM CONTENTS Third-Person Camera with Collision Summary CHAPTER 8: PATHFINDING Recast and Detour Navigation Creating the Navigation Mesh 3D Physics Picking ... PRODUCTION EDITOR SENIOR ACQUISITIONS EDITOR Chris Katsaropoulos ASSISTANT EDITOR Ellie Scott Debra Banninger PROOFREADER Nancy Carrasco ASSOCIATE MARKETING DIRECTOR Louise Breinholt Robert Swanson...
... 8:28:33 AM CONTENTS Third-Person Camera with Collision Summary CHAPTER 8: PATHFINDING Recast and Detour Navigation Creating the Navigation Mesh 3D Physics Picking Player’s Auto Drive Visualizing ... the main shader program This allows you to compile your shaders and link them toa shader program automatically In addition, this structure provides you with an easy -to- use way to gain access to ... have set up a basic look-at matrix to simulate a camera in world space Quite a lot for a start already! As you might have already noticed, when the quad is rotating onscreen, the projection does...
... graphics hardware This division must be tailored to the available graphics hardware to obtain optimum performance in carrying out OpenGL calls OpenGL maintains a considerable amount of state information ... visible only by the effect it has on what is drawn One of the main goals of this specification is to make OpenGL state information explicit, to elucidate how it changes, and to indicate what its ... coordinates are similarly associated with each vertex Multiple sets of texture coordinates may be associated with a vertex Figure 2.2 summarizes the association of auxiliary data with a transformed...
... axes is counterclockwise Rotations around the main axes are easiest towrite down By combining three main axis rotations, an arbitrary rotation around an arbitrary axis can be created This technique ... secure and robust virtual machine architecture of Java has its price: reduced application performance and limited access to platform capabilities Isolating applications from the underlying software ... only has a thin Java layer to make the functionality available to Java applications Additional features of M3G include extensive support for animation and binary content files Any property of any...
... Mobile 3D Graphics with OpenGL ES and M3G This page intentionally left blank Mobile 3D Graphics with OpenGL ES and M3G Kari Pulli Tomi Aarnio Ville Miettinen Kimmo Roimela Jani Vaarala AMSTERDAM ... “Obtaining Permissions.” Library of Congress Cataloging-in-Publication Data Application submitted ISBN: 978-0-12-373727-4 For information on all Morgan Kaufmann publications, visit our Web site at ... aware of a claim, the product names appear in initial capital or all capital letters Readers, however, should contact the appropriate companies for more complete information regarding trademarks...
... M3G’s animation model and an associate editor of the M3G specification He was also the lead programmer of the Nokia M3G implementation Jani Vaarala, Graphics Architect at Nokia, was very active in ... beginning, and was among the most active technical contributors to each API Kari, originally Principal Scientist and later Research Fellow, headed Nokia’s graphics research, standardization, and technology ... your hand, you, the reader, will be able to create vibrant applications with three-dimensional xiii xiv PREFACE graphics on mobile devices Hopefully, your mobile graphics applications will be like...
... that does allow native applications, it makes a lot of sense to make Java available as a complementary option Java gives access toa vast pool of applications, developers, tools, and code that ... secure and robust virtual machine architecture of Java has its price: reduced application performance and limited access to platform capabilities Isolating applications from the underlying software ... applications is to place them into the firmware when the phone is manufactured Smart phones, by contrast, allow installing and executing native binary applications A key advantage for such applications...
... facial animation) There is also an associated standardized binary file format that has oneto-one mapping with the API This greatly facilitates separation of artistic content from programmable application ... optimized in C/C++ or even assembly language The native core then only has a thin Java layer to make the functionality available to Java applications Additional features of M3G include extensive support ... designed with performance in mind In practice, this means minimizing the overhead that an application would have to pay for using a standard API instead of a proprietary solution F i g u r e 1.6: Screen...
... define a virtual world Then we only need to position and orient an imaginary camera to define a viewpoint into the world, and finally let the graphics engine create an image If we wish to animate ... point (or equivalently, a location), while the axes are directions As a mathematical construct, a coordinate system may have an arbitrary set of axes with arbitrary directions, but here we are ... surface normals, viewing directions, light directions, and so on A vector v is a displacement, a difference of two points; it has no position, but does have a direction and a length Similar to...
... TRANSFORMATIONS There are four basic component transformations that are affine, and all their combinations are affine as well They are translation, rotation, scaling, and shearing, and are illustrated in ... transformations is rigid motion, which changes the location and orientation of an object, but retains its shape and size Rigid motion consists of an arbitrary sequence of rotations and translations, and ... obtained from an arbitrary rotation axis and rotation angle Quaternions not suffer from gimbal lock, and since quaternions are generally quicker to calculate and simpler to interpolate, they are...
... threevectors, rotations would require a matrix multiplication, while translations would require vector addition Finally, perspective projection requires a division by z, which is not a linear operation ... version It is often easier to define a straight projection (one that is aligned with z) with a given aspect ratio a (a = w/h, where w and h are window width and height, respectively), and a vertical ... may get mapped to the same value, and the graphics engine cannot reliably separate which surface should be behind and which in front, leading to visual artifacts called z-fighting, as illustrated...
... draw the images with an image-editing program, or one can take photos with a digital camera Applications of raster images include using them to draw a background, e.g., the faraway landscape and ... rest are fully or partially opaque The opacity information is stored in an additional alpha channel value associated with each pixel With bitmaps one can take this approach to the extreme, storing ... simpler than triangles The problem is that a mathematical point does not have any extent, nor does a line have any width Instead of turning a point into a sphere and a line into a cylinder—which...
... representation of light, and quadratic attenuation typically produces too harsh changes in illumination Also, most indoor lights are area lights, not point lights, and have a more complicated and ... system may be able to avoid the cost of lighting the vertices, and in any case it avoids rasterizing the triangle There are several ways to cull back-facing triangles One possibility is to calculate ... point light, directional light, spot light, and directional attenuation of spot lights Directional lights A directional light can be thought of as a point light infinitely far away For most practical...
... mobile 3D APIs allow approximating full trilinear filtering with a bilinear filtering at the closest mipmap level In general, point sampling is faster than bilinear filtering, whereas bilinear filtering ... the highlights of a scene are rendered into a separate image This image is then repeatedly downsampled by using bilinear filtering, averaging four pixels into one in each pass Finally, a weighted ... per-pixel illumination using arbitrary lighting models The simplest situation is if the lighting of the environment is static and view-independent, that is, if the lighting is fixed and we only have...
... that are only partially covered by the polygon This is called antialiasing, and is illustrated in Figure 3.21 Since optimal antialiasing needs to take into account human visual perception, characteristics ... characteristics of the monitor on which the final image is displayed, as well as the illumination surrounding the monitor, most 3D graphics APIs not precisely define an antialiasing algorithm In ... there are good arguments why that is not the right view [Smi95] CHAPTER SECTION 3.4 RASTERIZATION 91 Edge antialiasing When rasterizing straight edges, it is fairly trivial to calculate the coverage...
... support a destination alpha In such a case, all computations assume the destination alpha to be 1, allowing all operations to produce meaningful results If destination alpha is supported, many advanced ... combined Light mapping involves the single operation AB, which is equally doable with either multi-texturing or multi-pass rendering Basically, any series of operations that can be evaluated in a ... is native to the texturing unit A similar synchronization point can result from the modification of an existing texture map In general, the best performance is obtained if each hardware unit in...
... CHAPTER ANIMATION Animation is what ultimately breathes life into 3D graphics While still images can be nice as such, most applications involve objects moving and interacting with each other and ... keyframes are values that the animated property has at specific points in time, and the computer applies an interpolation function to these data points to produce the intermediate values The data itself ... characteristics of the interpolated data, as well as the computational complexity of evaluating the function The main benefit of keyframe animation today is perhaps not the time saved in producing...
... specializing in real-time animation and rendering, but not in any particular application or game genre This is also the case with M3G Physics, artificial intelligence, audio, user interaction, and ... optimizing the storage format and location of the data Vertex data that is dynamically uploaded from the application prohibits most such optimizations, and it also requires additional memory bandwidth ... thing to decide is what it is for Is it for graphics, physics, artificial intelligence, spatial audio, or a combination of these? Is it designed for real-time or offline use, or both? Is it for a...
... transformations along the way into one matrix This matrix is then concatenated with the world -to- camera transformation, which we cached earlier, to obtain the final modelview matrix Compared to ... diverse range of devices The performance characteristics, available memory, potential display configurations, programming tool chains, Java stack implementations, control devices, available libraries, ... rendering in a typical M3G implementation is, at least on a conceptual level, done as shown in Figure 5.9 Note that this is all happening in native code, without having to fetch any data from the Java...