~ / cmdr2

projects: freebird, easy diffusion

hacks: carbon editor, torchruntime, findstarlink

  • #freebird
  • #vr
  • #api

// Cross-posted from Freebird’s blog. Freebird v2.2.2 released. It now exposes the states/values of the VR buttons (as custom properties) in FB-Controller-Right and FB-Controller-Left (see: XR Tracking Objects). These values will be updated every frame, when VR is running. You can use these properties to drive shapekeys, or use them in other scripts: To drive a shapekey, please right-click a property, e.g. ’trigger’, and click Copy as New Driver. Then right-click on your shapekey value, and select Paste Driver. To use in a script, use the custom property directly. E.g. bpy.data.objects["FB-Controller-Right"]["trigger"]

  • #freebird

// Cross-posted from Freebird’s blog. Freebird v2.2.0 released - Freebird now exposes the VR headset and controller positions via three empty objects in the scene: FB-Headset, FB-Controller-Right, and FB-Controller-Left. These three empties live-track the position of the headset and the VR controllers. For e.g. you can attach objects to these empties to animate objects or bones.

  • #freebird
  • #puppetry

// Cross-posted from Freebird’s blog. Puppetry v1.2.19 released! It allows you to move the overall armature rig via an external animation, while still controlling the head and hands with the VR controllers. Previously, the head and hands would stay at a fixed place in the world, and not move along with the rig. For e.g. this is useful if you want to move the character down a corridor (using a script or animation timeline), while using Puppetry’s motion capture to animate the head and hands.

  • #freebird

// Cross-posted from Freebird’s blog. Updates from June 2025 Note: Freebird is free for students! If you’re a student at a school or college, please feel free to email or message me for a free copy! June 2025 marked a restart of the Freebird project, after a few months of maintenance-only fixes. Reliability My focus in June was on improving Freebird’s reliability. A number of long-standing critical bugs have been fixed, broken features have been repaired, and missing documentation has been updated. Basically, anything that crashed Freebird (or was urgently broken) was considered as an immediate priority.

  • #easydiffusion
  • #sdkit
  • #freebird
  • #worklog

// Cross-posted from Easy Diffusion’s blog. Continued to test and fix issues in sdkit, after the change to support DirectML. The change is fairly intrusive, since it removes direct references to torch.cuda with a layer of abstraction. Fixed a few regressions, and it now passes all the regression tests for CPU and CUDA support (i.e. existing users). Will test for DirectML next, although it will fail (with out-of-memory) for anything but the simplest tests (since DirectML is quirky with memory allocation).

  • #vr
  • #ui
  • #freebird

// Cross-posted from Freebird’s blog. Really need to figure out a way to render standard HTML elements (styled with CSS and modified with JS) in a 3D scene. Reinventing excellent libraries like PrimeVue again inside 3D (for rendering in VR) is just wasteful. There have been attempts, e.g. A-Frame, but we really need to view the webpage in 3D. Just regular HTML elements. The regular DOM renderer. The pieces feel like they’re there conceptually, but the implementation gap is probably big enough (that it hasn’t happened yet).

  • #freebird
  • #vr
  • #ar
  • #blender

// Cross-posted from Freebird’s blog. Freebird is finally out on sale - https://freebirdxr.com/buy It’s still called an Early Access version, since it needs more work to feel like a cohesive product. It’s already got quite a lot of features, and it’s definitely useful. But I think it’s still missing a few key features, and needs an overall “fine-tuning” of the user experience and interface. So yeah, lots more to do. But it feels good to get something out on sale after nearly 4 years of development. Freebird has already spent 2 years in free public beta, so quite a number of people have already used it.

  • #freebird

// Cross-posted from Freebird’s blog. tl;dr - Today I shipped the ability to see the desktop screen in VR (while using Freebird). And fixed a few user-reported bugs in Freebird. Performance The performance is still a bit laggy. The actual screencapture code now runs in a separate process, and copies data over a SharedMemory buffer (which works pretty well for sharing data between two separate processes). That helps avoid Python’s GIL while performing numpy operations on large arrays.

  • #freebird

// Cross-posted from Freebird’s blog. Built an initial prototype of showing the desktop window screencapture inside VR (while in Freebird), using the mss library. Freebird will have to install it using subprocess.run([sys.executable, '-m', 'pip', 'install', 'mss']). It works, but is currently a bit laggy. The capture and processing happens on a thread, and a timer modal calls the actual GPU texture assignment. The GPU texture assignment takes about 2 ms, but the XR view is still juddering (way more than it would with an extra 2ms of latency). Still need to investigate and smoothen the performance.

  • #ar
  • #vr
  • #xr
  • #freebird
  • #webxr
  • #featured

// Cross-posted from Freebird’s blog. Wrote a WebXR drawing tool with passthrough (i.e. AR overlay), in order to draw lines over real-world surfaces. It’s pretty handy! Uploaded it as Freebird Lite. It proved itself useful yesterday, since I could sketch lines around the house to plan different fittings and show the ideas to others (using the headset). Since it’s just a website in a browser, it doesn’t require any installation. And it works on all the compatible 6 DoF headsets.