The project

For Pokémon’s 25th anniversary, Yahoo RYOT Lab partnered with London-based designer Charli Cohen and Selfridges to create an entirely virtual 3D world — a metaverse retail and cultural experience that existed purely in digital space and could be visited by anyone with a browser. The experience was covered by Yahoo Inc and represented one of the more ambitious real-time web experiences of its time.

The world was built in Unreal Engine — large, detailed, and lit with the kind of density you’d expect from a fashion-forward designer’s vision of a Pokémon universe. Which is to say: a lot of lights. Electric lights, neon, ambient glow, point lights scattered across an enormous space. Each one physically accurate. Each one with a performance cost.

Getting that to run in real time, at quality, without melting the hardware it ran on, was the problem I was brought in to solve.

Yahoo RYOT Lab × Charli Cohen Pokémon virtual world interior
Yahoo RYOT Lab × Charli Cohen Pokémon virtual world lighting

Custom lighting system

Large real-time environments and large numbers of dynamic lights are, in the general case, enemies. Each light that needs to affect geometry is a draw call. Each shadow a light casts is a render pass. Multiply that by the scale of the space and the density of the lighting design, and you arrive at a number of milliseconds per frame that nobody wants to see.

The solution was a custom lighting architecture built specifically for this project — designed around the constraint that the space had to be large, the lights had to look dense and electric, and the frame rate had to stay acceptable across a wide range of hardware.

  • Light budgeting — a per-zone light budget system ensuring only the lights relevant to the player’s current position were ever evaluated, the rest culled entirely, not just hidden.
  • Baked / dynamic hybrid — static architectural lighting baked into lightmaps for zero runtime cost. Dynamic accent lights — the ones that animate, pulse, or respond to interaction — kept live but tightly constrained in number.
  • Emissive surface system — much of the neon and electric glow achieved through emissive materials rather than actual light sources, preserving the visual density of the lighting design without the associated rendering cost.
  • Reflection captures — carefully placed reflection captures to simulate the environment’s electric atmosphere in specular surfaces (metallic fashion pieces, wet floors, glazed surfaces) without dynamic reflections.
  • LOD-aware lighting — light influence radii tuned to match geometry LOD transitions, so distant areas of the space received appropriately simplified lighting matching their reduced geometric detail.
  • Performance across hardware — the system was tested and tuned across a range of hardware, from high-end workstations to mid-range consumer laptops, to ensure a consistent and acceptable experience regardless of where it was viewed.

MetaHuman tattoo toolset

The fashion direction called for tattooed characters — not as decals stuck on top of geometry, but as ink that read correctly on skin across lighting and movement. MetaHumans, out of the box, do not particularly want you to do this. The skin is a layered material with its own conventions for what can and cannot be authored on top of it.

The toolset I built worked from the artist’s side rather than the engine’s. An artist would draw their tattoo onto a simplified dummy mesh — a clean canvas that mirrored the body topology without the rest of the MetaHuman complexity — and the tool would transfer that information automatically onto the actual MetaHuman skin in a way the existing material stack would respect. Getting that round-trip working meant reaching into the MetaHuman internals and rerouting parts of the skin layer that were never really designed to be touched.

The result: tattoos as a material decision the art team could iterate on freely, without having to fight the rig.

Customisable Afro wig in Houdini

Hair is the other place MetaHumans push back. The default groom system covers a lot of ground but doesn’t do everything — and an Afro silhouette, with the volume and density it needs to actually look like itself, was not in the default catalogue.

I designed it in Houdini as a procedural groom: shape, density, curl, and scale all parameterised so the same setup could be tuned per-character rather than rebuilt. The result was exported back into the MetaHuman pipeline as a drop-in hair asset — compatible with the rest of the rig, but with the fidelity the design called for.

Role

Technical lead across the lighting, MetaHuman tooling, and groom side of the project. Worked directly within the Yahoo RYOT Lab team alongside Charli Cohen’s creative direction and the Selfridges brand requirements — translating an ambitious visual brief into something a real-time engine could deliver without apology.

Read the Yahoo announcement →