Articles

How to Simulate the Kylie Cosmetics Glitter Pour in Houdini

Includes one exclusive complete course

The exclusive course — a full production tutorial you won't find anywhere else, never sold alone.

Best Seller
Most Loved
Tutorial Camera Rig

ADVANCED CUSTOM CAMERA RIG

ANIMATION · CONSTRAINTS · CUSTOM UI

BUILD A FULLY CUSTOM CONSTRAINT-BASED CAMERA RIG IN HOUDINI WITH A CUSTOM UI PANEL. DESIGN FLEXIBLE SYSTEMS FOR PRECISE, CINEMATIC CAMERA ANIMATION ON ANY PROJECT.

€29.99

Freebies
Free Studio HDRI Pack box by Artivoxa showing 60 studio lighting setups with softboxes wrapped around the packaging

Studio HDRI Collection

ASSETS · EXR & HDR · 60 HDRIS

DOWNLOAD 60 STUDIO HDRIS CAPTURED IN A REAL PHOTO STUDIO. LIGHT YOUR PRODUCT AND BEAUTY RENDERS LIKE A PHOTOGRAPHER — SOFTBOX, LANTERN, STRIP AND GRID SETUPS, READY FOR ANY RENDERER.

FREE

ARTILABZ™

Everything You Need to master Houdini.

ARTILABZ™ gives you unlimited access to all Houdini courses, 3D assets, simulation files, textures and tools. updated every month.

01

Premium Houdini Tutorials

Full access to every course — fluid simulation, procedural FX, brand visuals and more.

02

Monthly New Content

Fresh tutorials and assets added every month — your library grows with you.

03

Instant Access to Everything

The moment you join, the full library is yours — no drip-feed, no waiting.

04

Project Files Included

Every tutorial comes with the full Houdini scene file — open every node, learn every detail.

FROM 14.99€/MONTH

How to Simulate the Kylie Cosmetics Glitter Pour in Houdini

Have you ever tried to recreate that glossy, dripping shimmer from a Kylie Cosmetics ad and ended up frustrated by scattered particles or slow renders? You’re not alone. Many artists struggle when they dive into Houdini expecting instant results but find themselves lost in node networks and parameter tweaks.

Is controlling thousands of tiny glitter pieces turning into a nightmare? Fine-tuning collision shapes, velocity fields, and instancing settings can feel overwhelming. You might spend hours on a sim only to discover the distribution looks unnatural or the shading fails under close inspection.

Between optimizing playback speed, setting up proper attributes for variation, and preparing your render engine for micro-geometry, the process can stall your project progress. Without a clear roadmap, it’s easy to get stuck tweaking one node after another without moving forward.

In this article, you’ll walk through a structured workflow that tackles each phase of the simulation: from initial particle emission to collision setup, material assignment, and final render tweaks. No more guessing which node does what or why your glints go missing under light.

By the end of this guide, you’ll have a replicable approach to crafting a realistic glitter pour that mirrors the high-end production look of a Kylie Cosmetics spot—all within Houdini, with clear checkpoints to measure your progress.

What assets, Houdini version, and render setup should I prepare before simulating the glitter pour?

Before diving into the pour simulation, assemble your geometry, solver environment, and rendering tools. A well-organized pre-simulation setup speeds iteration and helps you focus on the physics and look development without interruptions.

  • Assets: Import a clean container model (bottle or tube) with proper UVs. Prepare a procedural glitter source—packed spheres ~0.1–0.5 mm with random orientation attributes. Gather PBR maps (albedo, roughness, normal) for your container.
  • Houdini version: Use Houdini 19.5 or later to leverage the GPU-accelerated FLIP solver and enhanced particle caching. Upgrade to 20.0+ if you plan to explore Solaris LOPs and USD-based lookdev.
  • Render engine: Choose Redshift for GPU speed, Arnold for production reliability, or Mantra for full integration. Ensure you have a layered PBR shader with clear-coat glitter layer, anisotropic roughness control, and accurate IOR (~1.45–1.50).
  • Scene setup: Add an HDRI environment (EXR 4k) for crisp sparkle reflections. Include a ground plane with contact shadows. Define AOVs (beauty, specular, diffuse, depth) to streamline compositing.
  • Caching strategy: Plan disk caches using DOP I/O or File SOP to store FLIP sim data and packed primitives. Establish a clear naming convention and folder structure to prevent overwrite during iterative tests.

