The Fragmentation Problem
As Transfr's library grew, the same tools — a drill, a wrench, a spray can — were rebuilt for each new training module. Technical artists and designers rebuilt the asset and its interaction from scratch every time, so the same tool could look, sound and behave differently from one module to the next. I proposed an XR design system: a modular layer for interaction design built on top of the Transfr SDK.
Aligning SDK Tools with Interaction Design
The proposal led to my direct involvement in the SDK's tools development. The design system only works if the tooling supports it, so I worked with SDK engineers to build its rules into the SDK: standard hand interactions, UI scaling and spatial ergonomics. Building an interaction became a matter of assembling standard parts instead of coding a one-off.
Anatomy of a Tool Template
The templates are built in Node Flow, Transfr's visual, node-based authoring tool for VR simulations. I helped build reusable templates for drills, wrenches, spray cans, scissors, wire cutters and more. Each one is a grabbable object that arrives with four layers already configured:
- Interaction logic: the tool's behavior is wired in Node Flow, so a designer connects it to a step instead of scripting it.
- Spatial audio: sound effects play from the tool's position in the scene.
- Haptics: a feedback profile for the controller in the learner's hand.
- Affordances: the visual cues that tell a learner what the tool does and how to hold it.
Persistent Tools, Decoupled Instruction
Tools had to be persistent throughout a simulation. A learner can pick a tool up from the table at any time, but it can only complete an instructional step, with the objects it interacts with, during a certain part of the sim. So the instructional feedback had to be decoupled from the tool's mechanics. A drill always behaves like a drill; what the coach says about it can change. That let us give different instructions in training and in hands-on practice, and support different teaching and learning styles with the same tool.
These were the design decision points for every template:
- Persistence: how the tool's mechanics stay consistent across the whole sim, whether or not the current step needs it.
- UX in VR: how the tool is grabbed, held and operated, and how it signals what it can do.
- Instructional modularity: keeping step logic and feedback separate from the tool, so the same template serves training, practice and assessment.
- Inputs and outputs: what a template should take in and report back so sim builders can wire it into any step without opening it up.
Before and After
- Before: each simulation rebuilt its tools and their interactions from scratch, and the same tool could behave differently between simulations.
- After: one template, with logic, audio, haptics and affordances included, is reused across a whole training module, which is often 10–12 simulations.
- Result: production efficiency improved by 40%, measured from time tracked on projects per sprint.
Iterating on the Attach System
After applying the templates across multiple sims, we iterated on the SDK's attach system in general. The new attach system supports chaining interaction types (for example slide, twist and continuous grab), counting interactions, and nesting interactive objects inside each other. Here is a video demo of the new attach system, by Travis Ruppe-Greene.
