Mohammed Rizwan

I build AI systems and interactive installations. 60+ shipped, across events around the GCC.

Outside of that, I have two cats who are mostly demons.

Rest of the time, I am either picking up a new hobby or diving into new rabbit holes.

Featured work

Read what I write

Before

  • Mediapro International2025—
  • Lazulite Technology Services2024—25
  • Spatial Guide Inc2023—24
  • Acrophase, IIT Madras2022—23
  • Sri Ramakrishna Engineering College2019—23
Work

Internal tooling for Unity

Lazulite / Mediapro · 2024—

The tools the rest of this work is built on, most of which cannot be shown.

This is the layer underneath most of the other pages on this site. Most of it is internal and under NDA, so the code is not mine to show, only to describe. The hardware libraries at the bottom are the exception, those are public.

A runtime debugger inside Unity. Technicians on site used to phone a developer whenever something needed adjusting mid event, usually at the worst possible moment. I watched what they actually changed and built them a panel that exposes those values live in the running build, so they can do it themselves without a rebuild and without me.

HAP support for transparent video. HAP decodes on the GPU rather than the CPU, which is what makes a large video playable at all on an installation machine, but getting an alpha channel through it inside Unity meant handling the codec directly instead of leaning on the built in player.

An alpha packing format for ordinary mp4. Rather than ship a codec that carries transparency, the colour goes in one half of the frame and the matte in the other, and a shader recombines them at draw time. What comes out is a plain h264 file that plays anywhere, at a fraction of the size a real alpha codec costs.

A paging and navigation system modelled on Flutter's navigator. Unity has no concept of a screen stack, so every project used to reinvent one out of scenes and booleans, badly. This gives you push, pop and a route table, and it removed most of what a new project used to have to write from scratch.

A drag and drop PNG sequence player. Playing a frame sequence used to mean building an animator by hand for every one of them. Now you drop the folder in and it plays, which took most of the animators out of our projects and most of the reason to open the animation window at all.

The hardware libraries are the public part. Unity-CSerial for talking to serial devices, Artnet-Unity for Artnet, and a small package for pushing hex values over Bluetooth serial. They sit on GitHub rather than inside any one project, so protocol handling gets written once instead of again every time somebody wires up a new bit of hardware.

StackUnity · HAP · Compute shaders · Serial

CodeUnity-CSerial · Artnet-Unity · hexbridge · uianim

Work

Real time conversational avatar

Personal project · Ongoing

A fully interactive avatar of a person, generated from a single video of them.

Whisper transcribes, Claude Haiku answers over a Supabase vector store, local TTS speaks, and that audio drives the AVTR-1 video model — every stage streaming from its first packet to keep the round trip under four seconds.

A face landmark crop on every frame stops the video model drifting over a long session. Most of the work has been failure handling rather than models.

StackPython · Whisper · Claude Haiku · Supabase · AVTR-1

Work

Fly a plane with your phone

Mediapro International · 2026

Tilt your phone and a plane banks on the screen in front of you.

The phone is the joystick. You open a page on it, hold it sideways, and the gyroscope feeds into Unity as pitch and roll. There is no app to install, it is just a web page.

It runs through a GCP backend rather than the local network, so a player connects on their own mobile data instead of having to be on the venue's wifi. Going over the internet brought the two problems you would expect, latency and phones dropping the connection, and both of those took a while to sort out.

StackUnity · Web · Gyroscope · GCP

Work

Asteroids with a real laser

Mediapro International · 2026

An asteroids game where the shot is an actual laser beam.

The joystick moves a crosshair over the projected content. Pull the trigger and a real laser fires at the wall, and whatever asteroid was under the crosshair bursts. Everything you see is projected except the beam, which is genuinely in the room with you.

Getting the beam to land where the game says it hit was the fiddly part. The projector and the laser are two separate devices pointed at the same wall, and they have to agree on where the crosshair is before any of it feels like aiming.

StackUnity · MadLaser · Joystick

Work

Signature drawn by laser

Mediapro International · 2026

You sign on an iPad and a laser draws it on the wall as you go.

The iPad sends the strokes over the network to Unity, and Unity hands the path to MadLaser, which drives the beam. It happens while you are still writing, so the signature lands on the wall at the speed you sign it.

