Index
A
- addBone function / Implementing the RiggedMesh class
- add function / Loading the animation data
- addModel function / Implementing Stage.js, Using a rigid body (collider) for each scene object, Changing the color of the selected object
- addStageObject function / Understanding the main code
- addToUpdate function / Loading the animation data
- affine transformations / Classifying into linear and affine transformations
- Ajax long polling
- about / Understanding Ajax long polling
- ambient component / Understanding the illumination/reflection model
- ambient lighting
- about / Ambient lighting
- Ammo
- about / Ammo.js
- Ammo.js
- about / Ammo.js
- angVel (angular velocity) / Implementing the free camera
- animate() function / Adding gravity and a rigid body to the game scene
- animate function / Understanding the main code
- animation, types
- time-based animation / Understanding time-based animation, Implementing time-based animation
- frame-based animation / Understanding frame-based animation
- Animation class / Loading the animation data
- animation data
- about / JSON model – animation data
- loading / Loading the animation data
- AnimationHandler / Loading the animation data
- AnimationHandler class / Loading the animation data
- applyData function / The client code
- apply function / Implementing the basic camera
- aTextureCoord / The vertex shader
- attribute-qualified variables
- about / Attributes
- aVertexColor attribute / Coloring using the vertex color
- aVertexPosition attribute / Vertex transformation with a basic vertex shader
- Azimuth parameter / Comprehending the orbit camera
B
- basic camera
- about / Using the basic camera
- implementing / Implementing the basic camera
- Bidirectional-streams Over Synchronous HTTP (BOSH) / Understanding Ajax long polling
- Bidirectional Reflectance Distribution Functions (BRDFs) / Understanding the illumination/reflection model
- bilinear filtering / Bilinear filtering with mipmapping
- bindBuffer() function / Vertex buffer objects – uploading data to GPU
- bindFramebuffer function / Rendering to framebuffers
- binding
- about / Simple skinning
- binding matrix / The binding matrix
- bindPostProcessShaderAttributes() function / Implementing the filter
- Blender
- models, exporting from / Exporting models from Blender
- Blender add-on
- URL, for downloading / Exporting from Blender
- Blinn-Phong model
- Blinn Phong reflection
- bone class
- implementing / Implementing the bone class
- boneGlobalMatrices parameter / Loading the skinned model
- bones
- Box.json
- Box.obj, converting to / Converting Box.obj to Box.json
- Box.obj
- converting, to Box.json / Converting Box.obj to Box.json
- Box.obj file, elements
- Box2dweb
- about / Box2dweb
- bufferData() function / Drawing using index buffer objects
- buffer objects
- associating, with shader attributes / Associating buffer objects with shader attributes
- bullet
- about / Simple bullet action – linear animation
- objects, reusing in multiple bullets / Reusing objects in multiple bullets
- bullet action / Cheating in the bullet action
C
- calculateMvMatrix function / Implementing the control code
- calculateNormals(vertices,indices) function / Implementing Gouraud shading on a Lambertian reflection model
- calculateVertexNormals function / Calculating normals from vertices and indices, Implementing Geometry.js
- cameraChangedCallBack handler function / The client code
- camera rotation
- camera transformation matrix
- about / Understanding the view transformation, Understanding the camera matrix
- components / Comprehending the components of a camera matrix
- and view matrix, conversions / Converting between the camera matrix and view matrix
- canvas 2D
- about / Understanding canvas 2D basics and the drawing API
- URL / Understanding canvas 2D basics and the drawing API
- using, for textures / Using canvas 2D for textures
- canvas element / Understanding canvas 2D basics and the drawing API
- changes
- summarizing / Implementing Stage.js
- characters skeleton
- about / Understanding the basics of a character's skeleton
- joint hierarchy / Comprehending the joint hierarchy
- kinematics / Understanding forward kinematics
- CLAMP_TO_EDGE, wrapping mode / Texture wrapping
- clientMessage event / Understanding events and the code flow, The server code
- client socket, reserved events
- about / The client socket's reserved events
- connect / The client socket's reserved events
- connecting / The client socket's reserved events
- disconnect / The client socket's reserved events
- connect_failed / The client socket's reserved events
- error / The client socket's reserved events
- message / The client socket's reserved events
- reconnect_failed / The client socket's reserved events
- reconnect / The client socket's reserved events
- reconnecting / The client socket's reserved events
- clone class / Implementing StageObject.js
- clone function / Implementing Geometry.js, Implementing StageObject.js
- cloneObjects function / Loading the scene
- closestDistance parameter / Implementing the orbit camera
- collision detection
- CollisionInfo object / Diving deep into collision detection
- color information
- storing, texture object created / Creating a texture object to store color information
- colors
- about / Understanding colors, Learning more about colors
- square, coloring / Coloring our square
- vertex color, used for coloring / Coloring using the vertex color
- connect / The client socket's reserved events
- connecting / The client socket's reserved events
- connect_failed / The client socket's reserved events
- console.log() / Debugging a WebGL application
- control code
- implementing / Implementing the control code
- about / Working with the control code
- Cook-Torrance model
- createBuffer() function / Vertex buffer objects – uploading data to GPU
- createBuffers function / Implementing StageObject.js, Implementing Stage.js
- createFrameBuffer() function / Implementing the filter
- createMultilineText function / Using the sprite texture
- createServer function / Implementing the HTTP server using Node.js
- createShader() function / Compiling and linking shaders
- createTexture() function / The fragment shader
- createTexture function / Using the sprite texture, Implementing the Sprite class
- ctx.measureText(txt).width function / Understanding canvas 2D basics and the drawing API
- ctx.restore() function / Understanding canvas 2D basics and the drawing API
- ctx.store() function / Understanding canvas 2D basics and the drawing API
- ctx.transform()function / Understanding canvas 2D basics and the drawing API
- cubemaps
- about / Understanding cubemaps and multi-texturing
- coordinates / Cubemap coordinates
- loading / Loading cubemaps
- shader code / Understanding the shader code
- currentText variable / Using the sprite texture
D
- 2D context
- 2D textures
- about / Texturing basics, Understanding 2D textures and texture mapping
- and texture mapping / Understanding 2D textures and texture mapping
- adding, as model labels / Adding 2D textures as model labels
- sprite texture, using / Using the sprite texture
- square geometry, using / Using a square geometry
- 3D graphics
- indices, using to save memory / Using indices to save memory
- 3D mathematics
- about / Understanding basic 3D mathematics
- vectors / Vectors
- matrices / Matrices
- transformations / Understanding transformations
- 3D objects
- rendering, transformations for / Understanding transformations required to render 3D objects
- rendering / Rendering 3D objects
- exporting, from Blender / Exporting a 3D object from Blender
- 3D software
- models, exporting from / Exporting models from 3D software in JSON
- 3D textures
- about / Texturing basics
- diffuse component / Understanding the illumination/reflection model
- Diffuse reflection / Diffuse reflection (Lambertian reflection)
- directional light
- about / Directional lights
- directionalLightWeighting1 float data type / The fragment shader
- disconnect / The client socket's reserved events
- display memory / Framebuffers
- distance dropdown / Applying filtering modes
- DOFs
- Down arrow / Understanding the free camera
- draw() function / Implementing the filter
- drawArray() function / Drawing our primitive
- drawArrays() function / Drawing our primitive, Drawing using vertex buffer objects
- drawArrays function / Drawing our primitive
- drawElements function / Drawing our primitive
- drawScene() function / Drawing using vertex buffer objects, Coloring using the vertex color, Implementing the filter
- drawScene function / Understanding the main code, Using mvMatrix states, Understanding request animation frames, Loading the scene, The fragment shader, Applying filtering modes, Implementing the control code, Using linear interpolation for left-hand rotation, Revisiting the grenade and bullet actions, Loading the skinned model, Changing the color of the selected object
- drawScenePostProcess() function / Implementing the filter
- DYNAMIC_DRAW / Vertex buffer objects – uploading data to GPU
E
- e.clientX attribute / Calculating the screen coordinates of a click
- Elevation parameter / Comprehending the orbit camera
- emitter pattern
- error / The client socket's reserved events
- explosionCallBack function / Using texture animation for an explosion effect
- explosion effect
- texture animation, using for / Using texture animation for an explosion effect
F
- f, Box.obj file element / Exporting models from Blender
- Face.js
- implementing / Implementing Face.js
- Face class / Implementing StageObject.js
- face object / Understanding a simple terrain – plane geometry
- faces
- about / Supporting multiple objects
- faceVertexUvs array / Understanding a simple terrain – plane geometry
- FarthestDistance parameter / Implementing the orbit camera
- field of view (FOV) / Implementing Gouraud shading on a Lambertian reflection model, Understanding the viewing frustum
- fillstyle property / Understanding canvas 2D basics and the drawing API
- filter
- applying, framebuffers used / Applying filters using framebuffers
- vertex shader / The vertex shader
- fragment shader / The fragment shader
- shaders, loading / Loading and linking shaders
- shaders, linking / Loading and linking shaders
- implementing / Implementing the filter
- filtering modes
- applying / Applying filtering modes
- final normal transformation / The final normal transformation
- final vertex transformation / The final vertex transformation
- first-person camera
- about / Using first-person camera
- adding / Adding the first-person camera
- code, improving / Improving the first-person camera code
- flat shading
- about / Flat shading
- format parameter / Loading textures
- forward kinematics
- about / Understanding forward kinematics
- fragment shader / The fragment shader
- fragment shader code
- implementing / Implementing the fragment shader code
- frame-based animation / Understanding frame-based animation
- framebuffer object / Implementing the filter
- framebuffer object (FBO) / Offscreen rendering using framebuffers
- framebuffers
- offscreen rendering / Offscreen rendering using framebuffers
- rendering to / Rendering to framebuffers
- used, for applying filters / Applying filters using framebuffers
- Framebuffers
- about / Framebuffers
- frameTexture object / Implementing the filter
- free camera
- about / Understanding the free camera
- implementing / Implementing the free camera
- using / Using our free camera
- control code, implementing / Implementing the control code
- FreeCamera class / Understanding the free camera
G
- game engine
- WebGL, differentiating from / Differentiating WebGL from the game engine
- game scene
- gravity, adding / Adding gravity and a rigid body to the game scene
- rigid body, adding / Adding gravity and a rigid body to the game scene
- Geometry.js
- implementing / Implementing Geometry.js
- Geometry object / Implementing parseJSON.js
- about / Supporting multiple objects
- vertices / Supporting multiple objects
- normals / Supporting multiple objects
- UV map / Supporting multiple objects
- per vertex colors / Supporting multiple objects
- materials / Supporting multiple objects
- indices / Supporting multiple objects
- faces / Supporting multiple objects
- changes / Changes in our Geometry object
- getAttribLocation function / Attributes
- getBoneMatrix function / Loading the skinned model
- getContext method / Understanding canvas 2D basics and the drawing API
- getDistance function / Implementing the orbit camera
- get function / Loading the animation data
- Gimbal lock / Using quaternions
- gl.bufferData() API call / Vertex buffer objects – uploading data to GPU
- gl.pixelStorei function / Loading textures
- gl.pixelstorei function / Loading textures
- gl.texImage2D function / Implementing the filter
- gl.texParameteri function / Loading textures
- gl.uniformMatrix4fv() function / Drawing using vertex buffer objects
- gl.vertexAttribPointer() function / Drawing using vertex buffer objects
- glMatrix
- glVertexAttribPointer() function, parameters
- index / Associating buffer objects with shader attributes
- size / Associating buffer objects with shader attributes
- type / Associating buffer objects with shader attributes
- norm / Associating buffer objects with shader attributes
- stride / Associating buffer objects with shader attributes
- offset / Associating buffer objects with shader attributes
- gl_FragColor variable / The fragment shader, Coloring using the vertex color
- gl_Position variable / Vertex transformation with a basic vertex shader
- goCloser function / Implementing the orbit camera
- goFarther function / Implementing the orbit camera
- Gouraud shading
- about / Gouraud shading
- implementing, on Lambertion reflection model / Implementing Gouraud shading on a Lambertian reflection model
- implementing / Implementing Gouraud shading – Blinn-Phong reflection
- grenade
- Grenade class / Using linear interpolation for left-hand rotation
H
- handleKeys function / The client code
- height maps
- implementing / Implementing height maps
- http module / Implementing the HTTP server using Node.js
- HTTP server
- implementing, Node.js used / Implementing the HTTP server using Node.js
I
- index buffer objects
- about / Index buffer objects
- used, for drawing / Drawing using index buffer objects
- index parameter / Associating buffer objects with shader attributes
- indices
- about / Supporting multiple objects
- inherit function / Implementing the free camera
- initBuffer() function / Coloring using the vertex color
- initBuffer() function / Drawing using index buffer objects
- initBuffers() function / Drawing using vertex buffer objects, Implementing Gouraud shading on a Lambertian reflection model
- initBuffers function / Implementing StageObject.js, Understanding 2D textures and texture mapping, Applying a texture to the square
- initData function / Loading the animation data
- initialize function / Using linear interpolation for left-hand rotation
- initializePhysics function / Adding gravity and a rigid body to the game scene
- initializePosition function / Cheating in the bullet action
- initScene() function / Loading the JSON model
- initShaders() function / Compiling and linking shaders, Loading the JSON model, Working with the control code
- initShaders function
- about / Understanding the main code
- init_jiglib() function / Adding gravity and a rigid body to the game scene
- internalFormat parameter / Loading textures
- interpolation
- linear interpolation / Linear interpolation
- polynomial interpolation / Polynomial interpolation
- spline interpolation / Spline interpolation
- intersection
- checking for / Checking for an intersection
- io.sockets / Learning the Socket.IO API
- io.sockets.clients('room') / Getting the room's information
- io.sockets.manager.roomClients[socket.id] / Getting the room's information
- io.sockets.manager.rooms / Getting the room's information
- iSpecular variable / The fragment shader
- isPicked property / Changing the color of the selected object
- ITerrain interface / Understanding the physics shapes, Extending our terrain with physics
J
- JavaScript 3D physics engines
- comparing / Comparing JavaScript 3D physics engines
- concepts / Comprehending the physics engine concepts
- jigLib.JBox class / Using a rigid body (collider) for each scene object
- jigLib.JBox colliders / Picking using ray casting
- jigLib.JSegment class / Changing the color of the selected object
- jigLib.JSphere object / Adding gravity and a rigid body to the game scene
- jigLib.Plane rigid body / Adding gravity and a rigid body to the game scene
- JigLibJS
- join event / Understanding events and the code flow
- Joint DOFs
- about / Understanding forward kinematics
- Joint offset
- about / Understanding forward kinematics
- JRay class / Understanding the basic ray casting concepts
- JSegment class / Understanding the basic ray casting concepts
- JSON
- 3DS files, converting to / Converting FBX/Collada/3DS files to JSON
- FBX, converting to / Converting FBX/Collada/3DS files to JSON
- Collada, converting to / Converting FBX/Collada/3DS files to JSON
- JSON faces array
- parsing / Parsing the JSON faces array
- JSON file / The JSON file
- with UV coordinates / Understanding the JSON file with UV coordinates
- encoding / Understanding JSON file encoding
- JSON model
- loading / Loading the JSON model
- JSON parser
- changes / Changes in our JSON parser
- JTerrain object / Understanding the physics shapes
K
- keyboard interaction
- key combinations
- Left arrow / Understanding the free camera
- Right arrow / Understanding the free camera
- S / Understanding the free camera
- W / Understanding the free camera
- Up arrow / Understanding the free camera
- Down arrow / Understanding the free camera
- Shift + A / Understanding the free camera
- Shift + left arrow / Understanding the free camera
- Shift + D / Understanding the free camera
- Shift + right arrow / Understanding the free camera
- Shift + up arrow / Understanding the free camera
- Shift + down arrow / Understanding the free camera
- kinematics
- about / Understanding forward kinematics
L
- Lambertian model
- Lambertian reflectance
- Lambertion reflection model
- Gouraud shading on / Implementing Gouraud shading on a Lambertian reflection model
- lamps
- used, for lighting up scenes / Lighting up the scene with lamps
- vertex shader / The vertex shader, The vertex shader
- fragment shader / The fragment shader, The fragment shader
- adding / Adding multiple lamps
- main code / Understanding the main code
- left-hand rotation
- linear interpolation, using for / Using linear interpolation for left-hand rotation
- Left arrow / Understanding the free camera
- level parameter / Loading textures
- Light.js
- implementing / Implementing Light.js
- applying / Applying Lights.js
- lights
- directional light / Directional lights
- point light / Point lights
- spotlight / Spotlights
- Ambient lighting / Ambient lighting
- Diffuse reflection / Diffuse reflection (Lambertian reflection)
- Specular reflection / Specular reflection
- rendering without / Rendering without light
- multiple lights / Multiple lights and shaders
- lights object / Understanding the main code
- linear animation / Simple bullet action – linear animation
- linear interpolation / Linear interpolation, Linear interpolation
- using, for grenade action / Using B-spline interpolation for grenade action
- using, for left-hand rotation / Using linear interpolation for left-hand rotation
- linear transformations / Classifying into linear and affine transformations
- lineVel (linear velocity) / Implementing the free camera
- loadObject function / Implementing StageObject.js, Implementing the RiggedMesh class
- loadStageObject() function / Rendering our plane geometry
- loadStageObject function / Using linear interpolation for left-hand rotation, Rendering our plane geometry
- loadTexture() function / Rendering our plane geometry
- loggedIn event / The server code
- lookAt function / Using the lookAt function
- using / Using the lookAt function
- about / Implementing the basic camera
- look at position setting / Understanding the free camera
M
- magnification filtering / Applying filtering modes
- material file format (MTL
- materials
- about / Supporting multiple objects
- matrices
- about / Matrices
- matrixAutoUpdate / Enhancing the StageObject class
- matrixWorld / Enhancing the StageObject class
- matrixWorldNeedsUpdate / Enhancing the StageObject class
- MD5Anim
- MD5Mesh
- measureText function / Using the sprite texture
- mesh
- message / The client socket's reserved events
- messageObj.username parameter / The client code
- message property / The server code
- mimeTypes array / The server code
- minification filtering / Applying filtering modes
- mipmapping
- about / Understanding mipmapping
- implemeting / Implementing mipmapping
- nearest-neighbor interpolation / Nearest-neighbor interpolation
- linear interpolation / Linear interpolation
- nearest-neighbor with mipmapping / Nearest-neighbor with mipmapping
- bilinear filtering / Bilinear filtering with mipmapping
- Trilinear filtering / Trilinear filtering
- MIRRORED_REPEAT, wrapping mode / Texture wrapping
- model labels
- 2D textures, adding as / Adding 2D textures as model labels
- modelMatrix / Enhancing the StageObject class
- models
- exporting, from Blender / Exporting models from Blender
- exporting, from 3D software in JSON / Exporting models from 3D software in JSON
- ModelSprite class
- about / Implementing the ModelSprite class
- main flow code / Understanding the main flow code
- model transformation
- applying / Applying the model transformation
- ModelView transformation / ModelView transformation
- ModelView transformations
- about / Understanding ModelView transformations
- model transformation, applying / Applying the model transformation
- view transformation / Understanding the view transformation
- lookAt function, using / Using the lookAt function
- camera rotation / Understanding the camera rotation
- quaternions, using / Using quaternions
- modifyGeometry function / Extending our terrain with physics
- morphedVertexNormalsFromObj() function / Understanding a simple terrain – plane geometry
- morphedVertexNormalsFromObj function / Implementing Geometry.js
- mouse events
- handling / Handling mouse events
- mouse interaction
- moveForward function / Implementing the free camera
- mtllib, Box.obj file element / Exporting models from Blender
- multi-texturing
- about / Multi-texturing
- multiplayer game
- implementing / Implementing a multiplayer game
- events / Understanding events and the code flow
- server code / The server code
- client code / The client code
- multiple objects
- changes, summarizing / Implementing Stage.js
- mvMatrix / Understanding ModelView transformations
- mvMatrix states
- using / Using mvMatrix states
N
- nearest-neighbor interpolation / Nearest-neighbor interpolation
- nearest-neighbor with mipmapping / Nearest-neighbor with mipmapping
- Node.js
- using, for multiplayer games / Using Node.js and Socket.IO for multiplayer games
- URL, for installing / Using Node.js and Socket.IO for multiplayer games
- used, for implementing HTTP server / Implementing the HTTP server using Node.js
- node modules
- normal / Understanding surface normals for lighting calculations
- normalize() function / Implementing Gouraud shading – Blinn-Phong reflection
- Normalized Device Coordinates (NDC) / Calculating the screen coordinates of a click
- normals
- about / Supporting multiple objects
- normal transformation
- norm parameter / Associating buffer objects with shader attributes
O
- o, Box.obj file element / Exporting models from Blender
- object materials
- about / Understanding object materials
- objects
- exported from Blender, rendering / Rendering objects exported from Blender
- object space / ModelView transformation
- OBJ file
- converting, to JSON file format / Converting the OBJ file to the JSON file format
- offscreen rendering
- framebuffers used / Offscreen rendering using framebuffers
- texture object, creating / Creating a texture object to store color information
- renderbuffer, creating / Creating a renderbuffer for depth information
- texture, associating to framebuffers / Associating a texture and a renderbuffer to framebuffers
- renderbuffer, associating to framebuffers / Associating a texture and a renderbuffer to framebuffers
- offsetLeft variable / Calculating the screen coordinates of a click
- offset parameter / Associating buffer objects with shader attributes
- offsetTop variable / Calculating the screen coordinates of a click
- onMouseDown event / Handling mouse events
- onmousedown event / Changing the color of the selected object
- onMouseMove event / Handling mouse events
- orbit camera
- about / Comprehending the orbit camera
- parameters / Comprehending the orbit camera
- implementing / Implementing the orbit camera
- closestDistance parameter / Implementing the orbit camera
- FarthestDistance parameter / Implementing the orbit camera
- orbitPoint parameter / Implementing the orbit camera
- pitch function / Understanding the pitch function for the orbit camera
- yaw function / Understanding the yaw function for the orbit camera
- using / Using an orbit camera
- orbitPoint parameter / Implementing the orbit camera
- out.frac variable / Understanding the basic ray casting concepts
- out.position variable / Understanding the basic ray casting concepts
- out.rigidBody variable / Understanding the basic ray casting concepts
- out parameter / Understanding the basic ray casting concepts
P
- param parameter / Loading textures
- parent object / Enhancing the StageObject class
- parse function / Loading the animation data
- parseJSON.js
- implementing / Implementing parseJSON.js
- parseJSON function / Implementing Stage.js
- parseJSON object / Implementing StageObject.js
- per-vertex operation / Vertex transformation with a basic vertex shader
- perspective divide / Unproject the vector
- perspective transformations
- about / Understanding perspective transformations
- viewing frustum / Understanding the viewing frustum
- viewing frustum, defining / Defining the view frustum
- per vertex colors
- about / Supporting multiple objects
- Phong reflectance model
- Phong shading
- about / Phong shading
- implementing / Implementing Phong shading – Blinn-Phong reflection
- phpwebsocket
- physics
- objects / Learning about objects in the physics system
- terrain, extending with / Extending our terrain with physics
- physics, objeects
- particles / Particles
- rigid body / Rigid bodies
- soft body / Soft bodies
- physics shapes
- about / Understanding the physics shapes
- picking
- about / Learning the basics of picking
- objects color based / Picking based on an object's color
- ray casting used / Picking using ray casting
- implementing, ray casting used / Implementing picking using ray casting
- picking, ray casting used
- rigid body (collider), using for scene object / Using a rigid body (collider) for each scene object
- click, screen coordinates / Calculating the screen coordinates of a click
- vector, unprojecting / Unproject the vector
- ray segment, creating / Creating a ray segment
- intersection, checking / Checking for an intersection
- selected object, color changing / Changing the color of the selected object
- pitch function, orbit camera / Understanding the pitch function for the orbit camera
- pixels / The fragment shader
- pixels parameter / Loading textures
- PixPlant
- about / Texturing basics
- plane geometry
- pname parameter / Loading textures
- point light
- about / Point lights
- polling / Communicating in real time
- polygon
- polynomial interpolation / Polynomial interpolation
- positional lights
- about / Understanding positional lights
- position setting / Understanding the free camera
- powerOfTwo function / Using the sprite texture
- primitive
- drawing / Drawing our primitive
- primitive assembly stage / The fragment shader
- projection transformation / Projection transformation
Q
- quaternions
- using / Using quaternions
R
- Radius parameter / Comprehending the orbit camera
- rasterization / The fragment shader
- RayCaster class / Checking for an intersection, Changing the color of the selected object
- ray casting
- about / Understanding the basic ray casting concepts
- used, for picking / Picking using ray casting
- ray segment
- creating / Creating a ray segment
- reconnect / The client socket's reserved events
- reconnecting / The client socket's reserved events
- reconnect_failed / The client socket's reserved events
- redrawWithClampingMode function / The redrawWithClampingMode function
- removeFromUpdate function / Loading the animation data
- renderbuffer
- creating, to depth information / Creating a renderbuffer for depth information
- associating, to framebuffers / Associating a texture and a renderbuffer to framebuffers
- rendering pipeline, WebGL
- about / Understanding WebGL's rendering pipeline
- Framebuffers / Framebuffers
- REPEAT, wrapping mode / Texture wrapping
- request animation frames
- requestAnimFrame function / Understanding request animation frames
- RGB (Red, Green, and Blue) space / Learning more about colors
- rigged JSON model
- loading / Loading a rigged JSON model, Loading the rigged model
- JSON file encoding / Understanding JSON file encoding
- animating / Animating a rigged JSON model
- animation data / JSON model – animation data
- animation data, loading / Loading the animation data
- RiggedMesh class
- implementing / Implementing the RiggedMesh class
- this.bones[] array / Implementing the RiggedMesh class
- this.boneMatrices[] array / Implementing the RiggedMesh class
- this.skinIndexBuffer variable / Implementing the RiggedMesh class
- this.skinWeightBuffer variable / Implementing the RiggedMesh class
- RiggedMesh object / Loading the animation data
- rigged model
- StageObject class, enhancing / Enhancing the StageObject class
- bone class, implementing / Implementing the bone class
- RiggedMesh class, implementing / Implementing the RiggedMesh class
- skinned model, loading / Loading the skinned model
- loading / Loading the skinned model
- Right arrow / Understanding the free camera
- rigid body
- about / Rigid bodies
- RigidBody class / Diving deep into collision detection
- robotic bone hierarchy
- roomJoined event / Understanding events and the code flow
- rotateOnAxis function / Implementing the free camera
S
- S / Understanding the free camera
- s, Box.obj file element / Exporting models from Blender
- scene
- loading / Loading the scene
- lighting up, with lamps / Lighting up the scene with lamps
- textures, applying / Applying textures to our scene, Applying a texture to the scene
- sendRoomMessage function / The client code
- serverData / Understanding Socket.IO
- serverMessage event / Understanding events and the code flow
- setDistance function / Understanding the yaw function for the orbit camera
- setInterval function / Understanding request animation frames
- setLightUniform() function / Understanding the main code
- setLightUniform function / Understanding the main code
- setLookAtPoint function / Implementing the free camera
- setMatrixUniforms / Understanding ModelView transformations
- setMatrixUniforms() function / Drawing using vertex buffer objects
- setPosition function / Implementing the orbit camera
- setTimeout function / Understanding request animation frames
- shader attributes
- buffer objects, associating with / Associating buffer objects with shader attributes
- shader code, cubemaps / Understanding the shader code
- shader code, cube maps / Understanding the shader code
- shaders
- about / Shaders
- vertex shader / The vertex shader
- fragment shader / The fragment shader
- multiple shaders / Multiple lights and shaders
- loading / Loading and linking shaders
- linking / Loading and linking shaders
- shader variables
- about / Shader variable qualifiers
- attributes qualifier / Attributes
- uniforms qualifier / Uniforms
- uniforms / Uniforms
- varying qualifier / The varying qualifier
- compiling / Compiling and linking shaders
- linking / Compiling and linking shaders
- shading models
- flat shading / Flat shading
- Gouraud shading / Gouraud shading
- Phong shading / Phong shading
- Shift + A / Understanding the free camera
- Shift + D / Understanding the free camera
- Shift + down arrow / Understanding the free camera
- Shift + left arrow / Understanding the free camera
- Shift + right arrow / Understanding the free camera
- Shift + up arrow / Understanding the free camera
- simple skinning
- about / Simple skinning
- simulation loop
- updating / Updating the simulation loop
- size parameter / Associating buffer objects with shader attributes
- skeletons
- SkinIndex parameter / Loading the skinned model
- skinMatrix variable / Implementing the bone class
- skinned animation
- about / A briefing on skinned animation
- skinned model
- loading / Loading the skinned model
- skinning
- simple skinning / Simple skinning
- smooth skinning / Smooth skinning
- skinWeight parameter / Loading the skinned model
- smooth skinning
- about / Smooth skinning
- binding matrix / The binding matrix
- final vertex transformation / The final vertex transformation
- final normal transformation / The final normal transformation
- Sobel operator
- socket / Learning the Socket.IO API
- Socket.IO
- about / Understanding the WebSockets server, Understanding Socket.IO
- using, for multiplayer games / Using Node.js and Socket.IO for multiplayer games
- io.sockets / Learning the Socket.IO API
- socket / Learning the Socket.IO API
- client socket, reserved events / The client socket's reserved events
- user data, storing on server side / Storing user data on the server side
- Socket.IO, rooms
- joining / Leaving and joining
- leaving / Leaving and joining
- event, broadcasting / Broadcasting an event in the room
- information, getting / Getting the room's information
- socket object / Broadcasting an event in the room
- soft body
- about / Soft bodies
- specular component / Understanding the illumination/reflection model
- Specular reflection / Specular reflection
- spline interpolation / Spline interpolation
- spotlight
- about / Spotlights
- Sprite class
- implementing / Implementing the Sprite class
- about / Implementing the Sprite class
- sprite texture
- using / Using the sprite texture
- SpriteTexture class / Implementing the Sprite class
- square
- coloring / Coloring our square
- square geometry
- using / Using a square geometry
- SquareGeometry class / Understanding the square geometry code
- square geometry code
- Stage.js
- implementing / Implementing Stage.js
- stage class / Implementing Stage.js
- stageObject / Enhancing the StageObject class
- StageObject.js
- implementing / Implementing StageObject.js
- StageObject class / Implementing StageObject.js, Implementing Stage.js, Adding gravity and a rigid body to the game scene, Using a rigid body (collider) for each scene object, Implementing the Sprite class
- enhancing / Enhancing the StageObject class
- start() function / Drawing using vertex buffer objects, Adding gravity and a rigid body to the game scene, Changing the color of the selected object
- start function / Understanding the main code
- state machine
- STATIC_DRAW / Vertex buffer objects – uploading data to GPU
- stream
- STREAM_DRAW / Vertex buffer objects – uploading data to GPU
- stride parameter / Associating buffer objects with shader attributes
- superc function / Implementing the free camera
- surface normal
- about / Understanding surface normals for lighting calculations
- calculating, from vertices / Calculating normals from vertices and indices
- calculating, from indices / Calculating normals from vertices and indices
- system.integrate() function / Adding gravity and a rigid body to the game scene
T
- target parameter / Loading textures
- terrain
- about / Understanding a simple terrain – plane geometry
- extending, with physics / Extending our terrain with physics
- TerrainData object / Extending our terrain with physics
- texImage2D function / The fragment shader
- texture
- associating, to framebuffers / Associating a texture and a renderbuffer to framebuffers
- texture animation
- using, for explosion effect / Using texture animation for an explosion effect
- texture buffer / Applying filtering modes
- textured object
- loading / Loading a textured object
- texture filtering
- about / Comprehending texture filtering
- textureIndex property / Working with the control code
- texture magnification
- about / Comprehending texture filtering
- texture minification / Comprehending texture filtering
- texture parameter / Loading textures
- textures
- 2D textures / Texturing basics
- 3D textures / Texturing basics
- loading / Loading textures, The fragment shader
- sampler data type / A new data type – sampler
- lookup functions / A new data type – sampler
- applying, to square / Applying a texture to the square
- applying, to scene / Applying textures to our scene, Applying a texture to the scene
- canvas 2D, using / Using canvas 2D for textures
- texture wrapping
- about / Texture wrapping
- HTML / The HTML
- event handlers / The event handlers
- redrawWithClampingMode function / The redrawWithClampingMode function
- this.boneMatrices[] array / Implementing the RiggedMesh class
- this.bones[] array / Implementing the RiggedMesh class
- this.initializePhysics() function / Revisiting the grenade and bullet actions
- this.pose() function / Implementing the RiggedMesh class
- this.power variable / Using the sprite texture
- this.skinIndexBuffer variable / Implementing the RiggedMesh class
- this.skinWeightBuffer variable / Implementing the RiggedMesh class
- tick function / Understanding request animation frames, Understanding the main code
- time-based animation / Understanding time-based animation, Implementing time-based animation
- Torrance-Sparrow model
- totalElapsedTime variable / Understanding the main code
- transform() function / Understanding canvas 2D basics and the drawing API
- transformations
- about / Understanding transformations
- linear transformations / Classifying into linear and affine transformations
- affine transformations / Classifying into linear and affine transformations
- to render 3D objects / Understanding transformations required to render 3D objects
- ModelView transformation / ModelView transformation
- projection transformation / Projection transformation
- translate function / Handling mouse events
- translateOnAxis function / Enhancing the StageObject class
- traverse function / Enhancing the StageObject class
- TRIANGLE_XXX option / Drawing our primitive
- Trilinear filtering / Trilinear filtering
- type parameter / Associating buffer objects with shader attributes, Loading textures
U
- uniformMatrix3fv function / Implementing Gouraud shading on a Lambertian reflection model
- uniform qualifier
- about / Uniforms
- unloopedCurrentTime value / Loading the animation data
- Up arrow / Understanding the free camera
- update function / Implementing the bone class
- updateMatrix function / Using a rigid body (collider) for each scene object
- updateMatrixWorld function / Enhancing the StageObject class
- useSkinning parameter / Loading the skinned model
- UV coordinates
- parsing, from JSON file / Parsing UV coordinates from the JSON file
- vertices / Revisiting vertices, normals, and the indices array
- normals / Revisiting vertices, normals, and the indices array
- indices array / Revisiting vertices, normals, and the indices array
- texture coordinates, restructuring for / Restructuring for texture coordinates
- algorithms, to create new arrays / Algorithm one to create new arrays, Algorithm two to create new arrays
- algorithm, dry run used / Understanding the algorithm using a dry run
- UV map
- about / Supporting multiple objects
V
- v, Box.obj file element / Exporting models from Blender
- varyings qualifier
- about / The varying qualifier
- vector
- unprojecting / Unproject the vector
- vectors
- about / Vectors
- vertex
- vertex buffer objects
- about / Vertex buffer objects – uploading data to GPU
- used, for drawing / Drawing using vertex buffer objects
- vertex color
- used, for coloring / Coloring using the vertex color
- vertexNormals array / Implementing Face.js
- vertex shader
- about / The vertex shader, The vertex shader, The vertex shader, The vertex shader
- used, for vertex transformation / Vertex transformation with a basic vertex shader
- vertex shader code
- implementing / Implementing the vertex shader code
- vertices
- verticesFromFaceUvs() function / Understanding a simple terrain – plane geometry
- verticesFromFaceUvs function / Algorithm one to create new arrays
- viewing frustum
- view matrix
- about / Understanding the view transformation
- breakdown / Comprehending the components of a camera matrix
- and camera transformation matrix, conversions / Converting between the camera matrix and view matrix
- view transformation
- vn, Box.obj file element / Exporting models from Blender
- vt, Box.obj file element / Exporting models from Blender
- vTextureCoord variable / The fragment shader
W
- W / Understanding the free camera
- Ward's anisotropic model
- Wavefront (OBJ) format
- Wavefront object file / Rendering 3D objects
- WebGL
- about / Understanding WebGL
- differentiating, from game engine / Differentiating WebGL from the game engine
- rendering pipeline / Understanding WebGL's rendering pipeline
- WebGL API
- about / A walkthrough of the WebGL API
- WebGL application
- debugging / Debugging a WebGL application
- WebGL context
- initializing / Initializing the WebGL context
- WebGL texture mapping
- principles / The challenge and the algorithm
- WebSocket API
- about / Understanding the WebSocket API
- WebSockets
- about / Understanding WebSockets
- WebSocket API / Understanding the WebSocket API
- server / Understanding the WebSockets server
- WebSockets server
- about / Understanding the WebSockets server
- phpwebsocket / Understanding the WebSockets server
- Socket.IO / Understanding the WebSockets server
- window.requestAnimationFrame() function / Understanding request animation frames
- worldMatrix / Enhancing the StageObject class
- wss protocol / Understanding the WebSocket API
Y
- yaw function, orbit camera / Understanding the yaw function for the orbit camera
Z
- z-fighting / Implementing the basic camera