Title: Sneaker Commercial
Texture: Houdini (Arnold)
A collaboration with the aim of designing, and creating multiple commercial variants with the hope of being bid to a company.
This page is dedicated to the work by Luke Vuilliomenet (LVFXStudios). However the project as a whole was a cumulative effort by all present.
***All work shown is used under the assumption as Work in Progress (WIP), and therefore cannot be taken as an accurate depiction of final deliverable until stated otherwise. 7/3/2020***
Director: Kevin Mannens
Project Supervisor: Morgan Woodward
Editor: Paul Griswold
VFX Supervisor: Noah Catan
Lead FX Artist: Luke Vuilliomenet
FX Artist: Yanni Fong
FX Artist: Chen Tang
FX Artist: Junpeng Tang
Modeler: Wei Bin Ng
Environment Modeling & FX: Julie Krizan
Texture Artist: Wei Bin Ng
FX Textures: Respective FX Artist
Animator: Paul Griswold
Lead Lighter: Morgan Woodward
Lighter: Gavin Montgomery
Lead Compositor: Noah Catan
Compositor: Gavin Montgomery
Compositor: Wei Bin Ng
Render Manager: Morgan Woodward
Render test of FX transition growth, and shader layering test.
Unwanted attributes are deleted. Afterwards the mesh is subdivided for solver accuracy; while, a rest attribute is stored per points to be used later.
Points are scattered into a desired area for the growth to begin.
Start points are selected from the scattered region. Afterwards the "grow" attribute is initialized.
The starting points are used to generate a region of points which are then fed to the high resolution scatter. The point wrangle uses "nearpoint" function to determine if the high resolution is a starting region or not.
Check if the high resolution is in a starting region or not. The points are then fed into a solver node to generate the growth effect utilizing a noise to create variance.
Output Growth Solve
The points are then colored based on the "grow" attribute. Which is then written out and used to drive different aspects of the transformation.
The grow attribute is transferred to the base shoe model (Dark blue). While an edge attribute is created by offsetting the grow solve forward in time and blasted to a specific value (Pink).
*Primitive groups are created using these values as guides*
Creating Paper Edge
The geometry is cleaned by fusing any overlapping points. Afterwards the normal scale is adjusted, followed by moving the geometry inward along normal to rest inside of outer shoe geometry. The surface is then reduced for better pattern creation, sorted at random, and given a rest attribute.
The random points in the "move" group are adjusted using soft peak, followed by adding noise to the geometry as a whole. The grow and edge attributes are then isolated and extruded so that a vdb can be generated. A wrangle is used to smooth the P position on the outer edge of the geo. Finally a vdb is generated, using a reshape on dilate to remove any messy intersections.
Creating Cardboard Interior
Blast remove edge primitives. Create a rest attribute. Remove any points with no "grow" attribute", also remove any overlapping low value grow.
Check if any edge overlaps. If so blur attribute and create rest for position adjustment.
Create Corrugated Cardboard
Points on the inner layers are first removed as time goes on to prevent unneeded geometry. Depending on the layer being created the geometry is moved along its normal using the N vector or a sin wave. Once merged together the layers positions are adjusted if the "edge" attribute is detected and then VDB'd.
The paper and cardboard layers are vdb combined, converted to polygons, and grouped.
The smaller pieces (Laces, logos, webbing, etc.) were unable to accurately generate the corrugated pattern; therefore, they were passed through a simplified system using the same techniques minus the movement along normal.
The different stages of the growth are used to attribute transfer a float value that will be used to generate the FX shaders.
Transfer UV + Name
In order to create clean accurate geometry a vdb was created; however, in doing so the UV attribute along with name attributes needed for texturing were lost from the original model. The original model was separated into individual parts, subdivided, and then passed the attributes over to the new FX model.
As the final shoe shader growth appears the model is slightly extruded along its normal and then the position is smooth between the original surface and the new edge.
The provided model is subdivided to give a smoother outline. Then a vdb is generated to generate a large number of primitives. The remesh node is used to convert the quads into triangles and in doing so gives a more random placement. Noise is then generate to drive a poly reduction in certain areas so that there are longer and shorter segments. Finally primitives are removed at random using noise and a rand() vex function.
Geometry containing an irregular placement of larger and smaller primitive edges with holes. Thus prevent straight paths to be fed into the "Find Shortest Path" node.
Find Shortest Path
The growth solve at different stages is taken from before and passed to the prepared path geo. By removing or not removing a value greater than or less than zero on grow gives predetermined start and end regions. Using a group by range node, start and end points are defined, and fed into the find shortest path node. Finally a resample is used to adjust the overall shape of the paths.
Create Primary Rest
Create a gradient based on number of points per primitive. Tell the points which primitive they exist on. Transfer the normal from the original shoe model. Move the point along its normal to be within the outer shell geometry, and define this as the starting restPath position.
Define a cross direction between normal and direction of curve. Noise is then added to this cross direction and point is moved based on this vector. The new position is then moved to a polywire surface from the scatter points of the original model. The points are mixed between the new position and the original rest position and stored in a new Micro rest.
A similar process is taken for creating the solver rest (the position used to transfer any new information from the growth solver to fibers). Prior to the final ray the main rest attribute is created. At the end the new fibers are rayed to the actual surface of the original model.
Create new rest position on the inside of final FX transition model to prevent overlap. Then restore solver rest.
Transfer Solver Attributes
Transfer, shrink (blue underneath orange), micro (purple to red), transform (orange).
Shrink is used to adjust between the rest and solverRest positions. Micro then mixes between the newly created position and the microRest. Transform then mixes between the finished micro position and the needed transformRest.
At the same time a random pscale multiplier is generated for each fiber primitive. and is used along with a random pscale.
Each fiber is animated using a carve node. Unnecessary attributes are deleted. A primTotal attribute is created. Afterwards a predefined shape containing uv's (left viewer, right side) is swept onto the fiber curves using pscale. The gradient and prim_num are promoted to vertex and used to proceduraly layout each fibers uv's.
The base shoe and extra pieces are separated out and the animation is apply using a pointdeform node. This applies for all aspects, FX model and fibers.
Cardboard Shader Pt1
Noise and colors are mixed together using the attributes mentioned earlier to generate the shaders.
Cardboard Shader Pt2
Cardboard Shader Pt3
The final shoe shaders were created by Wei Bin Ng. The FX (cardboard and fiber) shaders were mixed with the final shaders using the same method to create a growing transition between the two.