Sketchfab Forum

Posed model flawed after upload (plus some other issues)


(Matthew Kerswill) #1


I encountered several issues when uploading my latest model to Sketchfab. The model is a bust of a boy and I have rigged and posed the face with 14 expressions. Here is a list of issues covered in this post:

  1. Posed model flawed after upload.
  2. Animations with only 1 frame (ie: poses) are not handled nicely.
  3. Customised animation order and initial animation are not saved correctly.

1. Posed model flawed after upload

I used the Rigify add-on to rig my model. I used the Pitchipoy metarig and modified it by deleting the legs and arms (except the clavicles). While I was working on all my poses, I saved them to a Pose Library.

Before uploading it to Sketchfab, I created an action for each of my final poses. In Pose Mode with all the rig layers visible, I added a single keyframe on frame 1 for the 'Whole Character'. I tested and confirmed that this method accurately records the poses - the poses appear correctly when I switch between the different actions.

After uploading to Sketchfab, all of the poses appear distorted to varying degrees.

In order to overcome this problem, I created a fairly horrible workaround. I made 15 copies of the model and applied the armature deform of each pose to each copy. I then created a new, very simple armature to shift the different copies around the scene so that you only see one at a time.

Here are some GIF images that compare the correct appearance of each pose (as seen in my workaround version) with the distorted appearance of each pose (as seen in my draft upload that uses the original rig):

With example 3, I actually think I have an idea about what might be going wrong. The rig has a constraint called "eyes_follow" and the "Smirk" pose is the only pose in which I turned this setting from 1 to 0. Perhaps Sketchfab doesn't interpret the rig's various constraints correctly.

I am new to 3D modelling. I only began learning to use Blender six months ago. I wouldn't be surprised if I have done something wrong so I'm hoping that someone will be able to give me some advice on how to make this work on Sketchfab without using my fairly horrible workaround.

2. Animations with only 1 frame (ie: poses) are not handled nicely.

When you view my model on Sketchfab, you will probably notice that the play-head zooms across the bottom of the screen constantly. This behaviour is both irritating and detracts from the visual quality of the model because the dithered transparency doesn't resolve. You can press the pause button to stop this from happening but this is clearly not ideal.

I tried all the different animation settings and "Cycle One" was the least problematic. "Cycle All" is clearly the wrong choice for me because it just flickers through all of the poses until the user presses pause. I thought that maybe "No Cycle" would work well but it also has some problems:

  1. When the user opens the model, it will quickly flicker through each of the poses until it reaches the end of the list. This means the pose that I choose for the starting pose is irrelevant - it will always zoom to the bottom of the list.
  2. The pose that it uses for "Static Pose" is not the Rest Position of the armature. It randomly uses one of the other poses. This issue also applies to the "Cycle All" mode. The "Cycle One" mode is the only mode that makes the Rest Position of the armature appear as the "Static Pose".

Perhaps Sketchfab should add a checkbox called "Start Paused" to the Animation tab of the 3D settings interface. This would simply set the initial state of the viewer to be paused.

Another idea I had would be to explicitly support the concept of poses separately from animations. This would remove the Play/Pause button from the viewer. I don't know if this would be feasible but maybe there could be an option called "Use Pose Library", which would look for an action that has a different pose on each frame (like the default "PoseLib" action in Blender, which gets created when you add a new Pose Library to an armature).

3. Customised animation order and default animation are not saved correctly

In the Animation tab of the 3D Settings interface, you can customise the order of the animations and choose the default animation to be played at startup. However, these settings are never remembered correctly for me.

The order that I choose is always corrupted slightly. My model has 14 animations in the list. When I re-order them, the last 4 animations in the list always end up being placed in positions 3 through 6. The first 2 animations always appear where I placed them. Animations 3 to 10 appear in positions 7 to 14.

Additionally, the default animation that I choose is never saved. It seems to always just use the first animation in the list. (At least, this is the case when I use "Cycle One" mode.)

I wanted to use the "Gasp" pose as the default pose because I thought that it would be more likely to grab peoples' attention when they are browsing. Even if I click the "Save View" button looking at the "Gasp" pose in the 3D Settings, it will only keep that thumbnail image for a minute or two. Then, it seems like Sketchfab makes a new thumbnail behind the scenes that conforms to whatever the default animation is.

Thank you for reading my long post. Thanks in advance for any advice you post. And thank you to Sketchfab for the Staff Pick! :smiley:

(Shaderbytes) #2

hey there

  1. sketchfab has some issues with accuracy in regards to armature rotations so small bits of inconsistency are unavoidable. This is most likely the cause, I cant say for sure but since such things are a known issue it is fruitless to bother investigating further since there is a good chance it turns out to be exactly this and then that is a huge time sink.

  2. what exactly do you expect to see when all your animations only have one frame? If you want a pose to remain for a given time then you need two sets of keyframes per action. One at the start and a duplicate set how ever far down the time line you want to hold the pose for that time.

  3. I have not encountered this , you will have to wait for a sketchfab dev to investigate this problem