A pencil produces far more points than a laser needs or a network wants. The line had to be smoothed and thinned before it went anywhere, otherwise you flood the connection and the beam ends up chasing a backlog instead of following your hand.

StackUnity · MadLaser · iPad

Work

16K interactive video wall

Mediapro International · 2026

A wall of offset LCD panels you touch, all of it one canvas.

The panels sit in staggered rows and each one plays something different. A TUIO lidar reads touch across the whole face of the wall, and because it is multi touch, several people can work different panels at the same time.

The interface is Unity UI Toolkit running at 16K, and that resolution was the whole problem. Things that cost nothing at 1080p stop being free at that size, so most of the work went into getting it to run at all.

StackUnity · UI Toolkit · TUIO lidar · 16K

Work

Toyota at the Riyadh Motor Show

Mediapro International · 2026

A four sided LED column on Toyota's stand, with a touch table at the foot of it.

The screen is not one surface. LED panels run up the column, out across a ceiling ring above it and down into the table at its base, and all of it is one Unity application rather than three that have to stay in agreement. Cards come down the column against a particle waterfall, and tapping a tile on the table brings the matching one up full height.

The hard part was cohesion. Three surfaces at different angles and different sizes, with a person standing in the middle of them, and the whole thing has to read as one piece rather than three screens that happen to be next to each other.

The clip is a tour of the whole stand. The column, the ceiling and the table are the parts I built.

StackUnity · LED panels · Touch table

Work

Touch games at the Village of Happiness

Mediapro International · 2026

Four small games on a touchscreen at a festival pavilion in Oman.

A wall mounted touchscreen with a menu and four games behind it: an endless runner where you steer a cat down a street, a memory match grid, Wordle, and a space shooter. Built for the National Finance pavilion at the Village of Happiness.

The players were mostly children, so everything answers the moment you touch it.

StackUnity · Touchscreen

Work

KUKA digital twin

Lazulite Technology Services · 2025

A KUKA robot and its Unity twin, each following the other.

Move the arm in Unity and the real KUKA moves with it. Push the real one around and the model follows that instead. It runs both ways off the same joint state, so neither side is really the master.

The second clip is the Unity side on its own, dragging a target around the scene and letting the arm solve its way to it.

StackUnity · KUKA

Work

GISCO kinetic wall at ADIPEC

Mediapro International · 2025

A kinetic wall you press with your hands, and an Unreal copy of it that behaves the same way.

The wall is LED tiles on motors driven from Artnet pixels that Unity generates, so the content and the movement come out of the same place. The travel is only a few centimetres, so it reads as a ripple across the face rather than big sweeping motion. The menu sits on a column of panels down the left that stand proud of the wall, and a lidar reads touch, so the button you press is a panel that is also moving.

The other half is a simulator in Unreal Engine that takes exactly the same input the real wall does. Feed it the show and it shows you what the wall will do, actuators and all. That is what the client approved against before anything was built, and because it is the same feed, what they signed off is what got installed.

StackUnity · Unreal Engine · Artnet · Lidar touch

Work

Interactive particle floor

Mediapro International · 2025

An LED floor that tears open where you step on it.

The floor reports touches over TUIO, so it knows where feet are without a camera watching the room. That feeds a TouchDesigner particle simulation, and the field opens up wherever you stand and closes again behind you.

The hard part was not the input, it was the look. Getting the particles to react organically, to move like they have some weight to them and settle once you walk off, took much longer than wiring the touch up did.

StackTouchDesigner · TUIO · LED floor

Work

Laser show on a kinetic LED wall

Mediapro International · 2025

A launch show where the lasers, the video and the wall itself all move together.

MadMapper runs the video and MadLaser runs the beams, and both sit on one timeline in MadMapper so the whole show has a single clock. It was Mediapro's own prototype rather than a client job, which is why the thing the lasers draw at the end is our own logo.

The wall is not a flat LED wall, it is a kinetic one, so the panels move while the show is running. The laser is being mapped onto a surface that will not stay where you left it, and the content, the beams and the motion all have to land on the same beat. Getting those three to agree was the whole job.

StackMadMapper · MadLaser · Kinetic LED wall

Work

Gesture jigsaw on an LED wall

Lazulite Technology Services · 2025

