fix(glb): remove invalid export_colors param + fix viewer stale mesh
4 root causes fixed:
1. export_colors=False was removed in Blender 4.x — caused every Blender
export to fail (exit 1) and always fall back to trimesh. Remove it.
Blender now runs the full pipeline: materials + sharp edges.
2. GlbModel cloned ref never reset on url change — key={glbBlobUrl} forces
React to remount GlbModel on each new blob URL, resetting the ref so
fresh geometry is always loaded.
3. glbBlobUrl not cleared before re-fetch — setGlbBlobUrl(null) added at
start of downloadUrl effect so spinner shows instead of stale mesh.
4. staleTime: 30_000 delayed picking up new MediaAsset after generation.
Changed to staleTime: 0 so invalidation always triggers immediate refetch.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -96,7 +96,7 @@ export default function InlineCadViewer({
|
||||
const { data: gltfAssets } = useQuery({
|
||||
queryKey: ['media-assets', cadFileId, 'gltf_geometry'],
|
||||
queryFn: () => getMediaAssets({ cad_file_id: cadFileId, asset_types: ['gltf_geometry'] }),
|
||||
staleTime: 30_000,
|
||||
staleTime: 0,
|
||||
refetchInterval: generating ? 4_000 : false,
|
||||
})
|
||||
|
||||
@@ -109,6 +109,8 @@ export default function InlineCadViewer({
|
||||
|
||||
useEffect(() => {
|
||||
if (!downloadUrl || !token) return
|
||||
// Clear stale mesh immediately so the loading spinner shows instead of old geometry
|
||||
setGlbBlobUrl(null)
|
||||
setLoadingGlb(true)
|
||||
let blobUrl = ''
|
||||
fetch(downloadUrl, { headers: { Authorization: `Bearer ${token}` } })
|
||||
@@ -140,7 +142,7 @@ export default function InlineCadViewer({
|
||||
<Canvas camera={{ position: [0, 0, 2], fov: 45 }}>
|
||||
<Suspense fallback={null}>
|
||||
<Environment preset={lightPreset} background={false} />
|
||||
<GlbModel url={glbBlobUrl} wireframe={viewMode === 'wireframe'} />
|
||||
<GlbModel key={glbBlobUrl} url={glbBlobUrl} wireframe={viewMode === 'wireframe'} />
|
||||
</Suspense>
|
||||
<OrbitControls makeDefault />
|
||||
</Canvas>
|
||||
|
||||
Reference in New Issue
Block a user