Muutke küpsiste eelistusi

E-raamat: Production Volume Rendering: Design and Implementation

(SONY Pictures Imageworks, Santa Monica, California, USA)
  • Formaat: 355 pages
  • Ilmumisaeg: 25-Sep-2012
  • Kirjastus: A K Peters
  • Keel: eng
  • ISBN-13: 9781439873632
Teised raamatud teemal:
  • Formaat - PDF+DRM
  • Hind: 58,49 €*
  • * hind on lõplik, st. muud allahindlused enam ei rakendu
  • Lisa ostukorvi
  • Lisa soovinimekirja
  • See e-raamat on mõeldud ainult isiklikuks kasutamiseks. E-raamatuid ei saa tagastada.
  • Formaat: 355 pages
  • Ilmumisaeg: 25-Sep-2012
  • Kirjastus: A K Peters
  • Keel: eng
  • ISBN-13: 9781439873632
Teised raamatud teemal:

DRM piirangud

  • Kopeerimine (copy/paste):

    ei ole lubatud

  • Printimine:

    ei ole lubatud

  • Kasutamine:

    Digitaalõiguste kaitse (DRM)
    Kirjastus on väljastanud selle e-raamatu krüpteeritud kujul, mis tähendab, et selle lugemiseks peate installeerima spetsiaalse tarkvara. Samuti peate looma endale  Adobe ID Rohkem infot siin. E-raamatut saab lugeda 1 kasutaja ning alla laadida kuni 6'de seadmesse (kõik autoriseeritud sama Adobe ID-ga).

    Vajalik tarkvara
    Mobiilsetes seadmetes (telefon või tahvelarvuti) lugemiseks peate installeerima selle tasuta rakenduse: PocketBook Reader (iOS / Android)

    PC või Mac seadmes lugemiseks peate installima Adobe Digital Editionsi (Seeon tasuta rakendus spetsiaalselt e-raamatute lugemiseks. Seda ei tohi segamini ajada Adober Reader'iga, mis tõenäoliselt on juba teie arvutisse installeeritud )

    Seda e-raamatut ei saa lugeda Amazon Kindle's. 

Due to limited publicly available software and lack of documentation, those involved with production volume rendering often have to start from scratch creating the necessary elements to make their system work. Production Volume Rendering: Design and Implementation provides the first full account of volume rendering techniques used for feature animation and visual effects production. It covers the theoretical underpinnings as well as the implementation of a working renderer.

The book offers two paths toward understanding production volume rendering. It describes:





Modern production volume rendering techniques in a generic context, explaining how the techniques fit together and how the modules are used to achieve real-world goals Implementation of the techniques, showing how to translate abstract concepts into concrete, working code and how the ideas work together to create a complete system

As an introduction to the field and an overview of current techniques and algorithms, this book is a valuable source of information for programmers, technical directors, artists, and anyone else interested in how production volume rendering works.

Web ResourceThe scripts, data, and source code for the books renderer are freely available at https://github.com/pvrbook/pvr. Readers can see how the code is implemented and acquire a practical understanding of how various design considerations impact scalability, extensibility, generality, and performance.

Arvustused

This book deserves a place on any computer graphics developers bookshelf. Over the last few years, volume techniques have become essential to any high-end renderer and this book will bring anyone up to speed very quickly. I highly recommend this book. Doug Roble, Creative Director of Software, Digital Domain

Preface xiii
1 The PVR System
1(10)
1.1 C++ and Python
1(2)
1.1.1 Use of Namespaces
2(1)
1.1.2 Use of External Libraries
3(1)
1.2 Python Bindings
3(2)
1.3 Rendering with PVR
5(6)
I Fundamentals
11(62)
2 The Basics
13(20)
2.1 Time and Motion Blur
13(5)
2.1.1 Render Globals
15(1)
2.1.2 Function Curves
16(2)
2.2 Cameras
18(2)
2.2.1 Camera Coordinate Spaces
19(1)
2.3 Geometry
20(4)
2.3.1 The Geometry Class
20(1)
2.3.2 The Particles Class
21(1)
2.3.3 The Polygons Class
22(1)
2.3.4 The Meshes Class
23(1)
2.4 Geometry Attributes
24(1)
2.5 Attribute Tables
25(4)
2.5.1 String Attributes
28(1)
2.6 Attribute References
29(1)
2.7 Attribute Iteration
29(4)
3 Voxel Buffers
33(28)
3.1 Introduction to Voxel Buffers
33(4)
3.1.1 Voxel Indexing
34(1)
3.1.2 Extents and Data Window
34(1)
3.1.3 Coordinate Spaces and Mappings
35(1)
3.1.4 What Are the Coordinates of a Voxel?
36(1)
3.2 Implementing a Simple Voxel Buffer
37(1)
3.3 Field3D
38(5)
3.3.1 The DenseField Class
39(1)
3.3.2 The SparseField Class
40(3)
3.4 Transformations and Mappings
43(2)
3.4.1 Uniform Transforms
43(1)
3.4.2 Frustum Transforms
44(1)
3.5 Interpolating Voxel Data
45(10)
3.5.1 Nearest-Neighbor Interpolation
46(1)
3.5.2 Linear Interpolation
47(2)
3.5.3 Cubic Interpolation
49(4)
3.5.4 Monotonic Cubic Interpolation
53(2)
3.6 Filtered Lookups
55(6)
3.6.1 Gaussian Filter
55(2)
3.6.2 Mitchell-Netravali Filter
57(2)
3.6.3 Performance Comparison
59(2)
4 Noise
61(12)
4.1 Procedural Textures
61(1)
4.2 Perlin Noise
62(1)
4.3 Noise Functions
63(1)
4.4 Fractal Functions
64(2)
4.5 The Fractal Base Class
66(1)
4.6 Fractional Brownian Motion: fBm
66(7)
4.6.1 Octaves
67(1)
4.6.2 Scale
67(2)
4.6.3 Octave Gain
69(1)
4.6.4 Lacunarity
70(1)
4.6.5 Value Range of Fractal Functions
70(3)
II Volume Modeling
73(92)
5 Fundamentals of Volume Modeling
75(16)
5.1 Volume Modeling and Voxel Buffers
75(1)
5.2 Defining the Voxel Buffer
76(1)
5.2.1 Bounding Primitives
76(1)
5.2.2 Boundless Voxel Buffers
77(1)
5.3 Volume-Modeling Strategies
77(2)
5.3.1 Direct Voxel Access
78(1)
5.3.2 Splatting
78(1)
5.3.3 Rasterization
78(1)
5.3.4 Instantiation
79(1)
5.4 Rasterization Primitives
79(1)
5.5 Instantiation Primitives
80(2)
5.6 Using Geometry to Guide Volumetric Primitives
82(3)
5.6.1 Coordinate Systems
82(1)
5.6.2 Local-to-World versus World-to-Local
83(2)
5.7 Common Coordinate Systems
85(3)
5.7.1 Points/Spheres
85(1)
5.7.2 Lines
86(1)
5.7.3 Surfaces
87(1)
5.8 Procedural Noise and Fractal Functions
88(3)
5.8.1 Making Noise Stick
88(1)
5.8.2 Density Variation
88(2)
5.8.3 Impact on Primitive Bounds
90(1)
6 PVR's Modeling Pipeline
91(16)
6.1 Overview
91(1)
6.2 The Modeler Class
92(5)
6.2.1 Adding Inputs
94(1)
6.2.2 Building a Uniform Mapping
94(1)
6.2.3 Building a Frustum Mapping
95(1)
6.2.4 Executing the Modeling Process
96(1)
6.2.5 Accessing the Voxel Buffer
97(1)
6.3 Inputs to the Modeler
97(1)
6.4 Handling User Parameters
98(1)
6.4.1 The ParamMap struct
98(1)
6.5 The Primitive Base Class
99(2)
6.5.1 Volumetric Primitive versus Underlying Primitive
100(1)
6.6 Splatting Data to Voxel Buffers
101(6)
6.6.1 Splatting a Point
101(1)
6.6.2 Splatting an Antialiased Point
102(2)
6.6.3 Splatting and Motion Blur
104(3)
7 Rasterization Primitives in PVR
107(38)
7.1 The RasterizationPrim Base Class
107(4)
7.1.1 The Rasterization Loop
108(1)
7.1.2 Sampling Density from the Subclass
109(1)
7.1.3 Optimal Bounds
110(1)
7.1.4 Rasterization and Motion Blur
110(1)
7.2 Implementing Primitives
111(3)
7.2.1 Attributes
111(1)
7.2.2 A Design Pattern for Handling Attributes
112(2)
7.3 Sphere-Based Primitives
114(2)
7.3.1 Bounding the Primitive
115(1)
7.4 The Point Primitive
116(6)
7.4.1 Executing the Primitive
117(4)
7.4.2 Density Function
121(1)
7.4.3 Bounding a Single Point
122(1)
7.5 The PyroclasticPoint Primitive
122(6)
7.5.1 Executing the Primitive
124(1)
7.5.2 Density Function
125(3)
7.5.3 Bounding a Single Pyroclastic Point
128(1)
7.6 Line-Based Primitives
128(7)
7.6.1 Bounding a Line
130(1)
7.6.2 Executing the Primitive
131(1)
7.6.3 Updating the Acceleration Data Structure
132(1)
7.6.4 Finding the Closest Point on a Line
133(1)
7.6.5 Displacement Bounds
134(1)
7.6.6 Interpolating Attributes along the Line
135(1)
7.7 The Line Primitive
135(1)
7.7.1 Density Function
136(1)
7.8 The PyroclasticLine Primitive
136(9)
7.8.1 Density Function
138(3)
7.8.2 Transforming from World to Local Space
141(1)
7.8.3 Updating Per-Polygon Attributes
141(1)
7.8.4 Updating Per-Point Attributes
142(1)
7.8.5 Displacement Bounds
142(3)
8 Instantiation Primitives in PVR
145(20)
8.1 The InstantiationPrim Base Class
145(1)
8.2 Common Strategies
146(1)
8.2.1 Number of Points to Instance
146(1)
8.2.2 Local Coordinate Space
146(1)
8.2.3 Output from Point-Based Instantiation Primitives
146(1)
8.3 The Sphere Instantiation Primitive
146(6)
8.3.1 Executing the Primitive
148(4)
8.4 The Line Instantiation Primitive
152(6)
8.4.1 Executing the Primitive
154(4)
8.5 The Surface Instantiation Primitive
158(7)
8.5.1 Executing the Primitive
160(3)
8.5.2 Eroding the Edges
163(2)
III Volume Rendering
165(168)
9 Volumetric Lighting
167(14)
9.1 Lighting Fundamentals
167(2)
9.2 Absorption
169(2)
9.3 Emission
171(1)
9.4 Scattering
171(1)
9.5 Phase Functions
172(2)
9.6 Optical Thickness and Transmittance
174(5)
9.7 Wavelength Dependency
179(1)
9.8 Other Approaches to Volume Rendering
179(2)
10 Raymarching
181(22)
10.1 An Introduction to Raymarching
181(4)
10.2 Lighting and Raymarching
185(2)
10.3 Integration Intervals
187(1)
10.4 Integration Intervals for Multiple Volumes
188(2)
10.5 Integration Intervals for Overlapping Volumes
190(1)
10.6 Sampling Strategies
191(1)
10.7 Empty-Space Optimization
192(2)
10.8 Holdouts
194(9)
11 PVR's Rendering Pipeline
203(30)
11.1 The Scene Class
203(1)
11.2 The Renderer Class
204(9)
11.2.1 Setting Up Rays
205(2)
11.2.2 Firing and Integrating Rays
207(1)
11.2.3 Executing the Render
208(2)
11.2.4 The RayState Struct
210(2)
11.2.5 The RenderGlobals Class
212(1)
11.3 The Camera Base Class
213(7)
11.3.1 Camera Transformations
216(2)
11.3.2 Transforming Points
218(2)
11.4 The PerspectiveCamera Class
220(6)
11.5 The SphericalCamera Class
226(4)
11.6 Image Output
230(3)
12 PVR Volume Types
233(34)
12.1 Volumes in PVR
233(5)
12.1.1 Volume Properties and Attributes
235(2)
12.1.2 The VolumeSampleState Struct
237(1)
12.1.3 The VolumeSample Struct
237(1)
12.2 The ConstantVolume Class
238(5)
12.3 The VoxelVolume Class
243(19)
12.3.1 Attribute Handling
244(1)
12.3.2 Ray Intersection Testing
244(1)
12.3.3 Intersecting Uniform Buffers
245(3)
12.3.4 Intersecting Frustum Buffers
248(2)
12.3.5 Empty-Space Optimization
250(1)
12.3.6 Optimizing Sparse Uniform Buffers
251(6)
12.3.7 Optimizing Sparse Frustum Buffers
257(3)
12.3.8 Sampling the Buffer
260(2)
12.4 The CompositeVolume Class
262(5)
13 Raymarching in PVR
267(18)
13.1 Introduction
267(1)
13.2 The Raymarcher Base Class
268(2)
13.2.1 The IntegrationResult Struct
269(1)
13.3 The UniformRaymarcher Class
270(11)
13.3.1 Ray Integration
270(6)
13.3.2 Updating Transmittance and Luminance
276(5)
13.4 Integration Intervals
281(4)
13.4.1 Splitting Intervals
281(4)
14 Lighting in PVR
285(30)
14.1 Raymarch Samplers
285(1)
14.1.1 The RaymarchSample Struct
286(1)
14.2 The DensitySampler Class
286(2)
14.3 The PhysicalSampler Class
288(4)
14.4 The Light Base Class
292(4)
14.4.1 Light Intensity
294(1)
14.4.2 Falloff
295(1)
14.5 Point Lights
296(2)
14.6 Spot Lights
298(2)
14.7 Phase Functions in PVR
300(11)
14.7.1 The PhaseFunction Base Class
300(1)
14.7.2 The Isotropic Phase Function
301(1)
14.7.3 The Henyey-Greenstein Phase Function
301(4)
14.7.4 The Double Henyey-Greenstein Phase Function
305(1)
14.7.5 Composite Phase Functions
306(5)
14.8 Occlusion in PVR
311(4)
14.8.1 The Occluder Base Class
311(1)
14.8.2 The OcclusionSampleState Struct
311(2)
14.8.3 The RaymarchOccluder Class
313(2)
15 Precomputed Occlusion
315(18)
15.1 Voxelized Occlusion
315(1)
15.2 Deep Shadows
316(1)
15.3 Strategies for Precomputation
317(1)
15.4 The VoxelOccluder Class
318(3)
15.5 The OtfVoxelOccluder Class
321(2)
15.6 The DeepImage Class
323(1)
15.7 The TransmittanceMapOccluder Class
324(3)
15.8 The OtfTransmittanceMapOccluder Class
327(6)
Bibliography 333(2)
Index 335(4)
Class Index 339
Magnus Wrenninge is a senior technical director and R&D programmer at Sony Pictures Imageworks. He is one of the developers of Field3D, an open source library for storing voxel data.