← Back

TwinWorks

My experience at TwinWorks spanned about a year and half, they're an AI-powered technical documentation platform meant for industrial use. I primarily worked on their 3D Engine and frontend, developing and integrating a lot of features over my time there.

Below is a selection of some of the work I'm proud of. I've split them up into appropriate categories that reflect the nature of the work.

Rendering Features

Rotation/Axis of revolution feature

I added the ability to add a custom pivot point and axis of revolution for rotations. This would allow the user to create accurate hinges and points to rotate on if their origins weren't already defined in the model (they rarely are).

Material System

I added the ability to author custom materials that could be used across the users' account/organization.

Visibility Management

I made a custom visibility management system outside of three.js's rules to be more inline with the kind of visibility logic we needed at the time. This allowed us to add custom visibility rules and modes (like solo-ing a group of meshes) when we needed in a modular way.

Cross Sectioning and Rendering modes

I created the ability to section models CAD-style in order to view them from different contexts, and added a "technical drawing mode" that is more in line with what CAD tools usually look like.

Cross section before and afterCross section before and after
⇆

Context Menus

I added a context menu implementing features like select-through, hiding specific meshes, soloing, etc.

AI Tooling

I created a lot of tools for our AI suite. This allowed agents to be able to control a lot of aspects in our engine such as selecting parts, changing any of their properties (like the ones mentioned above), and gave it tools to be able to have better 3D understanding. This resulted in a pretty cool agentic user experience.

Ports/Optimization

Over my time at TwinWorks, I managed a lot of porting of the 3D infrastructure. I ported our engine to react-three-fiber, and also ported it from WebGL to WebGPU. This involved a lot of shader porting, managing TSL, and making use a lot of the optimizations that come with newer versions of three.js. I also worked on fine tuning our mesh optimization pipelines and STEP importing.

When I joined TwinWorks, the engine would run 2000-3000 draw call meshes at 1-2M triangles at around 30-40FPS on my machine, and by the time I left, we were running CAD meshes well above 100k parts/meshes at 180FPS on that same machine.

TwinWorks is one of my proudest projects.

I left TwinWorks in November 2026 because I wanted to focus on studying graphics full-time on my own and apply to more graphics-oriented roles working closer to the metal.