From a7d0825a14fa44dab6157d755dd98325cf2e913e Mon Sep 17 00:00:00 2001 From: Terry Jia Date: Tue, 6 Jan 2026 04:43:12 -0500 Subject: [PATCH] fix: disable frustum culling for SkinnedMesh to prevent clipping during animation (#7856) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary SkinnedMesh bounding box is computed at rest pose and doesn't update during animation, causing incorrect frustum culling when bones move outside the original bounds. fix https://github.com/Comfy-Org/ComfyUI_frontend/issues/7847 ## Screenshots before image after image ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-7856-fix-disable-frustum-culling-for-SkinnedMesh-to-prevent-clipping-during-animation-2e06d73d365081d8b585e9e4afa52d67) by [Unito](https://www.unito.io) --- src/extensions/core/load3d/LoaderManager.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/extensions/core/load3d/LoaderManager.ts b/src/extensions/core/load3d/LoaderManager.ts index 76e294d80..03002d661 100644 --- a/src/extensions/core/load3d/LoaderManager.ts +++ b/src/extensions/core/load3d/LoaderManager.ts @@ -166,6 +166,10 @@ export class LoaderManager implements LoaderManagerInterface { fbxModel.traverse((child) => { if (child instanceof THREE.Mesh) { this.modelManager.originalMaterials.set(child, child.material) + + if (child instanceof THREE.SkinnedMesh) { + child.frustumCulled = false + } } }) break @@ -212,6 +216,10 @@ export class LoaderManager implements LoaderManagerInterface { if (child instanceof THREE.Mesh) { child.geometry.computeVertexNormals() this.modelManager.originalMaterials.set(child, child.material) + + if (child instanceof THREE.SkinnedMesh) { + child.frustumCulled = false + } } }) break