A jigsaw you solve by grabbing the pieces out of the air.

A Kinect feeds skeleton data into TouchDesigner, TouchDesigner passes the hand positions to Unity, and Unity runs the game. Close your fist and you pick up a piece, open it and the piece drops where you left it.

Two things made it usable. One was a distance cutoff, so the crowd standing behind the player does not get read as a second pair of hands. The other was picking the right bones to measure the hand against, so the movement is relative to the body rather than to the room. Get that wrong and tall people reach comfortably while everyone else is stretching for the top row.

StackKinect · TouchDesigner · Unity

Work

Audio reactive particle sim

Lazulite Technology Services · 2025

A particle sphere that moves to whatever audio you give it.

An FFT breaks the incoming audio into bands, and a beat detector picks out the hits on top of that. Both drive the particle sim directly.

Whatever you feed it works, a track or a live mic. Nothing is pre-baked, the sim runs in TouchDesigner while the audio plays.

StackTouchDesigner · Audio FFT · Beat detection

Work

Sephoria dance off

Lazulite Technology Services · 2024

A step pad game on a lit floor, arrows coming down a screen, a score at the end.

The floor is nine lit tiles and only four of them do anything. Each of those four sits on a load cell, an ESP32 reads them and sends the hits into Unity over serial. Arrows come down the screen, you step on the matching tile, you get a score at the end.

The problem was delay. Your foot lands, the load cell reads it, that goes over serial, then Unity draws the hit, and by the end of that chain the game feels like it is not listening to you. Most of the work was measuring each part and lining the timings up with the moment the arrow actually reaches the line.

StackUnity · ESP32 · Load cells · Serial

Work

VR camel race

Lazulite Technology Services · 2024

A camel race in VR with a motion base under the seat.

You do not steer it. The race is choreographed, and the seat is a one axis motion base that Unity drives over serial, sending it an intensity that follows whatever the camel is doing on screen.

That serial link runs off the headset itself, which is not something a headset is built for. Most of the work was keeping the connection up for a whole ride instead of having it drop halfway through.

StackUnity · VR · Motion base · Serial

Work

Pong on a flipdot wall

Lazulite Technology Services · 2024

Two-player Pong on a wall of physical dots that flip black and white.

A Kinect tracks both players and hands the positions to TouchDesigner, which passes them into Unity. Raise your arm and your paddle follows it. Kinect's own player tracking keeps each person tied to their own paddle, so it does not matter how much they move around.

The screen is the interesting part. It is a flipdot, so every pixel is a real dot mechanically flipping between black and white, and that is slow. You cannot animate on it the way you would on an LED wall. The ball and the paddles had to be built around the refresh rate the wall could actually manage rather than the one the game wanted.

StackUnity · Kinect · TouchDesigner · Flipdot display

Work

Multiplayer cycling race

Lazulite Technology Services · 2024

Three exercise bikes racing each other on one screen.

An encoder on each bike reads the RPM. All three run into a single ESP32, and that talks to the app over serial. One machine, one screen, three riders, and the bars fill at whatever rate you can pedal.

The serial messages are hexadecimal rather than plain text. Three bikes reporting continuously is a lot of small messages, and packing them into fewer bytes meant less to parse every frame and less chance of the input falling behind the pedalling.

StackUnity · ESP32 · Rotary encoders · Serial

Work

Trivia on a kinetic wall

Lazulite Technology Services · 2024

A quiz on a wall whose panels push in and out while you play it.

The wall is not flat. Individual panels sit on motors and move in and out, and every one of them is tweened rather than snapped, so the face moves as a surface instead of a set of separate parts. Touch comes from a 2D PoE lidar reading across the front of the wall and reporting as TUIO.

It started as an internal Lazulite trivia game, questions about the company answered by tapping the wall. It did not stay that. The same application got reskinned and extended for other things we put on the kinetic wall, which turned out to be the useful part, since nobody wanted to rebuild the panel control every time the content changed.

StackUnity · PrimeTween · PoE lidar · TUIO

Work

Rotating tube array

Lazulite Technology Services · 2024

A ceiling of tubes that rotate, choreographed by a video.

