Skip to content

Frustum Culling problem on Skinnedmesh #8358

@Eldarduil

Description

@Eldarduil

Is there an existing issue for this?

Describe the bug

The Problem: Frustum culling always checks the original positions for the parts of Skinned meshes even after animations applied.

Examples:

FrustumCulling-SkinnedMesh.mp4

https://forum.gdevelop.io/t/3d-model-culling-does-not-update-with-animations/74545

https://discord.com/channels/258623956158906368/936338995875577926/1479144249114235050

I believe engine doesn't even use boundingSpheres for skinned meshes while doing Frustum Culling. Because even if we use child.geometry.computeBoundingSphere(); in a short code snippet to trigger when the certain animation is ran. Console logs shows that such as boundingSphere.center is changed, but frustum culling still happens like the 3d model is at the no animation state (T-pose).

I don't know if gdevelop uses custom frustum culling logic or not, but bounding volumes for 3d models needs to be updated when the updateAnimation is happening.

This is causing serious premature culling for the character models. this issue is more obvious especially in fps style games.

Steps to reproduce

The examples explain it a lot, but

  1. play death animation of character model2.
  2. you will see parts of the model is gonna prematurely culled.

GDevelop platform

Desktop

GDevelop version

5.6.261

Platform info

Details

OS Windows

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions