Skip to content

SoulFlame VRM Exporter (VRChat avatar to VRM) 0.5.0

Choose a tag to compare

@CucumberWorks CucumberWorks released this 12 Oct 06:17
· 12 commits to main since this release
Immutable release. Only release title and notes can be modified.

SoulFlame VRM Exporter (VRChat avatar to VRM) 0.5.0.

Install: open https://cucumberworks.github.io/vpm/ and choose Add to VCC, or add https://cucumberworks.github.io/vpm/index.json in ALCOM.

Changes since 0.4.4:

  • The preview now plays motion. A Motion row above the preview chooses Rest, Idle, Wave, Bow or Stretch; a motion loops, and the hair, skirts, ears and tails swing as the exported spring bones will in the SoulFlame app, with the exported node constraints following. One button pauses and plays it on. Rest is the still preview of earlier versions and the default, and nothing runs at Rest. The preview follows the SoulFlame app's own runtime (three-vrm 3.5.5): the motions, constraints and springs are checked against what three-vrm computes, and the poses were compared by eye beside the browser viewer (Demo~/vrm-check.html) on the Shinano test avatar.
  • While the Expressions tab is shown, the preview shows the expression selected there, at full weight, over a playing motion. A change to its blend shapes shows once the preview has rebuilt the model.
  • Playback never changes the export: it poses a private copy of the model, and an export after playback is byte-identical to one without it. It pauses while a capture or an export runs and while the window is hidden behind another tab, and draws at most 30 frames a second, fewer on a busy machine, so the editor keeps most of the time.
  • Expressions: a Use face menu, below the Expression select, lists the faces the avatar's FX and Gesture controllers play and copies the one you pick into the selected expression, in one step you can undo. Faces made with FaceEmo come first, then those made with ComboGestureExpressions (CGE), then the avatar's own, each named with where it comes from, such as Smile (FaceEmo), Fist x2 (CGE) or F_smile_1 (Left Hand). CGE renames the clips it plays, so its faces are named for the gestures that play them, as CGE's own editor names them. The face is copied exactly: the blend shapes it raises and the ones it lowers, so the exported expression looks as the face does in VRChat. Binary and the expression's overrides stay as you set them. Blend shapes are all a face gives: what else its clip does (showing or hiding objects, materials) is not copied.
  • The advice on physics and constraints now says to check a motion in the preview, where it used to say to check in the SoulFlame app after export.
  • Exports do not change unless you use a face: all 21 test exports are byte-identical to 0.4.4's.

