top of page
  • LinkedIn - Grey Circle
  • Vimeo - Grey Circle
  • SideFX Gallery
Shoe Commercial

Title: Sneaker Commercial

​

Programs: Houdini

​

Modeled: N/A

​

SIM: Houdini

​

Lighting: N/A

​

Texture: Houdini (Arnold)

​

Rendering: Arnold
 

Description:

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***

Team

​

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

​

Commercial Shot
Test Renders

Render test of FX transition growth, and shader layering test.

Transition Test
Geo Prep
001_geoPrep.JPG

Unwanted attributes are deleted. Afterwards the mesh is subdivided for solver accuracy; while, a rest attribute is stored per points to be used later.

Scatter Points
002_scatterPoints.JPG

Points are scattered into a desired area for the growth to begin.

Set Grow
003_setGrow.JPG

Start points are selected from the scattered region. Afterwards the "grow" attribute is initialized.

Set Decay
003_setGrow.JPG

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.

Set Decay
004_transferDecay.JPG

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
006_paperGrowth.JPG

The points are then colored based on the "grow" attribute. Which is then written out and used to drive different aspects of the transformation.

Transfer Grow
007_transferAttrib.JPG

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

Geo Prep
008_adjustEdge.JPG

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.

Generate VDB
009_vdbPaperEdge.JPG

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

Remove Edge
010_keepGrow.JPG

Blast remove edge primitives. Create a rest attribute. Remove any points with no "grow" attribute", also remove any overlapping low value grow.

Check Edge
011_checkEdge.JPG

Check if any edge overlaps. If so blur attribute and create rest for position adjustment.

Create Corrugated Cardboard
012_createCurrogatedCardboard.JPG

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.

Combine Layers
013_combineElements.JPG

The paper and cardboard layers are vdb combined, converted to polygons, and grouped.

Extra Pieces
014_extraPieces.JPG

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.

Shader Attributes
015_transferShaderAttrib.JPG

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
016_transferUV.JPG

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.

Final Extrusion
026_finalExtrude.JPG

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.

Creating Fibers

Geo Prep
018_fiberPrep.JPG

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.

​

End Result:

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
019_createFibers.JPG

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
020_createFiberRest.JPG

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.

Micro Fibers
021_createMicroRest.JPG

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.

Solver Rest
022_createSolverRest.JPG

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.

Transformation Rest
023_createTransformationRest.JPG

Create new rest position on the inside of final FX transition model to prevent overlap. Then restore solver rest.

Transfer Solver Attributes
024_transferGuidAttribs.JPG

Transfer, shrink (blue underneath orange), micro (purple to red), transform (orange).

Shape Fibers
025_movePoints.JPG

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.

Create Mesh
025_sweepAndLayout.JPG

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.

Apply Animation
027_applyAnimation.JPG

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
028_cardboardShader_01.JPG

Noise and colors are mixed together using the attributes mentioned earlier to generate the shaders.

Cardboard Shader Pt2
029_cardboardShader_02.JPG

Shader settings

Cardboard Shader Pt3
030_cardboardShader_03.JPG

Shader displacement

Fiber Shader
031_fiberShader_01.JPG
Final Shaders
032_finalShaders.JPG

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.

All Rights Reserved

by Luke Vuilliomenet and their respective owners

bottom of page