~ / cmdr2

projects: freebird, easy diffusion

hacks: carbon editor, torchruntime, findstarlink

  • #freebird

Freebird v2.6.0 released. Changes since the last blog post (v2.2.2): Adds the ability to add and edit Text while inside VR. This is useful for labeling and making notes inside VR, without having to sketch notes by hand. Adds support for Vulkan and Blender 5. Shows the scene scale in the controller’s panel (below the main menu). This will let you know the zoom level of the scene, for e.g. 1:1 or 1:10 or 15:1, so that you can plan accordingly when working with real-world units.

  • #freebird
  • #worklog

Submitted a code fix in Blender to fix the order of calling modal operators for XR Actions - https://projects.blender.org/blender/blender/pulls/152575

  • #freebird
  • #worklog

Combining the worklogs for a few days. Worked on testing Freebird and Puppetry with the new XR API changes coming in Blender 5.1 (related to making navigation_scale read-only). Continuing to discuss and give feedback to Blender devs on their #xr chat channel. Investigated why grease pencil strokes render incorrectly in VR, by digging into Blender’s source for that. Haven’t found the reason/fix yet. It seems related to draw_grease_pencil_lib.glsl, but winmat and viewport_res don’t change when we change xr_session_state.navigation_scale or xr_session_settings.base_scale. Added the ability to set the location of the camera preview in Puppetry. Submitted a fix for the regression introduced in Blender 5.0.1 (causes Blender to crash when Freebird or Puppetry are started) - https://projects.blender.org/blender/blender/pulls/152237

  • #worklog
  • #freebird

Collecting the worklog over the past 2 weeks. Added the ability to add and edit Text objects in Freebird while inside VR. This is useful for adding notes and labels while working in VR - https://x.com/freebirdxr/status/2004091164946059451 Added a “Camera Preview” feature in Puppetry, to allow the user to see the live view from the scene Camera, while recording. This is helpful in avoiding surprises after recording, for e.g. realizing that the movements weren’t captured correctly by the scene Camera.

  • #freebird
  • #dom

The next major version of Freebird (i.e. v3) will use a new internal architecture that’s much easier to program with. In some ways, it’s an evolution of the architecture used in Freebird v2, but taken to its logical conclusion. The current version of Freebird (v2) uses a DOM-like model, and borrows a lot of programming patterns from browser-based programming. An underlying runtime abstracts away input events (like trigger_press, drag, enter, leave etc). It follows an event dispatch model (using add_event_listener and dispatch_event). Visual elements like menus, transform handles etc are DOM Nodes, which respond to events like drag and click. It also uses CSS-like styling to provide an easy way to style groups of related elements (like menu buttons).

  • #freebird
  • #vr
  • #api

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

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

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

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

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).