glTF and glB missing Moho features and how to replace?
Posted: Tue Oct 06, 2026 11:44 am
Back Story
I have a fun little animated header for the motion section of my updated website with my Moho characters.
https://trustthebeard.net/ click on motion
Currently, I am using videos with alpha channels in small webm and mp4/hvec videos. It's worked great for years.
I am FINE with the TEENY TINY size of the WebM, but dangit, Mac os/apple safari requires hvec/mp4 alpha channel videos and those files are 4 to 5 times, sometimes much more, the size of webm with zero quality difference. Very annoying. For example, I have a video file in .webm that is 34k; for the Mac version, the dang thing is freaking 900k! That's absurd but there is no way around it. The majority of mobile is of course, mac os/safari. Safari supports WebM fine... all except the alpha channel. They reject it. They insist you have to use hvec or something with alpha. The alpha channel is HUGE and doesn't compress well at all. That is where the major size difference comes from. Currently I have javascript generating a random playback value for each video so the replay every few seconds. I recently found out there is some much more possible. I can use JavaScript to jump around inside these videos and access different "segments" for playback. I could have a short looping "NPC" mode, or jumpt to spot when the characters are moved left and right. This sounded like fun, create one video with various spots I can jump to, loop or pause. This is FINE for webm with teen tiny files but for mac os version the size is questionable.
Replacing Video characters with glb
BOOM! glb and glTF! You can embed glb into html and control with js with way more options for multiple scenes etc etc. I can include multiple animations within each file and call the playback etc etc. The file size is not as small as webm BUT they don't get huge when there is more animation. The size is REASONBALE when compared to a tiny video file in the mac version that is 1.4mb. glb are reasonble between 400k to 800k depending on the characters and layers. Not an issue. I expected the videos to be much larger.
Options for replacing features not supported in glb/gltf
The issue is so many, almost all of my files for this have EVERY DANG FEATURE not supported for export to the glb format. I have, smart bones moving points, I have points bound to bones, I have masking. I was wondering what others have done to replace those features?
1. bone/point binding?
2. Masking?
3. smart bones alternatives?
I have been trying desperately to create a script to convert ALL BONE CONTROLLED POINT MOTION to keys on every frame of each vector layer. This would entirely elminate most of the export issues. Also keying every frame is in the export anyway and must be used so that's not an issue. The problem is I simply can't key point curvature yet. I have tried and can only key point translation for all frames for a vector. I am stuck trying to get the point curvature. The only way to make it work is to have the script duplicate the layer OUTSIDE THE BONE and then copy/paste the positions of the points based on the points movemnet matrix. However doing this with the curvature has failed for me.
Any help or ideas would be awesome.
I have a fun little animated header for the motion section of my updated website with my Moho characters.
https://trustthebeard.net/ click on motion
Currently, I am using videos with alpha channels in small webm and mp4/hvec videos. It's worked great for years.
I am FINE with the TEENY TINY size of the WebM, but dangit, Mac os/apple safari requires hvec/mp4 alpha channel videos and those files are 4 to 5 times, sometimes much more, the size of webm with zero quality difference. Very annoying. For example, I have a video file in .webm that is 34k; for the Mac version, the dang thing is freaking 900k! That's absurd but there is no way around it. The majority of mobile is of course, mac os/safari. Safari supports WebM fine... all except the alpha channel. They reject it. They insist you have to use hvec or something with alpha. The alpha channel is HUGE and doesn't compress well at all. That is where the major size difference comes from. Currently I have javascript generating a random playback value for each video so the replay every few seconds. I recently found out there is some much more possible. I can use JavaScript to jump around inside these videos and access different "segments" for playback. I could have a short looping "NPC" mode, or jumpt to spot when the characters are moved left and right. This sounded like fun, create one video with various spots I can jump to, loop or pause. This is FINE for webm with teen tiny files but for mac os version the size is questionable.
Replacing Video characters with glb
BOOM! glb and glTF! You can embed glb into html and control with js with way more options for multiple scenes etc etc. I can include multiple animations within each file and call the playback etc etc. The file size is not as small as webm BUT they don't get huge when there is more animation. The size is REASONBALE when compared to a tiny video file in the mac version that is 1.4mb. glb are reasonble between 400k to 800k depending on the characters and layers. Not an issue. I expected the videos to be much larger.
Options for replacing features not supported in glb/gltf
The issue is so many, almost all of my files for this have EVERY DANG FEATURE not supported for export to the glb format. I have, smart bones moving points, I have points bound to bones, I have masking. I was wondering what others have done to replace those features?
1. bone/point binding?
2. Masking?
3. smart bones alternatives?
I have been trying desperately to create a script to convert ALL BONE CONTROLLED POINT MOTION to keys on every frame of each vector layer. This would entirely elminate most of the export issues. Also keying every frame is in the export anyway and must be used so that's not an issue. The problem is I simply can't key point curvature yet. I have tried and can only key point translation for all frames for a vector. I am stuck trying to get the point curvature. The only way to make it work is to have the script duplicate the layer OUTSIDE THE BONE and then copy/paste the positions of the points based on the points movemnet matrix. However doing this with the curvature has failed for me.
Any help or ideas would be awesome.