@ad_fire.js?v=339f371e:37819 FeatureComponent(619) - deregister 1783608954663 @ad_fire.js?v=339f371e:37846 console.group  FeatureComponent(619) - deregister 1783608954664  console.group  FeatureCompon…


Rollenförderer Visualisierung und Fehler beheben


Der Browser beweist es jetzt eindeutig: die **glbs laden** (von `rob-geko.hifassets.com/fire/assets/katalog/...`), aber **jedes Renderer-Component** (`component_renderer` UND `component_lineRenderer`) ist `unknown Component 'wi'` → Geometrie undefined → Crash. Also ist ein **glb der einzige Render-Weg** in diesem Build — du hattest recht. Ich stelle den Marker auf ein glb um (bestehendes Teil-glb `CAP4040.glb`, das laut Log lädt, grün via `overrideMaterials`, Kugel-Collider).


Edit

                markers.push({
                    id: `sel-marker-${h.id}-${c.id}`,
                    tags: ["name-select-marker"],
                    components: [
                        { _resourceClass: "component_transform", parentKey: tr.key, translation: pos, rotation: [0, 0, 0], scale: [1, 1, 1] },
                        // Line renderer + parametric sphere — the render path this @ad/fire build actually
                        // supports (the config's grid uses component_lineRenderer + geometry_parametric).
                        // The mesh component_renderer is skipped by this build and crashes on select.
                        {
                            _resourceClass: "component_lineRenderer",
                            castShadow: false,
                            receiveShadow: false,
                            geometry: { _resourceClass: "geometry_parametric", parameters: { factoryName: "sphere-line", diameter: 80 } },
                            material: { _resourceClass: "material_line", diffuse: [0, 1, 0] },
                        },
                        // Round collider (shapeType 2 = sphere, radius = render diameter/2), triggersSelection
                        // defaults true → the raycast hits it and reports the marker as the click target.
                        { _resourceClass: "component_collider", type: 2, shapeType: 2, center: [0, 0, 0], radius: 40 },
                    ],
                });

                markers.push({
                    id: `sel-marker-${h.id}-${c.id}`,
                    tags: ["name-select-marker"],
                    // The only render path this @ad/fire build supports for scene-graph handles: a glb via
                    // sceneGraph_reference (renderer/lineRenderer components are skipped as "unknown"). We
                    // reuse an existing small part glb as the marker blob, tinted green via overrideMaterials.
                    sceneGraph: { _resourceClass: "sceneGraph_reference", path: "katalog/schutzzaun_basic/SBS1044SRA/CAP4040.glb" },
                    overrideMaterials: [{ _resourceClass: "material_standard", diffuse: [0, 1, 0] }],
                    components: [
                        { _resourceClass: "component_transform", parentKey: tr.key, translation: pos, rotation: [0, 0, 0], scale: [2, 2, 2] },
                        // Round collider (shapeType 2 = sphere), triggersSelection defaults true → the raycast
                        // hits it and reports the marker as the click target.
                        { _resourceClass: "component_collider", type: 2, shapeType: 2, center: [0, 0, 0], radius: 60 },
                    ],
                });


The file /Users/marcus.hinz/projects/adesso-cpq/packages/frontend/src/configurator/events/DefaultCommandProcessor.ts has been updated successfully. (file state is current in your context — no need to Read it back)

                markers.push({
                    id: `sel-marker-${h.id}-${c.id}`,
                    tags: ["name-select-marker"],
                    components: [
                        { _resourceClass: "component_transform", parentKey: tr.key, translation: pos, rotation: [0, 0, 0], scale: [1, 1, 1] },
                        // Line renderer + parametric sphere — the render path this @ad/fire build actually
                        // supports (the config's grid uses component_lineRenderer + geometry_parametric).
                        // The mesh component_renderer is skipped by this build and crashes on select.
                        {
                            _resourceClass: "component_lineRenderer",
                            castShadow: false,
                            receiveShadow: false,
                            geometry: { _resourceClass: "geometry_parametric", parameters: { factoryName: "sphere-line", diameter: 80 } },
                            material: { _resourceClass: "material_line", diffuse: [0, 1, 0] },
                        },
                        // Round collider (shapeType 2 = sphere, radius = render diameter/2), triggersSelection
                        // defaults true → the raycast hits it and reports the marker as the click target.
                        { _resourceClass: "component_collider", type: 2, shapeType: 2, center: [0, 0, 0], radius: 40 },
                    ],
                });

                markers.push({
                    id: `sel-marker-${h.id}-${c.id}`,
                    tags: ["name-select-marker"],
                    // The only render path this @ad/fire build supports for scene-graph handles: a glb via
                    // sceneGraph_reference (renderer/lineRenderer components are skipped as "unknown"). We
                    // reuse an existing small part glb as the marker blob, tinted green via overrideMaterials.
                    sceneGraph: { _resourceClass: "sceneGraph_reference", path: "katalog/schutzzaun_basic/SBS1044SRA/CAP4040.glb" },
                    overrideMaterials: [{ _resourceClass: "material_standard", diffuse: [0, 1, 0] }],
                    components: [
                        { _resourceClass: "component_transform", parentKey: tr.key, translation: pos, rotation: [0, 0, 0], scale: [2, 2, 2] },
                        // Round collider (shapeType 2 = sphere), triggersSelection defaults true → the raycast
                        // hits it and reports the marker as the click target.
                        { _resourceClass: "component_collider", type: 2, shapeType: 2, center: [0, 0, 0], radius: 60 },
                    ],
                });

