Performance issue 3D

Hello community!

I can’t find the best flow to prepare 3D models to have consistent fps. Sometimes I get worse resources with less drawcalls, triangles and GFX memory. I can’t find the pattern.

I saw that compressing textures gives better performance, but I can’t do it with embedded materials in fbx? Strange thing is that no matter what resolution and compression we put in Maya3D, we get the same fps. Is there some straight forward handbook what we need to do to get the best performance?

If not, I can share screenshots with relevant info regarding our project?

Thank you in advance!

1 Like

I can ask engineering to help out. What version of Creator are you using?

Thank you very much! I’m using latest 3.4.2 version.

thanks a lot for your feedback. Do you mind to make couple repo scenes for us to investigate?

Currently we have different approaches to improve model performance, here are the suggestions about when to use them

  1. GPU Baked Animation: for MeshRenderer with skeleton animation, all animation simulation is using GPU, you have to activate useBakedAnimation in SkeletonAnimation component
  2. Instancing batching: for many models sharing the same geometry and material, you can activate USE_INSTANCING in material setup, then their draw calls will be automatically batched.
  3. Static VB merging: for static models in the scene, even they don’t share the same geometry but if they share the same material, you can still use static batching
1 Like

Thank you for the responses.

@AndyTian the project is really big, but I’m sending you the Repo:

In “scenes” folder you can find my examples.

@pandamicro
I tried the solutions, we are using baked animation, that is on. But I even get worst performance if I use USE_INSTANCING in material or the Batching in the material. I tried to call static batching from the code, but no difference, this may be due we already merged the meshes we could in the 3D software. So this is very useful to know for future, as we could improve our workflow drastically.

USE_INSTANCING will only improve you performance if there are instances batched, e.g. more objects with same meshes and materials (different position, uniform, animation is ok). If you only have one or a very limited amount object using instancing, then there could even be performance drop, because instanced buffer is slower than uniform and there will be more buffer copy.
Static batching is only suggested for static objects.

Don’t use the above two strategy for the same object, only choose one

1 Like

Thank you very much for your answer! This makes sense, I will try it and get back to you! :slight_smile: