Modeling and Rendering of Metallic Patinas Julie Dorsey – MIT Pat Hanrahan – Stanford University Presentation By: Brad Jones
Definition Patina ( pat’ ə-nə ) n. a film that forms on a surface, esp. bronze; a mellowing due to age. (Webster College Dictionary)
Introduction All materials appearance’s change over time
Introduction For realistic scenes, we must take this into account Using texture maps is ad-hoc and labor intensive This paper proposes to model the appearance through a (phenomenological) simulation of a metallic (copper) patina
Natural Patina’s develop primarily from atmospheric corrosion. This corrosion affects the chemical composition of the surface Products of the initial reaction, react further to form layers This is a complex process that is hard to simulate Copper Patina’s Physical Basis
Composition and Formation Layers are clearly visible We know which each layer is made out of Copper Copper Oxides Copper Sulfides and various other Copper Salts
Physical Environment Different layers form based on atmospheric environment and length of exposure Water collection significantly alters look of patina (most take into account geometry) There are other factors like temperature, abrasions, polishing – ignore these
Modeling Write a script in terms of operators that manipulate a layered material Coat Erode Fill Polish Offset
Thickness Maps Operators need variation Variation is based on Textures Rectangular Texture Maps Vertex augmentations on the mesh These textures are 2-D grayscale images
Generating Thickness Maps They implemented fractal surface growth models from Fractal Concepts in Surface Growth by Barabási and Stanley Steady Thickening Random Deposition Ballistic Deposition Directed Percolation Depinning
Steady Thickening Creates a simple, uniform pattern that increases thickness over time Sample the surface evenly Assign an initial thickness to each sample point Interpolate thickness to each point in-between Over time, increase height of each sample point according to some growth rate and in some small random factor to keep pattern varied
Random Deposition Pick a random point, add some height Simulates dropping a particle This might create a pattern that is too rough Relaxation Simulate jittering the surface to see if the particle falls to one of its neighbors Smoothes the appearance
Ballistic Distribution Pick a random point and drop a particle Resulting height of the point is the maximum of the height of the neighboring points or the height increased by the particle’s thickness Simulates a particle that sticks to the side of one of its neighbors This causes lateral surface growth
Directed Percolation Depinning Start with a mask for blocked and unblocked cells along with initial thickness map The thickness map is more likely to grow into unblocked cells (lateral growth) Introduce seeds into unoccupied regions Vertical growth happens a location based on height of neighbors
Coat coat material thickness thickness-map Adds a new layer of the given material With maximum thickness Its distribution is controlled by the thickness map
Erode erode thickness thickness-map Erode removes material away from a surface according to some thickness map Theoretically each layer should erode according to some property of the material i.e. rust is removed more easily than iron (they do not currently take this into account)
Fill fill material height height-map Deposits a material up to some height It is like filling in cracks
Polish polish height height-map Keeps removing material until some absolute height is reached
Offset offset radius Applies a thick coat to the surface Then removes the part that intersects with a sphere of a given radius
Rendering Rendering a single layer they use the Kubelka-Monk model (KM Model) The KM model corresponds roughly to 1-D radiosity
Rendering One Layer Equation is change in Flux/area is equal to – (absorption + backscattering) + backscattering from the opposite direction This has an analytical solution
Rendering One Layer Cont. Reflectance and Transmittance are given by looking at ratios an the interfaces of the layer We still need to determine K and S Measure reflectance of a thick surface; assume S a = (S+K)/S, b=sqrt(a^2-1)
Multiple Layers Layers can be combined to give an overall reflectance and transmittance
Specular Reflection (BRDF) The KM model handles diffuse reflection but not specular They use Cs(N H)^(1/r) to model specular reflection They calculate a surface roughness Upper layers inherit properties below Attenuate specular terms by 2 times the diffuse transmittance for each layer on top (it has to pass through the layer twice) Have the renderer sum the terms This is an approximation
Sample Script new copper; coat tarnish_ texture(BD_linear_1_20); coat cuprite_2 1.2 texture(DPD_linear_5_40); coat marine_patina_3 3.0 texture(BD_linear_10_20); coat marine_patina_4 1.8 texture(DPD_linear_20_40); erode 0.5 texture(BD_linear_5_20); render maps;
Results
Conclusions Results are convincing Short-comings How to pick the right textures? Better Erosion Model Better Water Collection Model Better Glossy Reflection model (important?) Still involves lots of parameter tweaking