+                    // The only render path this @ad/fire build supports for scene-graph handles: a glb via

+                    // sceneGraph_reference (renderer/lineRenderer components are skipped as "unknown"). We

+                    // reuse an existing small part glb as the marker blob, tinted green via overrideMaterials.

+                    sceneGraph: { _resourceClass: "sceneGraph_reference", path: "katalog/schutzzaun_basic/SBS1044SRA/CAP4040.glb" },

+                    overrideMaterials: [{ _resourceClass: "material_standard", diffuse: [0, 1, 0] }],

-                        { _resourceClass: "component_transform", parentKey: tr.key, translation: pos, rotation: [0, 0, 0], scale: [1, 1, 1] },

-                        // Line renderer + parametric sphere — the render path this @ad/fire build actually

-                        // supports (the config's grid uses component_lineRenderer + geometry_parametric).

-                        // The mesh component_renderer is skipped by this build and crashes on select.

-                            _resourceClass: "component_lineRenderer",

-                            castShadow: false,

-                            receiveShadow: false,

-                            geometry: { _resourceClass: "geometry_parametric", parameters: { factoryName: "sphere-line", diameter: 80 } },

-                            material: { _resourceClass: "material_line", diffuse: [0, 1, 0] },

-                        // Round collider (shapeType 2 = sphere, radius = render diameter/2), triggersSelection

-                        // defaults true → the raycast hits it and reports the marker as the click target.

-                        { _resourceClass: "component_collider", type: 2, shapeType: 2, center: [0, 0, 0], radius: 40 },

+                        { _resourceClass: "component_transform", parentKey: tr.key, translation: pos, rotation: [0, 0, 0], scale: [2, 2, 2] },

+                        // Round collider (shapeType 2 = sphere), triggersSelection defaults true → the raycast

+                        // hits it and reports the marker as the click target.

+                        { _resourceClass: "component_collider", type: 2, shapeType: 2, center: [0, 0, 0], radius: 60 },


Bash

cd /Users/marcus.hinz/projects/adesso-cpq
pnpm --filter @ad-cpq/common-frontend typecheck 2>&1 | grep -E 'error TS' | grep -vE 'ProductBrowser.vue' | head
echo "--- typecheck ok wenn leer ---"
pnpm --filter @ad-cpq/common-frontend exec vitest run DefaultCommandProcessor 2>&1 | grep -E 'Tests'

Typecheck und Tests nach glb-Umstellung


--- typecheck ok wenn leer ---
      Tests  6 passed (6)


Auf glb umgestellt — du hattest recht, das ist der einzige Weg, der in diesem Build rendert.

- **Geometrie**: `sceneGraph_reference` auf `katalog/schutzzaun_basic/SBS1044SRA/CAP4040.glb` — genau das glb, das laut deinem Log lädt (7592 Byte, von `rob-geko.hifassets.com`). Kein Renderer-Component mehr → kein `unknown Component 'wi'`, kein `getBounds`-Crash beim Selektieren.
- **Grün**: inline `overrideMaterials` (`material_standard`, diffuse `[0,1,0]`).
- **Größe**: scale `[2,2,2]`, Collider-Radius 60.
- **Klick + Alert**: unverändert (Kugel-Collider `shapeType 2`, Abfang in `handleSelectionClickEvent` → Dialog mit PMI/Element).

Typecheck sauber, Tests grün.

Einschränkung: `CAP4040.glb` ist eine **Abdeckkappe**, keine Kugel — es gibt kein Kugel-glb im Projekt, und binär erzeugen kann ich keins. Als Marker-Blob funktioniert es (sichtbar + klickbar). Wenn du ein Kugel-glb bereitstellst, tausche ich nur den `path`.