The power of “sleeping on it” worked! I must have replaced game objects in my player prefab in 2025-08-17 when I remade the VFX graph for the hands because the particles were no longer rendering on my scene’s KinectOverlay layer. Moving the game objects in my prefab back to that layer fixed the position of the particles in my game view.

As an added bonus, doing that somehow also fixed the broken single-hand attraction states.

So reader, in a matter of one night’s rest, I went from hopelessly planning to revert my code back to an earlier working state to comfortably back in the driver’s seat.

To keep the good times rolling, I made some additional improvements, moving my skeleton line rendering and custom player skeleton/particle color toggles into the runtime settings menu. I also had Claude revise its own creation because I knew that recreating GetCurrentSettings() 15+ times across different methods in my SceneController was bad practice. Claude agreed and made it so the runtime settings value only gets updated in OnRuntimeSettingsChanged when the user actually changes any of those settings in game.


I finally got rid of my scriptable objects and just moved all scene settings into the scene controller. I question whether this was the right decision. On one hand, my profiles for the scene settings are saved as JSON so the SOs weren’t needed as a store of value. On the other, I can’t edit JSON from the inspector, which was my entire reasoning for exposing my scene settings in the scene controller. Then I discovered NaughtyAttributes has the ability to expand SOs within the inspector using the [Expandable] attribute. I forget why I moved away from using Scriptable Objects for scene profile settings but I honestly think I should go back to them. That’s a task for another day. For now, I’ll stick with what I have.

Something I did that is worth keeping is making active profiles independent per-scene. Now, I no longer have to switch from my Default to Dummy profile every time I switch from my main scene to my testing scene.

Enough tinkering. I think it’s finally time to build, set up the projector and run some tests.


Glad I finally built the scene because I immediately found an issue—the mouse is hidden! Easy fix.


Welp, I guess I hadn’t tested the Kinect scene on my laptop for a while. Stupid lag.

Kinda has a Matrix feel, lolz

It reminded me of a todo task I forgot to create, which was to restrict the game’s framerate to 30 FPS in order to match the camera feed. However, after looking up different ways to do this, I’m gonna keep that task on the backlog and figure out a simpler way to reduce lag.


How to reduce lag:
Step 1: Reduce particle count.
Step 1: Change screen resolution to HD.

That fixed the lag. If I notice lag again, I’ll reduce particle count.


The dimensions of the wall I’m projecting on at the Frost museum is roughly 8’7” according to the iPhone’s Measure app. However, that measurement isn’t passing the eye test now that I’ve set up at home. I have a feeling it’s closer to 8’. (Or I could actually start using a tape measure!)

Also pictured above is the grey backdrop I purchased on Amazon for the previous event—it didn’t arrive in time and had remained in its Amazon packaging until I finally tore it open today. In my white-walled room, the projection definitely showed best on a white background. I tested a black backdrop and visibility in my scene was very limited, though the white energy particles were highly visible. The museum walls are all black, so we’ll see. I’ll now have the option to project on white, grey, or black.

I ended up placing the camera right next to the projector. Putting it between the backdrop and projector causes shadows and visual glitches, while placing it behind the projector makes it that much closer to the participants in a limited space where every inch counts. The only other idea I have is to place the camera on top of the projector. The way I see it, that wouldn’t make much of a difference from placing it to the side. Any way you slice it, this is still nicer than using a TV.


Tags: vfx unity ar kinect debugging performance projection