(Arthur Jamain) #3

Hey there !

Your third point is indeed a bug that we've introduced with this week's release. Worst case scenario it will be fixed early next week, but we'll try to ship it before that.

Thanks for your report and sorry for the troubles in the meantime !

-- Arthur J

(Matthew Kerswill) #4

2.. what exactly do you expect to see when all your animations only have one frame? If you want a pose to remain for a given time then you need two set of keyframes per action. One at the start and a duplicate set how ever far down the time line you want to hold the pose for that time.

Well, I guess the observed behaviour is indeed the behaviour that I would expect to see. The observed behaviour doesn't surprise me at all. It's just that it could be better. It could be improved to better support the concept of 'a model with poses' (as opposed to 'a model with animations').

I considered adding two keyframes like you described but this still wouldn't be ideal because the dithered transparency still wouldn't resolve.

And, although a slow-moving play-head would probably be less irritating than a super-fast-moving play-head, it is still an unnecessary moving part - a redundant piece of user interface for a model that never actually animates.

(Shaderbytes) #5

Does bender have a means to understand cycling through one frame poses as a timed animation? or any other 3d application? No they dont so I dont think it is fair to say you expect better from sketchfab. If you need to animate something over time it needs multiple keyframes. Remember sketchfabs animation system is building upon industry standards.

Sketchfab did have an experimental means of doing stop animation scenes. This might serve you better with your single frame actions. Each pose would be an individual file (the model) im not sure how the timing between loading the next model is decided .. let me dig up the link for you .. edit : here it is

I fully agree and hate the animation progress bar on screen , I brought up the issue more than once and I dont know why the persist with this UI. It is very distracting! I honestly dont know how no one on their end can see that. I mentioned it is only needed when you want to perhaps pause and scrub a model animation and for this I would expect the UI progress bar to be hidden completely by default and their should be an icon to trigger its display when you want it on screen.

There is no AA on animated models, it is not due to the UI moving, it is because they dont support doing AA on scenes with animation. Even when interacting with a static scene using the mouse .. AA gets disabled for that time period. Lets hope they figure out a better way to handle AA which doesnt have these issue in the future.

(Matthew Kerswill) #6

You misinterpret my tone. :slight_smile: I don't "expect" better from Sketchfab. I'm just contributing a suggestion for their consideration.

I understand that implementing the concept of poses may not be sensible (given the industry standards) but I thought I'd suggest it anyway, just in case.

(As an aside, Blender has the concept of a Pose Library, which takes the form of an Action that stores different armature poses on each frame.)

In any case, I think that my suggestion of a simple "Start Paused" option would basically solve the issue of poses and it would be very straightforward to implement. Such a feature might even come in handy for people who upload models with genuine, moving animations. I think it's conceivable that some authors might prefer their models to not begin animating on start-up but rather only when the user hits the Play button.

(Shaderbytes) #7

did you look at the link I posted .. I edited the message to add it , I think you will win with that pipeline because it is meant for static models and you can control the animation time via a text file ..also I think you may win with AA not being disabled in this instance since nothing is actually animating in the scene :slight_smile:

