0 votes

I have an animated node containing one low polygon mesh (200 polys) and an animation imported from a Collada file.

Using a new Timer() I duplicate each node, add it to the scene root, and then call the animation player's play() method to play the default animation. This works fine, and the frame rate stays high (60fps) when I generate 5 - 8 duplicates, but at 10 -16 duplicates the performance is awful.

How can I optimise the performance here?

Can the problem here have something to do with running an animationPlayer node for each clone? Or is there perhaps a better way to share animationPlayer data from one node between multiple nodes?

in Engine by (16 points)

can you make an sample project to reproduce it?
It's hard to say what can improve in your case.

1 Answer

0 votes

I managed to fix the issue by generating a new Collada file.

In the original version exported from Blender, I used a constraint to produce the animation, and Blender's 'bake action' feature to 'freeze' the animation. I also chose Blender's standard Collada exporter to produce the Godot scene.

For the fix, I used the same Blend file, but used the official Godot Collada exporter,
which appears to bake animation constraints on export automatically.

I still need to perform more tests, but it's certainly running faster than it did before.

Perhaps Blender's standard exporter was generating too much redundant data, slowing down the renderer.

¯_(ツ)_/¯

by (16 points)
Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to webmaster@godotengine.org with your username.