Known limits:

  • Playback was timed only on a busy test Mac, where a frame of a large avatar took 18 to 82 ms (4 to 12 frames a second); on a quieter run of the same machine the same drawing took 6 to 10 ms. The avatar's own idle animations (such as a tail swaying on its own) are not played, and the preview's motions are the four samples; your own .vrma files and eyes following the camera are not supported.
  • Use face was tried with FaceEmo 1.7.0 and ComboGestureExpressions 3.3.1, each set up from a script on one test avatar, not through their own windows by hand. Other versions, FaceEmo faces on analog triggers, and CGE puppets and massive blends were not tried; a CGE face whose states name no hand gesture keeps the name CGE gave its clip.
  • The Use face and motion words in Japanese, Chinese and Korean have not been reviewed by a native speaker yet.
  • A MatCap 2nd added to the emission keeps its average color only: a pearl looks evenly pearl-white, without the highlights that move with the view, and it stays as bright in a dark scene. lilToon's Reflection (a metal's cubemap shine) is still not exported to MToon.
  • A blend shape is kept by its name only when the name is VRChat's (starting with vrc.), one of the 52 ARKit names, or a standard MMD facial morph, or when the avatar descriptor uses it. An app that drives other shapes by their own names, such as Unified Expressions face tracking, finds them only with Keep all blend shapes on.
  • A point-filtered texture (Filter Mode: Point, such as a pixel pattern) keeps its size whatever the Maximum texture size, so it stays sharp.
  • A texture is halved until it fits, so one of 3000 pixels is written at 1500, not 2048.
  • Projects with VRM Converter for VRChat: their VRM 0.x pins the UniGLTF of its own release (0.128.1 in VRM Converter 41.5, 0.125.0 in 41.2 and 41.3), and this version, like 0.2.0 to 0.4.3, declares UniGLTF 0.131 as a VPM dependency. In such a project, use exporter 0.1.0, not this version. VRM Converter 41.4, and 41.1 or earlier, pin a UniGLTF that no exporter version supports; update VRM Converter to 41.5 first. ALCOM or VCC may report "com.vrmc.gltf conflicts with com.vrmc.univrm" when you add or update the exporter, add VRM-1.0 or upgrade all packages at once (Upgrade All); if it does, answer No (or Cancel). Update the VRChat SDK there on its own, not with Upgrade All. With vrc-get 1.9.2, the engine ALCOM is built on, upgrading all packages in a project with exporter 0.1.0 and VRM Converter also picked exporter 0.2.0, the latest version when it was run, with UniGLTF and VRM-1.0 0.131.2. vrc-get asked before every such change and changed nothing on No. When you add VRM Converter to a project that already has this version, ALCOM or VCC may report that com.vrmc.gltf conflicts with com.soulflame.vrm-exporter and com.vrmc.vrm; answer No (or Cancel) there too.
  • Installing through VCC, or through the ALCOM window, has not been tried. vrc-get 1.9.2 added exporter 0.2.0, which declares the same UniVRM as this version, with UniGLTF and VRM-1.0 0.131.2 in a new project, with no conflict; that project was not opened in Unity.
  • In a project that imported a UniVRM unitypackage before 0.131, UniVRM sits under Assets/. Once this version adds UniVRM, the two copies of UniGLTF can stop the whole project compiling (inferred from vrc-get's rules and Unity's duplicate assemblies, not tried). Before updating, remove UniVRM from Assets/: the UniGLTF, VRM10, VRM, VRMShaders and MeshUtility folders.
  • In a project with VRM 0.x but no VRM 1.0, adding this version through VCC or ALCOM can add VRM 1.0 with it (vrc-get 1.9.2 planned that when 0.2.0 was added to a VRM Converter project, and did it when an upgrade to 0.2.0 was confirmed there; VCC, the ALCOM window and the re-import in Unity were not tried). Adding VRM 1.0 makes Unity import every .vrm file under Assets again, and VRM 0.x rebuilds the prefabs it made from them, so back up any changes you made to those prefabs first.
  • Poiyomi Toon 10.0 is tested on its real shaders but has not been tried on a full avatar yet. Materials on Poiyomi Toon 9.4, 10.1 or later are blocked, and so are the Lil Fur, Two Pass, Grab Pass, World, Outline Early and Pro variants.
  • With NDMF installed, capture needs NDMF 1.7.3 or a later 1.x release, except 1.8.0. The tests run on NDMF 1.7.3, and a real avatar has been exported with 1.8.1 and with 1.14.8. Other releases in that range have not been tried.
  • The window as it ships, Korean included, was checked only with Unity batch tests and headless screenshots, on macOS. It has not been tried on Windows, after installing through VCC or the ALCOM window, or by hand in the editor.
  • The window sets no font of its own, so Japanese, Chinese and Korean text is drawn in the system's fonts; Korean has been tried only on macOS. On macOS, 请, 输 and 啟 draw heavier than the characters around them, and Traditional Chinese punctuation (,、。) sits at the bottom left of its cell, as in Japanese, not centred.
  • The preview renders at the pane's size in points, as in earlier versions, so on a 2x display, such as a Retina Mac, the model looks soft beside the window's sharp text.
  • Results stay in English in every language: each problem's message and step as the capture or the export gives it, in the window and in the report file, and the UniVRM step under UniVRM's package line. Lines the window words itself, such as the Capture tab's package lines and warnings, follow the language. The Tools menu item stays English too.
  • Computed normals were checked on one avatar, Chiffon with the normals of its Body mesh removed, not on the avatar of the report. Which tool builds a mesh without normals is not known yet.
  • The Avatar Pose System warning was checked with Avatar Pose System 5.0.1 on NDMF 1.7.3, Modular Avatar 1.12.2 and VRChat SDK 3.8.0, below the Modular Avatar 1.17.1 that 5.0.1 asks for. Earlier releases of the tool, and its AlterBody, ExtraBone, PropPlacer and MotionBlend extensions, were not tried.