I'm looking to port my VRChat avatar, that I use in many videos, over to Resonite. The "why" isn't important for now other than I want to. Resonite seems like a really cool VR platform and I'm a tinkerer at heart. (I also have a professional background as a software engineer, if that helps explain anything.)
Below is my list of things to figure out with Resonite, and I intend on updating this as I go with my findings, as it may help others in the future. In a way, it's my to-do list.
Overall Goals
To port my modified Vulper and its filming set-up over to Resonite with the same highly-animated expressiveness that is shown in its VRChat version in my videos. Face-tracking, Physbone/Dynamic bones, various animator tricks, all of it.
✅ - solved
☑️ - close to solving
❓ - points to research
The Basics
✅ Licensing: I think things are okay here: the Vulper, the Freakhound tail, and the Bandana asset I use permit use on other platforms, just not sharing of source files. All good there.
✅ Models: My Vulper model is heavily modified and I have some to-dos there like actually combining the Freakhound tail armature and mesh together. Easy work, not essential to porting I think.
✅ Flying: Extremely useful for filming, and there's literally nothing I need to do here. In VRChat I use GoGo Loco which usually works OK, but Resonite does this out of the box.
✅ Dynamic bones: From what I tried, very easy to set up.
☑️ Full-body tracking (FBT): Resonite maps this out of the box. There's some set-up quirks to figure out; more below. I'm told things are changing in the coming months.
☑️ Basic face-tracking: Resonite does this natively. But there's more to it below.
Puzzles
These are things I need to figure out. (This isn't a plea for help, but if you do have quick answers to these, by all means leave a comment!)
Avatar versioning
With my VRChat project, I've carefully version-controlled my avatar and its edits in git, even separating the base models from my own layered changes. This isn't essential to me using Resonite but it would be nice to take my own snapshots to restore if I need to.
FBT quirks
VRChat makes assumptions about your humanoid armature; i.e. your hips are your hips, and when you FBT calibrate it just maps the closest tracker at its current transform against that bone of your avatar. Resonite appears to have an added step where you must map your hands & face to an avatar first, then FBT-setup that avatar by mapping the hips and feet to your avatar armature.
❓ I've not entirely figured out why mapping the hips feels so tricky. It seems like there should be a way to snap this right onto the hip bone, but I need to tinker more. I also hear that significant FBT changes are coming soon, so this might not be worth worrying about yet.
Better face-tracking
Resonite does face-tracking out of the box (if you check the option on avatar set-up). This is super cool! However it's a very static mapping of facial expressions to shape keys. The VRChat community through templates like Adjerry's face tracking templates have added additional smoothing and driven expressions (e.g. eye dilation when eyebrows raised for Vulper) that makes avatars so much more expressive.
❓ I need to look at what portions of the Vulper are animated as a result of FT-driven properties (there are at least a few) and see how easy/difficult it is to bring those to Resonite.
Hypothesis: This should be easily possible to implement, but there's likely a lot of properties to try to bring over. Will focus on the most important ones if possible.
Avatar tail wag on smile
Hypothesis: This should be easy. I need to dig into how ProtoFlux actually works but am excited to mess around. Functionally this is a "if face-tracking keys for smiling are active, start oscillating the rotation of the root tail bone". This is animated in VRChat using Unity animations & controllers, here it could just be Flux nodes & a sine wave. "Just."
Floor collider for tail & toe beans
Hypothises: This feels easy. It's a collider. This is a core game-dev thing, yeah?
Ear flop on head tilt
When I tilt my head left or right, the ears flop over to match. This is on top of existing dynamic bone wiggles. In VRChat this is done with contact receivers positioned to the left and right of the head, and a blend tree in the animation controller.
Hypothesis: This is probably easy. I think I can probably directly read the angle of the head bone and act accordingly to shift the ear bones to "flop". (I'm guessing again at ProtoFlux's capabilities, here, but I've not had reasons to doubt this yet.)
Adjustable material properties
In some environments, I've found it useful to animate and slider-control certain properties of Poiyomi in VRChat to better match the environment. However, with Resonite not supporting custom shaders, this might be moot since shaders should clash less often. I hope. Low priority, but might tinker.
Filming camera
In VRChat, I use a camera prefab that provides better depth-of-field and color grading than the stock camera. However, Resonite's camera seems pretty capable out of the box. I might not need to do much at all here.
❓ Figure out depth-of-field (i.e. focus blur). I consider this to be pretty essential to my filming style. I didn't outright see settings for this on the default camera tools, but I admittedly didn't look very closely yet.
Filming lights
Hypothesis: This is probably easy, because Resonite has spawnable objects from your inventory. Find/build/spawn a light. I also suspect that Resonite, by virtue of not having custom shaders, has a lot less world lighting quirks to work around, but that's just a hunch.
Probably a few other things! I'll update this document as I go with what I find.