ParticleWrench
A 3D ray tracing simulator and beam propagation visualiser. Models reflection, transmission, and mode conversion at material boundaries using a physics model.
01 — Origin
I've built 2D versions of this kind of tool before, always as a smaller component of a larger commercial product. They worked, but they bothered me, the physics & ray tracing were intermingled with the visualisation. You couldn't simulate without drawing, couldn't swap the renderer without unpicking the physics. Often due to the tool starting with a tight scope, performing well, and having it's function expanded to something it was never architected to be. Rebuilding from scratch was understandably a priority for the business. ParticleWrench was the excuse, the name a bad joke on a industry standard solution. A chance to revisit a class of problem I knew well, apply everything I'd learned from watching practitioners actually use these tools in the PAUT world, and build the clean architectural divide I'd always wanted. I'd also never built a 3D viewport from scratch. That part was pure curiosity.
02 — Intent & ethos
Placeholder — intent paragraph to be written.
In scope
Out of scope
03 — Delivery
PHASE 01
Geometric ray engine
COMPLETEPlaceholder — Phase 1 summary to be written.
PHASE 02
Physics enrichment
IN PROGRESSPlaceholder — Phase 2 summary to be written.
PHASE 03
Mesh & analysis
PLANNEDPlaceholder — Phase 3 summary to be written.
04 — Demo
Demo video — coming on Phase 2 completion
05 — Architecture
Core constraint
Placeholder — architecture paragraph to be written.
Stack
| Physics engine | Pure C# — no dependencies |
| Rendering | Veldrid — Vulkan backend, strongly typed |
| UI shell | Avalonia — thin host, no logic |
| Geometry (Ph. 1–2) | Analytic intersection — planes, spheres, cylinders |
| Geometry (Ph. 3) | BVH acceleration over triangle meshes |
06 — Physics model
What the engine models
Placeholder — physics paragraph to be written.
Deliberate limitations
Placeholder — limitations paragraph to be written.