With these assets and configurations in place, you’ll avoid common blockers and maintain consistent, high-quality results as you build your FLIP simulation and refine the glitter pour.

How do I analyze reference and plan a production-friendly simulation workflow?

Begin by collecting high-quality footage of a glitter pour, ideally from multiple angles and lighting conditions. Scrub through frame by frame to note flow speed, droplet formation, and settling behavior. Record timestamps for distinct phases—pour start, peak turbulence, initial settling—so you can match your simulation timing precisely.

Break the motion into layers: the bulk liquid, glitter suspension, and surface ripples. Determine viscosity and particle concentration by observing how quickly the liquid slows and particles cluster. Plan to simulate the bulk FLIP fluid first, then introduce a separate particle system for glitter to control density and collision independently.

Establish scene scale and camera framing early. Import a simple proxy of your final container and set camera focal length to match your reference. This alignment ensures your simulated droplets and glitter hits scale correctly, avoiding late-stage rescaling that can break timing or cause unwanted interpenetration.

  • Low-res FLIP test: 10k particles for timing
  • Medium-res sim: 50k–100k particles for shape fidelity
  • High-res glitter pass: 200k+ points with packed prims

Create a modular Houdini network: keep your geometry setup in SOPs, simulation in a DOP network, and caching through ROPs. Use descriptive node names (e.g., flip_granular_base, glitter_source). Version your caches at key milestones—timing, mid-res, and final—to allow quick rollbacks without rerunning entire simulations.

Integrate render and lighting considerations from the start. Use PDG or ROP Fetch to automate batch submits and manage farm resources. By planning each pass—base flip, glitter emission, shading tweaks—you ensure that your workflow scales to production constraints and delivers consistent results on deadline.

How do I build the pour rig and animated source geometry for accurate emission and collision?

Start by creating a simple object-level rig for the bottle. In the OBJ network, drop a null called BOTTLE_CTRL and snap its pivot to the lip edge. Parent your bottle SOP under this null. Rotating BOTTLE_CTRL around its pivot gives precise pour angles without modifying the mesh itself.

Animate the pour by keyframing the null’s rotation channels. Once your curve is satisfactory, bake the animation into a geometry sequence using a ROP Geometry Output. This ensures each frame’s transform is locked and avoids referencing active rigs during FLIP simulation.

For collision, generate a lightweight proxy using an SDF volume. Inside your bottle object, merge the animated geo and feed it to VDB from Polygons, choosing a voxel size of 1–2 units. This creates a smooth implicit surface that the FLIP solver can sample efficiently.

In DOPs, import that volume as a Static Object (or RBD Packed Object if the bottle moves). Enable “Use Deforming Implicit,” point the SOP Path at your VDB cache, and set the friction and bounce low for glitter to slide realistically.

Finally, define your emitter region and velocity. In SOPs, isolate the pour spout faces or place a narrow box at the lip. Compute per-point velocity with a SOP Solver or by differencing P positions in a Point Wrangle (v = (P – Pprev)/dt). Bring that geo into DOP with POP Source set to “Surface” emission and “Use Velocity Attribute” enabled. This alignment between rig, animation, collision SDF, and v attributes delivers an accurate, controllable glitter pour in Houdini.

How should I simulate glitter motion — POPs, FLIP, or a hybrid approach, and how do I set each up?

POP particle setup for millions of fine glitter flakes (seeding, attributes, forces)

In Houdini, pure POPs excel at handling millions of micro-flakes with minimal overhead. In SOPs, scatter your glitter mesh on source geometry, then feed points into a POP Source inside DOPs. Enable “Activate” and set Emission Type to “All Points” for persistent emission.

Use a POP Wrangle to assign per-particle attributes: @pscale for size variation, @orient for random rotation, and @id or @Cd to drive instance UV lookup. Add global wind via POP Force, and layer subtle noise turbulence in a POP VOP or Wrangle using curl noise. Finally, insert a POP Drag to damp spikes without killing natural shimmer.

FLIP + packed-particle hybrid for interaction with liquids or viscous binders (transfer, coupling, constraints)

When glitter must swim in a liquid binder, couple FLIP fluids with packed particles. Create a FLIP Object and import your liquid source geometry into DOPs. Use a POP Source to emit flakes, then convert them to packed prims via a SOP Solver subnetwork.