For each pose you would have to apply the armature modifier and export the model. So the models are static. Just use Undo after each exp[ort to get the modifier back so you can select a different pose to apply and export. Sketchfab will then cycle through the models based on the time you stipulate in the text file.. all in the same scene viewer , no page reloading etc..

(Matthew Kerswill) #8

If I use that stop-motion method, won't I lose the animation drop-down list? I really want to have each expression appear as a named item in that drop-down list so that users can easily switch between each of the different poses as they desire. I don't like the idea of users having to scrub along the timeline to find the different poses.

I suppose the one advantage of that stop-motion method would be that only one copy of the model would be present in the scene at a time. I'd be able to get rid of the horrible workaround armature that shows and hides the 15 models by moving and scaling them. However, I think I like the drop-down list more than I dislike the horrible workaround armature.

(Mrchlblng) #9

Hey @WildCat-Actual, @shaderbytes, thanks for starting this discussion!

  1. I'm not sure about this point. I did not manage to find any other upload from your account recently to investigate those distortions. It could be issues with our compression or a precision issue that is known for blender models. It would be great if you could send us the model to to better understand what is going wrong.

  2. You're completely right, we do not correctly handle single keyframe animation. And it's really annoying.
    Stop motion animation is not a proper solution to this issue as the data is animated which means no AA and, as you mention, it breaks the listing. A way to bypass would be to show all expressions at once (like and add annotation. But this is not a great solution so a fix is on its way to finally have static poses on sketchfab.

  3. regarding the animation order, there was a bug for models having more than 10 animations (surprisingly but this is not a frequent use case). The fix should be live soon!

Overall, our blender pipeline is not always great at the moment. We're aware of this and will soon work on improving this!

(Shaderbytes) #10

@mrchlblng What is the maximum bone limit per vertex? This could also be an area where animation in blender vs sketchfab could possibly be slightly different. Blender has no limit ( that I know of) to the amount of bones influencing a vertex and does not enforce normalizing.

I know from experience Using Unity , which is a real time renderer as well , on default quality they permit 2 bones per vertex, on the higher quality settings they permit 4. I have definitely seen small bit of inconsistency before due to this kind of stripping, I'm guessing since you guys are real time you must have a limit as well?

(Mrchlblng) #11

Very good point!
We enforce a maximum of 4 bones per vertex. It's quite enforced everywhere in our pipe so won't be easy to test if this is the culprit on our side.

(Matthew Kerswill) #12

The version of the model that uses the original Rigify rig is currently on my account as a draft. As a staff member, can you access people's drafts? Here's a link to the model: LINK. If you can't view it, I could possibly publish it but I'm slightly hesitant about having a buggy model appear publicly.

Sure. Email sent. Feel free to let me know if I've made any hideous violations of best practices. :smiley:

Thanks for the link to that model. I remember seeing it before but I never clicked the Like button. I've rectified that now. :grin:

I considered presenting my model like that but decided against it because I was concerned about performance and I also felt like having a single face that changed expression would be a more 'impressive' presentation.

(Mrchlblng) #13

Thanks for the sample @WildCat-Actual.
The improvment for animation with a single distinct keyframe is live. See for example:

(Matthew Kerswill) #14

How do I take advantage of it? I didn't see any new settings in the 3D Settings page. Must I re-upload my model?

(Mrchlblng) #15

You do not have to do anything, excet uploading new models. During the processing, we will now keep a single keyframe on curves that previously had 2 identical keyframes.

I would however advice you to upload a new model as opposed to reupload on your Staff Pick'ed model. I did not (yet) check wether the materials would be correctly handled (as the scene is quite different).

(Shaderbytes) #16

Wow this is fantastic ! you should do a blog post about it

(Matthew Kerswill) #17

Sorry for taking such a long time to reply with updated feedback. I have uploaded a copy of my model as a draft to observe the new behaviour. Here are my latest comments with regards to each of the issues that I mentioned in my original post:

Re: Issue 1. Posed model flawed after upload:

There's no change here. The armature deformations are still distorted to varying degrees after upload. (Just to be clear, I'm aware that nobody said anything about any fixes for this.)

Re: Issue 2. Animations with only 1 frame (ie: poses) are not handled nicely:

The behaviour of the Sketchfab viewer appears to have changed twice in the last month or so.

In mid-December, when @mrchlblng said that the improvement for animation with a single distinct keyframe was live, I uploaded a draft test model to check it out. I observed that the behaviour had been changed so that the play-head and timeline no longer appeared.

This was a good but there was still the issue of the dithered transparency, which did not resolve unless the user pressed the Stop button. The Sketchfab player still seemed to start in a "Playing" state even though you couldn't see the play-head anymore. I noticed that it actually consumed CPU time unnecessarily.

Today, I had another look and I noticed that the behaviour has changed again. The play-head and timeline have returned and now that single distinct keyframe is played for 2.5 seconds. Is this the intended behaviour?

Re: Issue 3. Customised animation order and default animation are not saved correctly:

This issue is resolved.

That's it for my updated feedback. However, I also want to ask about this quote:

Each time I upload a new draft of my 'Expressive Face' model, it appears with blank, transparent materials. I then go through the process of uploading the textures, configuring the correct settings for the materials, and choosing the various other options such as background, colour correction, FOV, and starting camera angle. It takes me about 10 minutes to do this each time (and I've done it many times for each of my test draft uploads).

If I do a re-upload of my Staff Picked model, will the new model immediately be live? Will it appear publicly with blank, transparent materials until I go and correct all the settings? If the answer is yes, then is this the reason why you advise against doing a re-upload?

I'm actually not too worried about having the model appear publicly with messed up materials for 10 minutes while I correct all the settings. However, if there is some other reason not to re-upload, I would like to be made aware of that.

(Lapin) #18

At low speed okay.

(Stephomi) #19

For now yes, it's necessary to have this system to have consistency with the cycle modes.
It's possible we'll change that in the future though.

Also for this particular model, you should probably switch to alpha blending (unless I'm missing something).
With the current state of our dithering, it should mostly be used with unsortable complex intricate geometries (typically layered fur), or if you want transparency to cast shadows (which blending does not allow).

(Mrchlblng) #20

@WildCat-Actual we logged the issue but did not have time to dig the deformations yet. We can only say that it's not due to our compression (which sometimes gives artifacts) but even without compression the data is deformed.

We'll also check why your materials are not correctly processed.

As for reupload, my comment was unclear and kind of wrong: as long as you do not rename the materials, they should correctly be re-applied.
The main thing that (as I foresee it) could be messed up is the camera position as we consider that the scene is mostly the same (see the help center for details) but this really depends on the model you reupload.