Every tube is a pixel. The motion is authored as a video in Resolume, each pixel in it becomes an angle, and that goes out over Artnet to the tubes. Change the video and you change the choreography, so nobody has to keyframe the motors one at a time.

The hard part was smoothness. A video cuts between frames and a motor does not, so anything abrupt in the source reads as a jerk in the room. Most of the work went into the content, keeping the movement gradual enough that the tubes could actually follow it.

StackResolume · Artnet · Kinetic tubes

Work

Ülker dessert builder

Lazulite Technology Services · 2024

A kiosk where you build a dessert out of layers and it generates a photo of the thing you made.

You pick a dessert, then work through layers, ingredients and toppings. I built the interface and everything that moves in it. Every ingredient carries its own line of text and those get swapped into a prompt template, so the model is being told exactly what you picked. About thirty seconds later a photo of it comes back with your name on it.

It all ran on an RTX 4050 laptop, the Unity app and the image generation both on the same machine. Getting a generation down to thirty seconds on that took a food LoRA, generating at low resolution and upscaling afterwards. The one part that left the laptop was the download, a Cloud Run backend serving the page behind the QR code.

StackUnity · Stable Diffusion · LoRA · GCP Cloud Run

Work

Realtime generative AI mirror

Lazulite Technology Services · 2024

A camera watches whoever is standing in front of it and Stable Diffusion repaints them, live.

The colour feed comes off a Kinect, but nothing downstream cares which camera it is. Any camera works. Frames go through a Stable Diffusion pipeline that redraws whatever the person in front of it is doing, and NVIDIA frame upscaling cleans the output up before it reaches the wall.

The pipeline runs at 30fps and the generation does not, it lands closer to 15. So the in-betweens get smoothed rather than dropped, and you stop noticing that half the frames were never generated.

StackTouchDesigner · Kinect · Stable Diffusion · NVIDIA upscaling

Work

Spine surgery robot in VR

Acrophase, IIT Madras · 2023

A VR operating theatre for planning a spine surgery before doing it, or going back over one already done.

A research project rather than a product. The robot arm and the theatre are both in VR, so a surgeon can move the arm around the patient to work out an approach ahead of time, or replay a surgery afterwards and look at it from anywhere in the room.

StackUnity · Quest 2 · VR controllers

Work

GuideXR Twin

Spatial Guide Inc · 2023

An App Store app for turning a phone video of an object into a 3D twin.

The photogrammetry, the part that turns the video into a mesh, was a CV engineer's work rather than mine. Everything around it was mine: Flutter frontend, embedded Unity AR capture module, Go backend on AWS ECS. REST APIs built on Protocol Buffers so all three worked off one data model rather than three that drift apart.

Captures stayed encrypted on device with AES-256 and RSA until they reached the cloud. CI/CD in Azure Pipelines covering every build target. Least glamorous and most useful: tracking down the memory leaks that were crashing the app.

StackFlutter · Unity AR · Go · AWS ECS · Protocol Buffers

Work

VR football training

Acrophase, IIT Madras · 2022

You kick a real ball and it flies in VR at a digital goalkeeper.

Xsens suit on the body, headset on the head, and a real ball on the floor in front of you. You strike it for real. The kick is captured live and played out in a virtual stadium where a digital keeper tries to stop it.

The ball was the hard part. Tracking a physical ball in real time, working out its trajectory from that, and getting all of it to line up with the body capture fast enough that the shot in VR matches the one your foot just took.

StackUnity · Xsens · VR

Work

VR escape room

College project · 2021

A VR escape room, one puzzle room after another.

The part shown here is a colour matching puzzle. Three stacks on the wall tell you the order, and you pick cubes up off the table with your hands and build them to match. The rest of the room is the same idea in other shapes, a lever, a tunnel, a starfield.

StackUnity · Quest 2 · VR controllers

Index

Why this site is one screen

2026-08-16

Every portfolio I looked at while building this one had the same shape. A hero, a scroll, a section that fades in as you reach it, then a contact form nobody uses.

I kept cutting until the whole thing fit on a screen without scrolling. No images, no fonts I had to think about twice, one column of text pinned to the top left corner.

The projects still have their own pages. They are the same column in the same place, so opening one is a hard cut rather than a page transition. I tried the transitions. Fades, wipes, a typewriter. All of them made it feel slower than it is.