Inside the DOP network, enable Particle Fluid Interaction to transfer velocity from FLIP to packed glitter by setting Transfer Attributes to “v” and “P”. Tweak the FLIP Solver’s viscosity model to simulate binder thickness. This ensures each flake inherits local fluid motion and shear.

To maintain flake cohesion or adhesion to a dynamic surface, use Glue Constraints on an RBD Packed Object. Build constraints between flakes or to the liquid surface with a Connectivity SOP, then generate a Glue Constraint Network. Adjust break thresholds so clusters yield naturally under flow or drying forces.

How do I shade, instance, and render millions of glitter flakes efficiently for a cosmetic look?

To achieve a high-density glitter effect without performance loss, pack your flake geometry into a single disk or hexagon prototype using the Pack SOP. By storing just one instance of the mesh and referencing it on points, Houdini’s viewport and render engine only handle transform and attribute data per flake, rather than full geometry. This instancing approach is essential when working with millions of elements.

In SOPs, scatter points on your pour surface or fluid mesh and use Copy to Points with Pack and Transform. Transfer per-point attributes like pscale, normals, and a randomized seed to drive variation. For example, create a rand(seed) attribute and feed it into a color ramp inside your material network to get subtle hue shifts and specular variance across flakes.

Switch to Solaris (LOPs) for a procedural USD workflow. Create a Point Instancer USD prim, reference your packed disk prototype, then point to your scatter geometry using a Scene Path expression. This lets Karma, Houdini’s native renderer, leverage instance masking and bounding‐box frustum culling, drastically reducing memory overhead at render time.

  • Scatter millions of points with density driven by paint or noise masks.
  • Pack your flake mesh once and attribute-drive orientation and scale.
  • In Solaris, use Point Instancer and Karma’s deep instancing for fast IPR.
  • Control specular roughness via a detail-level ramp to mimic cosmetic shimmer.

For shading, use a Principled Shader with metallic set to 1 and roughness mapped to your noise-based attribute. Connect the random seed into microfacet color and specular inputs to simulate light glint. In Redshift, you can use the RS Instancer node in OBJ context similarly—just feed your packed disk geo into the instancer, map per-instance attributes, and assign a Redshift Material with a layered Fresnel-based reflector. This workflow ensures millions of flakes render with crisp sparkle and accurate shading while keeping memory footprints minimal.

What caching, optimization, and troubleshooting practices ensure stable sims and fast iterations?

Efficiently iterating on a complex glitter pour in Houdini requires a solid caching and debugging workflow. By isolating simulation cost, reusing on-disk data, and applying procedural optimization, you maintain both stability and speed. Proper stepping, collision proxies, and targeted debugging tools help you catch errors early and avoid full restarts.

  • File Cache SOP: Cache low- and high-resolution sim outputs separately. Feed cached frames back into Dop Import to skip re-solving unchanged ranges.
  • ROP Geometry Output nodes: Enable “Load From Disk” to lock in good sim results. Use versioned file naming for quick rollbacks without manual re-exports.
  • Proxy Collisions: Model pour geometry as convex hulls or VDB shells. Lower collision detail dramatically speeds up collision solves without visible artifacts.
  • Multistage Resolution: Begin with a coarse particle separation (e.g. 0.05 m) to define overall flow, then use Particle Fluid Surface or VDB Resample to upres for final detail.
  • Time Step & CFL tuning: In the FLIP Solver’s substep and CFL parameters, reduce Time Scale or increase substeps only where instability arises to limit runtime impact.
  • Packed Primitives: Pack glitter flakes before the pop network to minimize SOP overhead. Unpack only when transferring to Mantra or Karma for shading.
  • Visual Debugging Tools: Activate the Velocity Vector visualizer and use the Geometry Spreadsheet to detect NaNs or spikes in force magnitudes early.
  • DOP I/O switch SOP: Toggle between live sim and cached results to isolate problematic nodes. Bypass forces or emitters to pinpoint instabilities.
  • Automated Checkpoints: Insert caches every 50–100 frames with unique file paths. Recover mid-simulation after a crash instead of restarting from frame 1.

By combining targeted caching, low-res proxy stages, and Houdini’s built-in diagnostics, you ensure your glitter pour sim remains both stable and fast. Iteration cycles shorten dramatically when you isolate changes, reuse disk caches, and debug only the nodes that matter.