From 967a905e3bf93543b0c0467e7fbf7b430f74a141 Mon Sep 17 00:00:00 2001 From: Wassim SAMAD Date: Wed, 17 Jun 2026 07:51:37 -0400 Subject: [PATCH 1/9] feat(paint-slots): unified slot defaults + paint for slab, ceiling, wall (phase 5) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Brings slab, ceiling, and wall onto the unified slot contract the shelf established, so each declares its paintable slots with a declarative default and (slab/ceiling) is painted through the registry capabilities.paint dispatch. - Shared helper packages/nodes/src/shared/slot-paint.ts: a node.slots-based PaintCapability factory (commit/resolve/effective generic; preview injected). Distinct from surface-paint.ts, which writes the legacy inline node.material. - slab: schema slots; def.geometry resolves node.slots.surface -> legacy material -> declared default, tags the mesh userData.slotId; slabPaint + capabilities.slots. Retires DEFAULT_SLAB_MATERIAL in the slab path. - ceiling: schema slots; material builders extracted to ceiling/materials.ts (shared by renderer + paint preview, built BackSide so the hover preview is visible from below); renderer resolves the slot; ceilingPaint + slots. - wall: WALL_SLOT_DEFAULT in core; the viewer's getMaterialsForWall renders an unpainted face with its declared default instead of the themed wall role; capabilities.slots (interior/exterior). wallPaint's inline interior/exterior fields are unchanged (node.slots migration is a later step). - selection-manager + material-paint: drop slab/ceiling from the legacy single-surface arms (now registry-driven). Behavior change (intended, matches the shelf precedent + the phase-5 plan): colored-mode UNPAINTED slab/ceiling/wall surfaces now render their fixed slot default (#e5e5e5 / #f5f5dc / #ffffff) instead of the theme role colour. The textures-off (monochrome) role collapse is unchanged — the escape hatch. Co-Authored-By: Claude Opus 4.8 (1M context) --- packages/core/src/schema/index.ts | 1 + packages/core/src/schema/nodes/ceiling.ts | 4 + packages/core/src/schema/nodes/slab.ts | 4 + packages/core/src/schema/nodes/wall.ts | 10 + .../components/editor/selection-manager.tsx | 8 +- packages/editor/src/lib/material-paint.ts | 2 - packages/nodes/src/ceiling/definition.ts | 6 + packages/nodes/src/ceiling/materials.ts | 80 +++++++ packages/nodes/src/ceiling/paint.ts | 42 ++++ packages/nodes/src/ceiling/renderer.tsx | 88 +++----- packages/nodes/src/ceiling/slots.ts | 11 + packages/nodes/src/shared/slot-paint.ts | 211 ++++++++++++++++++ packages/nodes/src/slab/definition.ts | 6 + packages/nodes/src/slab/geometry.ts | 60 +++-- packages/nodes/src/slab/paint.ts | 19 ++ packages/nodes/src/slab/slots.ts | 11 + packages/nodes/src/wall/definition.ts | 6 + packages/nodes/src/wall/slots.ts | 17 ++ .../viewer/src/systems/wall/wall-materials.ts | 22 +- 19 files changed, 520 insertions(+), 88 deletions(-) create mode 100644 packages/nodes/src/ceiling/materials.ts create mode 100644 packages/nodes/src/ceiling/paint.ts create mode 100644 packages/nodes/src/ceiling/slots.ts create mode 100644 packages/nodes/src/shared/slot-paint.ts create mode 100644 packages/nodes/src/slab/paint.ts create mode 100644 packages/nodes/src/slab/slots.ts create mode 100644 packages/nodes/src/wall/slots.ts diff --git a/packages/core/src/schema/index.ts b/packages/core/src/schema/index.ts index f0baa8db0..ca8fc1845 100644 --- a/packages/core/src/schema/index.ts +++ b/packages/core/src/schema/index.ts @@ -154,6 +154,7 @@ export type { WallSurfaceMaterialSpec, WallSurfaceSide } from './nodes/wall' export { getEffectiveWallSurfaceMaterial, getWallSurfaceMaterialSignature, + WALL_SLOT_DEFAULT, WallNode, } from './nodes/wall' export { WindowNode, WindowType } from './nodes/window' diff --git a/packages/core/src/schema/nodes/ceiling.ts b/packages/core/src/schema/nodes/ceiling.ts index 724bb0fde..b94aaaa2b 100644 --- a/packages/core/src/schema/nodes/ceiling.ts +++ b/packages/core/src/schema/nodes/ceiling.ts @@ -11,6 +11,10 @@ export const CeilingNode = BaseNode.extend({ children: z.array(ItemNode.shape.id).default([]), material: MaterialSchema.optional(), materialPreset: z.string().optional(), + // Per-slot material overrides on the unified slot model, mirroring + // `ShelfNode.slots`. Key = slot id (`surface`), value = a `MaterialRef` + // (`library:` / `scene:`). Absent = the declared slot default. + slots: z.record(z.string(), z.string()).optional(), polygon: z.array(z.tuple([z.number(), z.number()])), holes: z.array(z.array(z.tuple([z.number(), z.number()]))).default([]), holeMetadata: z.array(SurfaceHoleMetadata).default([]), diff --git a/packages/core/src/schema/nodes/slab.ts b/packages/core/src/schema/nodes/slab.ts index 5232eaaf8..fe3c47c1d 100644 --- a/packages/core/src/schema/nodes/slab.ts +++ b/packages/core/src/schema/nodes/slab.ts @@ -9,6 +9,10 @@ export const SlabNode = BaseNode.extend({ type: nodeType('slab'), material: MaterialSchema.optional(), materialPreset: z.string().optional(), + // Per-slot material overrides on the unified slot model, mirroring + // `ShelfNode.slots`. Key = slot id (`surface`), value = a `MaterialRef` + // (`library:` / `scene:`). Absent = the declared slot default. + slots: z.record(z.string(), z.string()).optional(), polygon: z.array(z.tuple([z.number(), z.number()])), holes: z.array(z.array(z.tuple([z.number(), z.number()]))).default([]), holeMetadata: z.array(SurfaceHoleMetadata).default([]), diff --git a/packages/core/src/schema/nodes/wall.ts b/packages/core/src/schema/nodes/wall.ts index ebce121c2..c356ae601 100644 --- a/packages/core/src/schema/nodes/wall.ts +++ b/packages/core/src/schema/nodes/wall.ts @@ -46,6 +46,16 @@ export type WallNode = z.infer export type WallSurfaceSide = 'interior' | 'exterior' +// Declared default appearance for an unpainted wall face in colored mode — +// visual parity with the retired DEFAULT_WALL_MATERIAL. Lives in core so the +// slot declaration (nodes) and the material resolver (viewer) share one value. +// May be a `#rrggbb` colour or a `library:` ref. Textures-off still +// collapses to the themed wall role (the escape hatch). +export const WALL_SLOT_DEFAULT: Record = { + interior: '#ffffff', + exterior: '#ffffff', +} + export type WallSurfaceMaterialSpec = { material?: z.infer materialPreset?: string diff --git a/packages/editor/src/components/editor/selection-manager.tsx b/packages/editor/src/components/editor/selection-manager.tsx index b1a3e50ac..965131f69 100644 --- a/packages/editor/src/components/editor/selection-manager.tsx +++ b/packages/editor/src/components/editor/selection-manager.tsx @@ -1059,13 +1059,7 @@ export const SelectionManager = () => { // before any of the legacy roof / stair / single-surface arms // below run. - if ( - node.type === 'fence' || - node.type === 'column' || - node.type === 'slab' || - node.type === 'ceiling' || - node.type === 'shelf' - ) { + if (node.type === 'fence' || node.type === 'column' || node.type === 'shelf') { const compatible = paintEnabled return { diff --git a/packages/editor/src/lib/material-paint.ts b/packages/editor/src/lib/material-paint.ts index bd672f153..7f86c05e1 100644 --- a/packages/editor/src/lib/material-paint.ts +++ b/packages/editor/src/lib/material-paint.ts @@ -382,8 +382,6 @@ export function resolveActivePaintMaterialFromSelection(params: { if ( (selectedNode.type === 'fence' || selectedNode.type === 'column' || - selectedNode.type === 'slab' || - selectedNode.type === 'ceiling' || selectedNode.type === 'shelf') && selectedMaterialTarget.role === 'surface' ) { diff --git a/packages/nodes/src/ceiling/definition.ts b/packages/nodes/src/ceiling/definition.ts index a59a70349..118c0abae 100644 --- a/packages/nodes/src/ceiling/definition.ts +++ b/packages/nodes/src/ceiling/definition.ts @@ -10,8 +10,10 @@ import { ceilingMoveVertexAffordance, } from './floorplan-affordances' import { ceilingFloorplanMoveTarget } from './floorplan-move' +import { ceilingPaint } from './paint' import { ceilingParametrics } from './parametrics' import { CeilingNode } from './schema' +import { ceilingSlots } from './slots' const HEIGHT_HANDLE_OFFSET = 0.22 const MIN_CEILING_HEIGHT = 0.5 @@ -102,6 +104,10 @@ export const ceilingDefinition: NodeDefinition = { }, duplicable: true, deletable: true, + // Unified slot model: one paintable underside surface with a declared + // default, painted through the registry `capabilities.paint` dispatch. + slots: () => ceilingSlots(), + paint: ceilingPaint, }, relations: { diff --git a/packages/nodes/src/ceiling/materials.ts b/packages/nodes/src/ceiling/materials.ts new file mode 100644 index 000000000..a6e4e590e --- /dev/null +++ b/packages/nodes/src/ceiling/materials.ts @@ -0,0 +1,80 @@ +import { + getMaterialPresetByRef, + parseMaterialRef, + resolveMaterial, + type SceneMaterial, + type SceneMaterialId, +} from '@pascal-app/core' +import { float, mix, positionWorld, smoothstep } from 'three/tsl' +import { BackSide, FrontSide, MeshBasicNodeMaterial } from 'three/webgpu' + +/** + * Ceiling material builders, shared by the renderer (mesh appearance) and the + * paint capability (hover preview). A ceiling is a flat tinted surface: the + * underside (`bottom`, seen from inside the room, `BackSide`) is opaque, while + * the `top` carries a transparent TSL grid overlay used while placing / + * selecting ceiling-hosted items. Both derive from a single colour, so slot + * painting resolves a colour and rebuilds these — it never applies a PBR map. + */ + +const gridScale = 5 +const gridX = positionWorld.x.mul(gridScale).fract() +const gridY = positionWorld.z.mul(gridScale).fract() +const lineWidth = 0.05 +const lineX = smoothstep(lineWidth, 0, gridX).add(smoothstep(1.0 - lineWidth, 1.0, gridX)) +const lineY = smoothstep(lineWidth, 0, gridY).add(smoothstep(1.0 - lineWidth, 1.0, gridY)) +const gridPattern = lineX.max(lineY) +const gridOpacity = mix(float(0.2), float(0.6), gridPattern) + +export type CeilingMaterials = { + topMaterial: MeshBasicNodeMaterial + bottomMaterial: MeshBasicNodeMaterial +} + +function createCeilingMaterials(color = '#999999'): CeilingMaterials { + const topMaterial = new MeshBasicNodeMaterial({ + color, + transparent: true, + depthWrite: false, + side: FrontSide, + }) + topMaterial.opacityNode = gridOpacity + + const bottomMaterial = new MeshBasicNodeMaterial({ + color, + transparent: true, + side: BackSide, + }) + + return { topMaterial, bottomMaterial } +} + +const ceilingMaterialCache = new Map() + +export function getCeilingMaterials(color = '#999999'): CeilingMaterials { + const cached = ceilingMaterialCache.get(color) + if (cached) return cached + const materials = createCeilingMaterials(color) + ceilingMaterialCache.set(color, materials) + return materials +} + +/** + * Resolve a slot `MaterialRef` to a flat colour for the ceiling surface. + * `library:` refs use the catalog preset's base colour; `scene:` refs use the + * stored material's colour. Returns null for a dangling / unparseable ref so + * the caller falls back to its default. + */ +export function ceilingColorFromRef( + ref: string | undefined, + sceneMaterials: Record | undefined, +): string | null { + const parsed = parseMaterialRef(ref) + if (!parsed) return null + if (parsed.kind === 'library') { + return getMaterialPresetByRef(ref)?.mapProperties.color ?? null + } + const sceneMaterial = sceneMaterials?.[parsed.id as SceneMaterialId] + if (!sceneMaterial) return null + return resolveMaterial(sceneMaterial.material).color ?? null +} diff --git a/packages/nodes/src/ceiling/paint.ts b/packages/nodes/src/ceiling/paint.ts new file mode 100644 index 000000000..3efce6994 --- /dev/null +++ b/packages/nodes/src/ceiling/paint.ts @@ -0,0 +1,42 @@ +import { + type AnyNode, + type CeilingNode, + getMaterialPresetByRef, + resolveMaterial, +} from '@pascal-app/core' +import type { Mesh } from 'three' +import { createSlotPaintCapability } from '../shared/slot-paint' +import { getCeilingMaterials } from './materials' + +/** + * Ceiling paint on the unified slot model. A ceiling has one paintable surface, + * so every hit resolves to `surface`; commit writes `node.slots.surface`. The + * preview swaps the registered underside mesh to the ceiling's own flat-tinted + * material (built `BackSide`, the way it renders), so the hover preview matches + * the committed result — a generic PBR preview would be invisible from below. + */ +export const ceilingPaint = createSlotPaintCapability({ + resolveRole: () => 'surface', + applyPreview: ({ material, materialPreset, root }) => { + const color = materialPreset + ? (getMaterialPresetByRef(materialPreset)?.mapProperties.color ?? null) + : material + ? (resolveMaterial(material).color ?? null) + : null + if (!color) return () => {} + const mesh = root as Mesh + if (!mesh.isMesh) return null + const previous = mesh.material + mesh.material = getCeilingMaterials(color).bottomMaterial + return () => { + mesh.material = previous + } + }, + legacyEffective: (node: AnyNode) => { + const ceiling = node as CeilingNode + if (ceiling.materialPreset || ceiling.material) { + return { material: ceiling.material, materialPreset: ceiling.materialPreset } + } + return null + }, +}) diff --git a/packages/nodes/src/ceiling/renderer.tsx b/packages/nodes/src/ceiling/renderer.tsx index 263c4fd81..9f49086c8 100644 --- a/packages/nodes/src/ceiling/renderer.tsx +++ b/packages/nodes/src/ceiling/renderer.tsx @@ -15,53 +15,15 @@ import { useViewer, } from '@pascal-app/viewer' import { useEffect, useLayoutEffect, useMemo, useRef } from 'react' -import { float, mix, positionWorld, smoothstep } from 'three/tsl' -import { BackSide, FrontSide, type Mesh, MeshBasicNodeMaterial } from 'three/webgpu' +import { BackSide, type Mesh } from 'three/webgpu' import { createPlaceholderGeometry } from '../shared/placeholder-geometry' +import { ceilingColorFromRef, getCeilingMaterials } from './materials' +import { CEILING_SLOT_DEFAULT_COLOR } from './slots' function createEmptyGeometry() { return createPlaceholderGeometry() } -const gridScale = 5 -const gridX = positionWorld.x.mul(gridScale).fract() -const gridY = positionWorld.z.mul(gridScale).fract() -const lineWidth = 0.05 -const lineX = smoothstep(lineWidth, 0, gridX).add(smoothstep(1.0 - lineWidth, 1.0, gridX)) -const lineY = smoothstep(lineWidth, 0, gridY).add(smoothstep(1.0 - lineWidth, 1.0, gridY)) -const gridPattern = lineX.max(lineY) -const gridOpacity = mix(float(0.2), float(0.6), gridPattern) - -function createCeilingMaterials(color = '#999999') { - const topMaterial = new MeshBasicNodeMaterial({ - color, - transparent: true, - depthWrite: false, - side: FrontSide, - }) - topMaterial.opacityNode = gridOpacity - - const bottomMaterial = new MeshBasicNodeMaterial({ - color, - transparent: true, - side: BackSide, - }) - - return { topMaterial, bottomMaterial } -} - -const ceilingMaterialCache = new Map>() - -function getCeilingMaterials(color = '#999999') { - const cacheKey = color - const cached = ceilingMaterialCache.get(cacheKey) - if (cached) return cached - - const materials = createCeilingMaterials(color) - ceilingMaterialCache.set(cacheKey, materials) - return materials -} - export const CeilingRenderer = ({ node }: { node: CeilingNode }) => { const ref = useRef(null!) const placeholderGeometry = useMemo(createEmptyGeometry, []) @@ -80,6 +42,9 @@ export const CeilingRenderer = ({ node }: { node: CeilingNode }) => { const textures = useViewer((s) => s.textures) const colorPreset = useViewer((s) => s.colorPreset) const sceneTheme = useViewer((s) => s.sceneTheme) + // Subscribe to the scene-material library so editing a `scene:` material the + // ceiling slot references re-tints it live. + const sceneMaterials = useScene((s) => s.materials) const liveTransform = useLiveTransforms((s) => s.get(node.id)) const ceilingY = (node.height ?? 2.5) - 0.01 + (liveTransform?.position[1] ?? 0) const position: [number, number, number] = [ @@ -97,18 +62,15 @@ export const CeilingRenderer = ({ node }: { node: CeilingNode }) => { ) const materials = useMemo(() => { - // Untextured ceilings (and everything in textures-off mode) take the themed - // 'ceiling' role colour; only an explicit preset/material keeps a texture. - const hasExplicit = Boolean(node.materialPreset || node.material) - if (!textures || !hasExplicit) { - // Bottom (seen from inside the room, looking up) stays opaque so the - // ceiling reads as a solid surface. Top uses the transparent - // grid-pattern material so the ceiling stays see-through whenever - // the editor reveals the `ceiling-grid` overlay (placing a - // ceiling-hosted item, or selecting one of its children — e.g. - // after committing a placement). Without this the top mesh shipped - // an opaque surface-role material, so a top-down camera lost view - // of everything under the ceiling once the overlay turned on. + // Textures-off mode takes the themed 'ceiling' role colour — the guaranteed + // escape hatch, independent of any slot override. The bottom (seen from + // inside the room, looking up) stays opaque so the ceiling reads as a solid + // surface; the top keeps the transparent grid material so a top-down camera + // can see through the ceiling whenever the `ceiling-grid` overlay is + // revealed (placing a ceiling-hosted item, or selecting one of its + // children). Without that the top mesh would ship an opaque surface-role + // material and a top-down camera would lose everything under the ceiling. + if (!textures) { const ceilingColor = resolveSurfaceColor('ceiling', colorPreset, sceneTheme) return { topMaterial: getCeilingMaterials(ceilingColor).topMaterial, @@ -116,14 +78,26 @@ export const CeilingRenderer = ({ node }: { node: CeilingNode }) => { } } - const preset = getMaterialPresetByRef(node.materialPreset) - const props = preset?.mapProperties ?? resolveMaterial(node.material) - const color = props.color || '#999999' - return getCeilingMaterials(color) + // Unified slot override — shared scene material or catalog `library:` finish + // (resolved to its base colour; a ceiling renders flat-tinted, not mapped). + const slotColor = ceilingColorFromRef(node.slots?.surface, sceneMaterials) + if (slotColor) return getCeilingMaterials(slotColor) + + // Legacy inline material / preset (scenes painted before the slot model). + if (node.materialPreset || node.material) { + const preset = getMaterialPresetByRef(node.materialPreset) + const props = preset?.mapProperties ?? resolveMaterial(node.material) + return getCeilingMaterials(props.color || '#999999') + } + + // Declared slot default. + return getCeilingMaterials(CEILING_SLOT_DEFAULT_COLOR) }, [ textures, colorPreset, sceneTheme, + sceneMaterials, + node.slots, node.materialPreset, node.material, node.material?.preset, diff --git a/packages/nodes/src/ceiling/slots.ts b/packages/nodes/src/ceiling/slots.ts new file mode 100644 index 000000000..7ca5e2864 --- /dev/null +++ b/packages/nodes/src/ceiling/slots.ts @@ -0,0 +1,11 @@ +import type { SlotDeclaration } from '@pascal-app/core' + +export type CeilingSlotId = 'surface' + +// Visual parity with the retired DEFAULT_CEILING_MATERIAL (warm beige). +export const CEILING_SLOT_DEFAULT_COLOR = '#f5f5dc' + +/** A ceiling exposes a single paintable underside surface. */ +export function ceilingSlots(): SlotDeclaration[] { + return [{ slotId: 'surface', label: 'Surface', default: CEILING_SLOT_DEFAULT_COLOR }] +} diff --git a/packages/nodes/src/shared/slot-paint.ts b/packages/nodes/src/shared/slot-paint.ts new file mode 100644 index 000000000..fa206d6f9 --- /dev/null +++ b/packages/nodes/src/shared/slot-paint.ts @@ -0,0 +1,211 @@ +import { + type AnyNode, + type AnyNodeId, + generateSceneMaterialId, + type MaterialSchema, + type PaintCapability, + type PaintPreviewArgs, + type PaintResolveArgs, + parseMaterialRef, + type SceneMaterial, + type SceneMaterialId, + toSceneMaterialRef, + useScene, +} from '@pascal-app/core' +import { createMaterial, createMaterialFromPresetRef, useViewer } from '@pascal-app/viewer' +import type { Material, Mesh, Object3D } from 'three' + +/** + * Shared paint capability for procedural kinds on the unified slot model + * (`node.slots: Record` + the shared scene-material + * palette) — the same data shape items derive from their GLB and the shelf + * declares via `capabilities.slots`. Distinct from `surface-paint.ts`, which + * writes the legacy inline `node.material` copy the plan is retiring. + * + * The commit / resolve / effective-material logic is identical across kinds; + * only the slot-resolution from a pointer hit and the mesh preview differ, so + * those are injected per kind. + */ + +type SlotsNode = AnyNode & { slots?: Record } + +function deepEqual(a: unknown, b: unknown): boolean { + if (Object.is(a, b)) return true + if (typeof a !== typeof b) return false + if (a === null || b === null) return false + if (Array.isArray(a) || Array.isArray(b)) { + if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) return false + for (let index = 0; index < a.length; index += 1) { + if (!deepEqual(a[index], b[index])) return false + } + return true + } + if (typeof a === 'object') { + const aRecord = a as Record + const bRecord = b as Record + const aKeys = Object.keys(aRecord) + const bKeys = Object.keys(bRecord) + if (aKeys.length !== bKeys.length) return false + for (const key of aKeys) { + if (!Object.hasOwn(bRecord, key)) return false + if (!deepEqual(aRecord[key], bRecord[key])) return false + } + return true + } + return false +} + +function findMatchingSceneMaterial( + materials: Record, + material: MaterialSchema, +): SceneMaterial | null { + for (const sceneMaterial of Object.values(materials)) { + if (deepEqual(sceneMaterial.material, material)) return sceneMaterial + } + return null +} + +function commitSlotPaint( + node: SlotsNode, + role: string, + material: MaterialSchema | undefined, + materialPreset: string | undefined, +): void { + const nodeId = node.id as AnyNodeId + const state = useScene.getState() + const currentNode = (state.nodes[nodeId] as SlotsNode | undefined) ?? node + + let ref: string | undefined + let newSceneMaterial: SceneMaterial | null = null + + if (material === undefined && materialPreset === undefined) { + ref = undefined + } else if (materialPreset) { + ref = materialPreset + } else if (material) { + const existing = findMatchingSceneMaterial(state.materials, material) + if (existing) { + ref = toSceneMaterialRef(existing.id) + } else { + const id = generateSceneMaterialId() + newSceneMaterial = { + id, + name: `Material ${Object.keys(state.materials).length + 1}`, + material, + } + ref = toSceneMaterialRef(id) + } + } else { + return + } + + const nextSlots = { ...(currentNode.slots ?? {}) } + if (ref) nextSlots[role] = ref + else delete nextSlots[role] + + if (newSceneMaterial) { + // Creating the scene material and setting the slot ref are one logical + // edit, so apply both in a single `set` — zundo records one history entry, + // and one undo removes both the ref and its (now orphaned) material. + const sceneMaterial = newSceneMaterial + useScene.setState((s) => { + if (s.readOnly) return s + const node2 = s.nodes[nodeId] as SlotsNode | undefined + if (!node2) return s + return { + materials: { ...s.materials, [sceneMaterial.id as SceneMaterialId]: sceneMaterial }, + nodes: { + ...s.nodes, + [nodeId]: { ...node2, slots: nextSlots } as AnyNode, + }, + } + }) + useScene.getState().markDirty(nodeId) + return + } + + state.updateNode(nodeId, { slots: nextSlots } as Partial) +} + +/** Preview material for a slot paint — mirrors the commit's resolution. */ +export function buildSlotPreviewMaterial( + material: MaterialSchema | undefined, + materialPreset: string | undefined, +): Material | null { + const shading = useViewer.getState().shading + if (materialPreset) return createMaterialFromPresetRef(materialPreset, shading) + if (material) return createMaterial(material, shading) + return null +} + +/** + * Preview for kinds whose meshes are produced by `def.geometry` and tagged + * with `userData.slotId` (+ `__fromGeometry`). Swaps every builder mesh whose + * slot matches `role`, leaving hosted-child meshes (which can carry a colliding + * `userData.slotId` from their own GLB) untouched. + */ +export function previewGeometrySlot(args: PaintPreviewArgs): (() => void) | null { + const { role, root, material, materialPreset } = args + const preview = buildSlotPreviewMaterial(material, materialPreset) + if (!preview) return () => {} + + const restores: Array<() => void> = [] + ;(root as Object3D).traverse((object) => { + const mesh = object as Mesh + if (!mesh.isMesh) return + const userData = mesh.userData as { slotId?: string | null; __fromGeometry?: boolean } + if (userData.__fromGeometry !== true) return + if (userData.slotId !== role) return + const previous = mesh.material + mesh.material = preview + restores.push(() => { + mesh.material = previous + }) + }) + + if (restores.length === 0) return null + return () => { + for (let index = restores.length - 1; index >= 0; index -= 1) restores[index]?.() + } +} + +export type SlotPaintConfig = { + /** Resolve the slot id for a pointer hit (`null` = not paintable here). */ + resolveRole: (args: PaintResolveArgs) => string | null + /** Apply a preview to the registered mesh subtree for `role`. */ + applyPreview: (args: PaintPreviewArgs) => (() => void) | null + /** + * Optional legacy fallback for the picker's current-value indicator — read + * when no `node.slots[role]` ref exists yet (e.g. a scene painted before the + * kind moved onto the slot model still carries inline `material`/`preset`). + */ + legacyEffective?: ( + node: AnyNode, + role: string, + ) => { material: MaterialSchema | undefined; materialPreset: string | undefined } | null +} + +export function createSlotPaintCapability(config: SlotPaintConfig): PaintCapability { + return { + resolveRole: config.resolveRole, + buildPatch: ({ node, role, materialPreset }) => { + const slots = { ...((node as SlotsNode).slots ?? {}) } + if (materialPreset) slots[role] = materialPreset + else delete slots[role] + return { slots } as Partial + }, + commit: ({ node, role, material, materialPreset }) => + commitSlotPaint(node as SlotsNode, role, material, materialPreset), + applyPreview: config.applyPreview, + getEffectiveMaterial: ({ node, role }) => { + const ref = (node as SlotsNode).slots?.[role] + const parsed = parseMaterialRef(ref) + if (parsed) { + if (parsed.kind === 'library') return { material: undefined, materialPreset: ref } + const sceneMaterial = useScene.getState().materials[parsed.id as SceneMaterialId] + if (sceneMaterial) return { material: sceneMaterial.material, materialPreset: undefined } + } + return config.legacyEffective?.(node, role) ?? null + }, + } +} diff --git a/packages/nodes/src/slab/definition.ts b/packages/nodes/src/slab/definition.ts index 4b63d0700..fc0ab43c2 100644 --- a/packages/nodes/src/slab/definition.ts +++ b/packages/nodes/src/slab/definition.ts @@ -12,8 +12,10 @@ import { } from './floorplan-affordances' import { slabFloorplanMoveTarget } from './floorplan-move' import { buildSlabGeometry } from './geometry' +import { slabPaint } from './paint' import { slabParametrics } from './parametrics' import { SlabNode } from './schema' +import { slabSlots } from './slots' const HEIGHT_HANDLE_OFFSET = 0.22 const MIN_SLAB_ELEVATION = 0.02 @@ -155,6 +157,10 @@ export const slabDefinition: NodeDefinition = { }, duplicable: true, deletable: true, + // Unified slot model: one paintable floor surface with a declared default, + // painted through the registry `capabilities.paint` dispatch like the shelf. + slots: () => slabSlots(), + paint: slabPaint, }, relations: { diff --git a/packages/nodes/src/slab/geometry.ts b/packages/nodes/src/slab/geometry.ts index dd1a68080..b15c1726e 100644 --- a/packages/nodes/src/slab/geometry.ts +++ b/packages/nodes/src/slab/geometry.ts @@ -1,25 +1,27 @@ -import { getMaterialPresetByRef, type SlabNode } from '@pascal-app/core' +import { type GeometryContext, getMaterialPresetByRef, type SlabNode } from '@pascal-app/core' import { applyMaterialPresetToMaterials, type ColorPreset, createDefaultMaterial, createMaterial, createSurfaceRoleMaterial, - DEFAULT_SLAB_MATERIAL, generateSlabGeometry, type RenderShading, + resolveMaterialRef, } from '@pascal-app/viewer' import { FrontSide, Group, type Material, Mesh, type Texture } from 'three' +import { SLAB_SLOT_DEFAULT_COLOR } from './slots' /** * Stage B builder for slab. Reuses `generateSlabGeometry` (pure * triangulation + hole CSG from viewer) and the same material cache * pattern the legacy slab renderer used. * - * Materials are cached by `{material, materialPreset}` signature so - * slabs sharing settings share the GPU resource. Cached entry mutation - * (preset apply) is preserved — async texture loads still update the - * rendered material after re-mount. + * Materials follow the unified slot model: the single `surface` slot resolves + * `node.slots.surface` (a shared scene material or `library:` finish) → the + * legacy inline `node.material` / `materialPreset` (pre-slot-model scenes) → + * the declared slot default colour. Textures-off collapses to the themed + * `floor` role — the guaranteed monochrome escape hatch. */ type SlabMaterial = Material & { alphaMap?: Texture | null @@ -35,19 +37,39 @@ function getSlabMaterial( shading: RenderShading, textures: boolean, colorPreset: ColorPreset, - sceneTheme?: string, + sceneTheme: string | undefined, + sceneMaterials: GeometryContext['materials'], ): Material { - // Untextured slabs (and everything in textures-off mode) take the themed - // 'floor' role colour. createSurfaceRoleMaterial returns a shared cached - // material, so it is returned as-is without the mutation below. - // FrontSide — DoubleSide on the role material's NodeMaterial poisons the - // MRT scene pass (see `materials.ts` line 77 / glazing fix 9400f1c5). - // Slab side faces still render correctly because `generateSlabGeometry` - // produces outward-facing normals on the top, bottom, and perimeter. - if (!textures || (!node.materialPreset && !node.material)) { + // Textures-off mode takes the themed 'floor' role colour — the guaranteed + // escape hatch, independent of any slot override. createSurfaceRoleMaterial + // returns a shared cached material. FrontSide — DoubleSide on the role + // material's NodeMaterial poisons the MRT scene pass (see `materials.ts` + // line 77 / glazing fix 9400f1c5). Slab side faces still render correctly + // because `generateSlabGeometry` produces outward-facing normals. + if (!textures) { return createSurfaceRoleMaterial('floor', colorPreset, FrontSide, sceneTheme) } + // Unified slot override — shared scene material or catalog `library:` finish. + const slotRef = node.slots?.surface + if (slotRef) { + const resolved = resolveMaterialRef(slotRef, sceneMaterials, shading) + if (resolved) return resolved + } + + // Legacy inline material / preset, for scenes painted before the slot model. + if (node.materialPreset || node.material) { + return getLegacySlabMaterial(node, shading) + } + + // Declared slot default (visual parity with the retired DEFAULT_SLAB_MATERIAL). + return createDefaultMaterial(SLAB_SLOT_DEFAULT_COLOR, 0.8, shading) +} + +function getLegacySlabMaterial(node: SlabNode, shading: RenderShading): Material { + // Cached by `{material, materialPreset}` signature so slabs sharing settings + // share the GPU resource; cached entry mutation (preset apply) is preserved + // so async texture loads still update the rendered material after re-mount. const cacheKey = JSON.stringify({ shading, material: node.material ?? null, @@ -61,7 +83,7 @@ function getSlabMaterial( ? createDefaultMaterial('#ffffff', 0.5, shading) : node.material ? createMaterial(node.material, shading).clone() - : DEFAULT_SLAB_MATERIAL(shading).clone() + : createDefaultMaterial(SLAB_SLOT_DEFAULT_COLOR, 0.8, shading) if (preset) { applyMaterialPresetToMaterials(material, preset) @@ -84,7 +106,7 @@ function getSlabMaterial( export function buildSlabGeometry( node: SlabNode, - _ctx?: unknown, + ctx?: GeometryContext, shading: RenderShading = 'rendered', textures = true, colorPreset: ColorPreset = 'clay', @@ -92,10 +114,12 @@ export function buildSlabGeometry( ): Group { const group = new Group() const geometry = generateSlabGeometry(node) - const material = getSlabMaterial(node, shading, textures, colorPreset, sceneTheme) + const material = getSlabMaterial(node, shading, textures, colorPreset, sceneTheme, ctx?.materials) const mesh = new Mesh(geometry, material) mesh.castShadow = true mesh.receiveShadow = true + // Tag the surface so the unified slot paint can resolve the hit and preview. + mesh.userData.slotId = 'surface' const elevation = node.elevation ?? 0.05 if (elevation < 0) mesh.position.y = elevation group.add(mesh) diff --git a/packages/nodes/src/slab/paint.ts b/packages/nodes/src/slab/paint.ts new file mode 100644 index 000000000..a5387849a --- /dev/null +++ b/packages/nodes/src/slab/paint.ts @@ -0,0 +1,19 @@ +import type { AnyNode, SlabNode } from '@pascal-app/core' +import { createSlotPaintCapability, previewGeometrySlot } from '../shared/slot-paint' + +/** + * Slab paint on the unified slot model. A slab has one paintable surface, so + * every face resolves to the `surface` slot; commit writes `node.slots.surface` + * (a shared scene-material or `library:` ref) like the shelf. + */ +export const slabPaint = createSlotPaintCapability({ + resolveRole: () => 'surface', + applyPreview: previewGeometrySlot, + legacyEffective: (node: AnyNode) => { + const slab = node as SlabNode + if (slab.materialPreset || slab.material) { + return { material: slab.material, materialPreset: slab.materialPreset } + } + return null + }, +}) diff --git a/packages/nodes/src/slab/slots.ts b/packages/nodes/src/slab/slots.ts new file mode 100644 index 000000000..febe029b5 --- /dev/null +++ b/packages/nodes/src/slab/slots.ts @@ -0,0 +1,11 @@ +import type { SlotDeclaration } from '@pascal-app/core' + +export type SlabSlotId = 'surface' + +// Visual parity with the retired DEFAULT_SLAB_MATERIAL (light grey). +export const SLAB_SLOT_DEFAULT_COLOR = '#e5e5e5' + +/** A slab exposes a single paintable floor surface. */ +export function slabSlots(): SlotDeclaration[] { + return [{ slotId: 'surface', label: 'Surface', default: SLAB_SLOT_DEFAULT_COLOR }] +} diff --git a/packages/nodes/src/wall/definition.ts b/packages/nodes/src/wall/definition.ts index 0e0face2c..d200c4367 100644 --- a/packages/nodes/src/wall/definition.ts +++ b/packages/nodes/src/wall/definition.ts @@ -6,6 +6,7 @@ import { wallFloorplanSiblingOverrides } from './floorplan-overrides' import { wallPaint } from './paint' import { wallParametrics } from './parametrics' import { WallNode } from './schema' +import { wallSlots } from './slots' /** * Wall — the Phase 3 stress test of the registry-driven node model. @@ -56,6 +57,11 @@ export const wallDefinition: NodeDefinition = { // preview through this entry rather than carrying a kind-name // arm. paint: wallPaint, + // Declared paintable slots (interior / exterior) with their default + // appearance — the same `{ slotId, label, default }` contract every other + // paintable kind exposes. Paint still writes the legacy inline fields via + // `wallPaint`; migrating those into `node.slots` is a later step. + slots: () => wallSlots(), }, relations: { diff --git a/packages/nodes/src/wall/slots.ts b/packages/nodes/src/wall/slots.ts new file mode 100644 index 000000000..d6bded909 --- /dev/null +++ b/packages/nodes/src/wall/slots.ts @@ -0,0 +1,17 @@ +import { type SlotDeclaration, WALL_SLOT_DEFAULT } from '@pascal-app/core' + +/** + * A wall exposes two paintable faces — interior + exterior. Painting still + * writes the legacy `interiorMaterial*` / `exteriorMaterial*` fields via + * `wallPaint` (the inline model isn't migrated to `node.slots` yet); this + * declaration surfaces the slot list + declared defaults for the picker and + * keeps walls on the same `{ slotId, label, default }` contract as every other + * paintable kind. The defaults come from core so the viewer's material + * resolver renders the identical value. + */ +export function wallSlots(): SlotDeclaration[] { + return [ + { slotId: 'interior', label: 'Interior', default: WALL_SLOT_DEFAULT.interior }, + { slotId: 'exterior', label: 'Exterior', default: WALL_SLOT_DEFAULT.exterior }, + ] +} diff --git a/packages/viewer/src/systems/wall/wall-materials.ts b/packages/viewer/src/systems/wall/wall-materials.ts index 3c807dc8b..a37690719 100644 --- a/packages/viewer/src/systems/wall/wall-materials.ts +++ b/packages/viewer/src/systems/wall/wall-materials.ts @@ -2,7 +2,9 @@ import { getEffectiveWallSurfaceMaterial, getMaterialPresetByRef, getWallSurfaceMaterialSignature, + parseMaterialRef, resolveMaterial, + WALL_SLOT_DEFAULT, type WallNode, type WallSurfaceMaterialSpec, } from '@pascal-app/core' @@ -12,6 +14,7 @@ import { MeshLambertNodeMaterial, MeshStandardNodeMaterial } from 'three/webgpu' import { baseMaterial, type ColorPreset, + createDefaultMaterial, createMaterial, createMaterialFromPresetRef, createSurfaceRoleMaterial, @@ -88,6 +91,15 @@ function hasExplicitMaterial(spec: WallSurfaceMaterialSpec): boolean { return Boolean(spec.materialPreset || spec.material) } +// Resolve a wall face's declared default — a catalog `library:` finish or a +// flat colour — to a renderable material. +function resolveWallSlotDefault(slotDefault: string, shading: RenderShading): Material { + if (parseMaterialRef(slotDefault)?.kind === 'library') { + return createMaterialFromPresetRef(slotDefault, shading) ?? baseMaterial(shading) + } + return createDefaultMaterial(slotDefault, 0.9, shading) +} + function getSurfaceColor(spec: WallSurfaceMaterialSpec, fallback = DEFAULT_WALL_COLOR): string { const preset = getMaterialPresetByRef(spec.materialPreset) if (preset?.mapProperties?.color) { @@ -216,17 +228,19 @@ export function getMaterialsForWall( const exteriorSpec = getEffectiveWallSurfaceMaterial(wallNode, 'exterior') const wallRoleMaterial = createSurfaceRoleMaterial('wall', colorPreset, undefined, sceneTheme) - // Untextured surfaces take the themed wall role colour even with textures on; - // only surfaces with an explicit preset/material keep their texture. + // Colored mode: an unpainted face takes its declared slot default (parity + // with the retired DEFAULT_WALL_MATERIAL); only an explicit preset/material + // keeps a texture. Textures-off collapses every face to the themed wall role + // (the guaranteed escape hatch). The edge/cap slot (index 0) stays role-based. const visible: WallMaterialArray = textures ? [ wallRoleMaterial, hasExplicitMaterial(interiorSpec) ? getSurfaceVisibleMaterial(interiorSpec, shading) - : wallRoleMaterial, + : resolveWallSlotDefault(WALL_SLOT_DEFAULT.interior, shading), hasExplicitMaterial(exteriorSpec) ? getSurfaceVisibleMaterial(exteriorSpec, shading) - : wallRoleMaterial, + : resolveWallSlotDefault(WALL_SLOT_DEFAULT.exterior, shading), ] : [wallRoleMaterial, wallRoleMaterial, wallRoleMaterial] From 737c4e9d1d090737588081ae6cd98c8d4d77fe58 Mon Sep 17 00:00:00 2001 From: Wassim SAMAD Date: Wed, 17 Jun 2026 08:25:48 -0400 Subject: [PATCH 2/9] feat(paint-slots): concrete-plate finish + try defaults (wall=concrete, slab=wood plank 48, ceiling=soft white) - material-library: add 'concrete-plate' KTX2 finish (512, fabric/leather-style pipeline) + editor-app texture mirror. - viewer: shared resolveSlotDefaultMaterial(colour|library ref) so a kind's slot default can be a catalog finish, not just a flat colour. - wall default -> library:concrete-plate (interior + exterior). - slab default -> library:wood-woodplank48 (slab geometry resolves it via the shared helper). - ceiling default -> soft white #f2eee6 (ceiling renders flat-tinted). Co-Authored-By: Claude Opus 4.8 (1M context) --- .../concrete_plate/concrete_plate_ao_512.ktx2 | Bin 0 -> 33302 bytes .../concrete_plate_basecolor_512.ktx2 | Bin 0 -> 44714 bytes .../concrete_plate_normal_512.ktx2 | Bin 0 -> 328913 bytes .../concrete_plate_roughness_512.ktx2 | Bin 0 -> 41794 bytes .../concrete_plate/concrete_plate_thumb.webp | Bin 0 -> 6784 bytes packages/core/src/material-library.ts | 38 ++++++++++++++++++ packages/core/src/schema/nodes/wall.ts | 4 +- packages/nodes/src/ceiling/slots.ts | 5 ++- packages/nodes/src/slab/geometry.ts | 9 +++-- packages/nodes/src/slab/slots.ts | 8 ++-- packages/viewer/src/index.ts | 1 + packages/viewer/src/lib/materials.ts | 20 +++++++++ 12 files changed, 74 insertions(+), 11 deletions(-) create mode 100644 apps/editor/public/material/concrete/concrete_plate/concrete_plate_ao_512.ktx2 create mode 100644 apps/editor/public/material/concrete/concrete_plate/concrete_plate_basecolor_512.ktx2 create mode 100644 apps/editor/public/material/concrete/concrete_plate/concrete_plate_normal_512.ktx2 create mode 100644 apps/editor/public/material/concrete/concrete_plate/concrete_plate_roughness_512.ktx2 create mode 100644 apps/editor/public/material/concrete/concrete_plate/concrete_plate_thumb.webp diff --git a/apps/editor/public/material/concrete/concrete_plate/concrete_plate_ao_512.ktx2 b/apps/editor/public/material/concrete/concrete_plate/concrete_plate_ao_512.ktx2 new file mode 100644 index 0000000000000000000000000000000000000000..35e24b319e3f14f085fb7a78b796c5b057101c1f GIT binary patch literal 33302 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 T<}0En6NsBE0vQt@2H>9u)g$AL literal 0 HcmV?d00001 diff --git a/apps/editor/public/material/concrete/concrete_plate/concrete_plate_basecolor_512.ktx2 b/apps/editor/public/material/concrete/concrete_plate/concrete_plate_basecolor_512.ktx2 new file mode 100644 index 0000000000000000000000000000000000000000..7d82bd561d1930c1dd92c0c9860b46910faf9969 GIT binary patch literal 44714 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 z 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 zui a-h()v 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 z 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 M!^R4XI=p%2a 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 IF_{%c6>^kwlmGw# literal 0 HcmV?d00001 diff --git a/apps/editor/public/material/concrete/concrete_plate/concrete_plate_roughness_512.ktx2 b/apps/editor/public/material/concrete/concrete_plate/concrete_plate_roughness_512.ktx2 new file mode 100644 index 0000000000000000000000000000000000000000..8a5044f2233e64703c295a823176a061fbe38917 GIT binary patch literal 41794 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 iQ%m=1vQ8(NKyB7*hDz9O<^7Ae` ref. Textures-off still // collapses to the themed wall role (the escape hatch). export const WALL_SLOT_DEFAULT: Record = { - interior: '#ffffff', - exterior: '#ffffff', + interior: 'library:concrete-plate', + exterior: 'library:concrete-plate', } export type WallSurfaceMaterialSpec = { diff --git a/packages/nodes/src/ceiling/slots.ts b/packages/nodes/src/ceiling/slots.ts index 7ca5e2864..7b7c48a99 100644 --- a/packages/nodes/src/ceiling/slots.ts +++ b/packages/nodes/src/ceiling/slots.ts @@ -2,8 +2,9 @@ import type { SlotDeclaration } from '@pascal-app/core' export type CeilingSlotId = 'surface' -// Visual parity with the retired DEFAULT_CEILING_MATERIAL (warm beige). -export const CEILING_SLOT_DEFAULT_COLOR = '#f5f5dc' +// Soft white — the default underside colour for an unpainted ceiling. (A +// ceiling renders flat-tinted, so this is a colour, not a `library:` finish.) +export const CEILING_SLOT_DEFAULT_COLOR = '#f2eee6' /** A ceiling exposes a single paintable underside surface. */ export function ceilingSlots(): SlotDeclaration[] { diff --git a/packages/nodes/src/slab/geometry.ts b/packages/nodes/src/slab/geometry.ts index b15c1726e..851660ec6 100644 --- a/packages/nodes/src/slab/geometry.ts +++ b/packages/nodes/src/slab/geometry.ts @@ -8,9 +8,10 @@ import { generateSlabGeometry, type RenderShading, resolveMaterialRef, + resolveSlotDefaultMaterial, } from '@pascal-app/viewer' import { FrontSide, Group, type Material, Mesh, type Texture } from 'three' -import { SLAB_SLOT_DEFAULT_COLOR } from './slots' +import { SLAB_SLOT_DEFAULT } from './slots' /** * Stage B builder for slab. Reuses `generateSlabGeometry` (pure @@ -62,8 +63,8 @@ function getSlabMaterial( return getLegacySlabMaterial(node, shading) } - // Declared slot default (visual parity with the retired DEFAULT_SLAB_MATERIAL). - return createDefaultMaterial(SLAB_SLOT_DEFAULT_COLOR, 0.8, shading) + // Declared slot default — a catalog `library:` finish or a flat colour. + return resolveSlotDefaultMaterial(SLAB_SLOT_DEFAULT, shading, 0.8) } function getLegacySlabMaterial(node: SlabNode, shading: RenderShading): Material { @@ -83,7 +84,7 @@ function getLegacySlabMaterial(node: SlabNode, shading: RenderShading): Material ? createDefaultMaterial('#ffffff', 0.5, shading) : node.material ? createMaterial(node.material, shading).clone() - : createDefaultMaterial(SLAB_SLOT_DEFAULT_COLOR, 0.8, shading) + : createDefaultMaterial('#e5e5e5', 0.8, shading) if (preset) { applyMaterialPresetToMaterials(material, preset) diff --git a/packages/nodes/src/slab/slots.ts b/packages/nodes/src/slab/slots.ts index febe029b5..094bdb0cf 100644 --- a/packages/nodes/src/slab/slots.ts +++ b/packages/nodes/src/slab/slots.ts @@ -2,10 +2,12 @@ import type { SlotDeclaration } from '@pascal-app/core' export type SlabSlotId = 'surface' -// Visual parity with the retired DEFAULT_SLAB_MATERIAL (light grey). -export const SLAB_SLOT_DEFAULT_COLOR = '#e5e5e5' +// Declared default appearance for an unpainted slab surface in colored mode — +// a catalog `library:` finish or a `#rrggbb` colour. Textures-off collapses +// to the themed floor role (the escape hatch). +export const SLAB_SLOT_DEFAULT = 'library:wood-woodplank48' /** A slab exposes a single paintable floor surface. */ export function slabSlots(): SlotDeclaration[] { - return [{ slotId: 'surface', label: 'Surface', default: SLAB_SLOT_DEFAULT_COLOR }] + return [{ slotId: 'surface', label: 'Surface', default: SLAB_SLOT_DEFAULT }] } diff --git a/packages/viewer/src/index.ts b/packages/viewer/src/index.ts index f8e55fa33..7d2c94693 100644 --- a/packages/viewer/src/index.ts +++ b/packages/viewer/src/index.ts @@ -69,6 +69,7 @@ export { PRESET_PALETTES, type RenderShading, resolveMaterialRef, + resolveSlotDefaultMaterial, resolveSurfaceColor, WHITE_PALETTE, } from './lib/materials' diff --git a/packages/viewer/src/lib/materials.ts b/packages/viewer/src/lib/materials.ts index fbfdc1acd..677b1d13f 100644 --- a/packages/viewer/src/lib/materials.ts +++ b/packages/viewer/src/lib/materials.ts @@ -516,6 +516,26 @@ export function resolveMaterialRef( return createMaterial(sceneMaterial.material, shading) } +/** + * Resolve a node kind's declared slot default — either a catalog `library:` + * finish or a flat `#rrggbb` colour — to a renderable material. Shared by the + * procedural kinds whose colored-mode unpainted appearance comes from a + * declarative default (slab, wall). + */ +export function resolveSlotDefaultMaterial( + slotDefault: string, + shading: RenderShading = 'rendered', + roughness = 0.9, +): THREE.Material { + if (parseMaterialRef(slotDefault)?.kind === 'library') { + return ( + createMaterialFromPresetRef(slotDefault, shading) ?? + createDefaultMaterial('#ffffff', roughness, shading) + ) + } + return createDefaultMaterial(slotDefault, roughness, shading) +} + export function createDefaultMaterial( color = '#ffffff', roughness = 0.9, From 9f1627e923d557a75d59ad9875607806a96ce084 Mon Sep 17 00:00:00 2001 From: Wassim SAMAD Date: Wed, 17 Jun 2026 08:54:18 -0400 Subject: [PATCH 3/9] feat(paint-slots): paintable slots for windows + doors (frame/glass, panel/glass) Windows and doors build all visuals in their viewer systems from module-global materials, so this threads per-node slot materials + userData.slotId tags through those builders without restructuring them: - window: 'frame' + 'glass' slots. door: 'panel' (body = casing + leaf) + 'glass'; the opening reveal keeps its own material. - Each system captures per-frame viewer state, then updateWindow/DoorMesh points the builder-facing base/glass materials at the node's resolved slot override (recomputed per node, so the next node resets without a restore). Meshes are auto-tagged in the shared addBox/addShape helpers by which material they got. - Textures-off still collapses to the role material (escape hatch); a slot override only applies in colored mode. - Editing a referenced scene material re-dirties the window/door (these systems aren't covered by GeometrySystem's scene-material re-dirty). - New paint capabilities (resolve role from userData.slotId, preview by userData.slotId) + capabilities.slots; window/door dropped from the paint disabled list. Shared previewSlotByUserData helper. Defaults unchanged: unpainted windows/doors render exactly as before (the slot fallback is the existing frame/glass material), so no visual regression. Co-Authored-By: Claude Opus 4.8 (1M context) --- packages/core/src/schema/nodes/door.ts | 4 + packages/core/src/schema/nodes/window.ts | 4 + .../components/editor/selection-manager.tsx | 2 +- packages/nodes/src/door/definition.ts | 6 ++ packages/nodes/src/door/paint.ts | 17 +++++ packages/nodes/src/door/slots.ts | 19 +++++ packages/nodes/src/shared/slot-paint.ts | 28 +++++++ packages/nodes/src/window/definition.ts | 6 ++ packages/nodes/src/window/paint.ts | 17 +++++ packages/nodes/src/window/slots.ts | 16 ++++ .../viewer/src/systems/door/door-system.tsx | 72 ++++++++++++++++++ .../src/systems/window/window-system.tsx | 76 +++++++++++++++++++ 12 files changed, 266 insertions(+), 1 deletion(-) create mode 100644 packages/nodes/src/door/paint.ts create mode 100644 packages/nodes/src/door/slots.ts create mode 100644 packages/nodes/src/window/paint.ts create mode 100644 packages/nodes/src/window/slots.ts diff --git a/packages/core/src/schema/nodes/door.ts b/packages/core/src/schema/nodes/door.ts index fd26ad687..26b4170e0 100644 --- a/packages/core/src/schema/nodes/door.ts +++ b/packages/core/src/schema/nodes/door.ts @@ -41,6 +41,10 @@ export const DoorNode = BaseNode.extend({ id: objectId('door'), type: nodeType('door'), material: MaterialSchema.optional(), + // Per-slot material overrides on the unified slot model. Keys: `panel` (the + // door body), `glass`. Value = a `MaterialRef` (`library:` / `scene:`). + // Absent = the body/glass default. Mirrors `ShelfNode.slots`. + slots: z.record(z.string(), z.string()).optional(), position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]), rotation: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]), diff --git a/packages/core/src/schema/nodes/window.ts b/packages/core/src/schema/nodes/window.ts index c5a1f5f01..08c5ce4ef 100644 --- a/packages/core/src/schema/nodes/window.ts +++ b/packages/core/src/schema/nodes/window.ts @@ -21,6 +21,10 @@ export const WindowNode = BaseNode.extend({ id: objectId('window'), type: nodeType('window'), material: MaterialSchema.optional(), + // Per-slot material overrides on the unified slot model. Keys: `frame`, + // `glass`. Value = a `MaterialRef` (`library:` / `scene:`). Absent = + // the frame/glass default. Mirrors `ShelfNode.slots`. + slots: z.record(z.string(), z.string()).optional(), position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]), rotation: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]), diff --git a/packages/editor/src/components/editor/selection-manager.tsx b/packages/editor/src/components/editor/selection-manager.tsx index 965131f69..ffaf5aa84 100644 --- a/packages/editor/src/components/editor/selection-manager.tsx +++ b/packages/editor/src/components/editor/selection-manager.tsx @@ -1088,7 +1088,7 @@ export const SelectionManager = () => { } } - const disabledNodeTypes = ['window', 'door', 'zone'] + const disabledNodeTypes = ['zone'] if (disabledNodeTypes.includes(node.type)) { return { key: `${node.type}:${node.id}:unsupported`, diff --git a/packages/nodes/src/door/definition.ts b/packages/nodes/src/door/definition.ts index f006e2634..4846413c5 100644 --- a/packages/nodes/src/door/definition.ts +++ b/packages/nodes/src/door/definition.ts @@ -12,8 +12,10 @@ import { scaleHandleHeight } from './door-math' import { buildDoorFloorplan } from './floorplan' import { doorWidthAffordance } from './floorplan-affordances' import { doorFloorplanMoveTarget } from './floorplan-move' +import { doorPaint } from './paint' import { doorParametrics } from './parametrics' import { DoorNode } from './schema' +import { doorSlots } from './slots' const SIDE_HANDLE_OFFSET = 0.24 const HEIGHT_HANDLE_OFFSET = 0.24 @@ -174,6 +176,10 @@ export const doorDefinition: NodeDefinition = { // placed. Host apps strip these at preset-save time via // `getHostRefFields(def)`. hostRefFields: ['wallId', 'roofSegmentId', 'roofFace'], + // Panel / glass slots painted through the registry. The door system tags + // each mesh with its `userData.slotId`; paint writes `node.slots`. + slots: () => doorSlots(), + paint: doorPaint, }, parametrics: doorParametrics, diff --git a/packages/nodes/src/door/paint.ts b/packages/nodes/src/door/paint.ts new file mode 100644 index 000000000..b1d50f6a0 --- /dev/null +++ b/packages/nodes/src/door/paint.ts @@ -0,0 +1,17 @@ +import type { PaintResolveArgs } from '@pascal-app/core' +import { createSlotPaintCapability, previewSlotByUserData } from '../shared/slot-paint' + +/** + * Door paint on the unified slot model. The door's viewer system tags each built + * mesh with `userData.slotId` (`panel` / `glass`), so the role resolves straight + * from the pointer hit; commit writes `node.slots[slotId]`. + */ +function resolveDoorRole(args: PaintResolveArgs): string | null { + const slotId = (args.hitObject?.userData as { slotId?: string | null } | undefined)?.slotId + return typeof slotId === 'string' ? slotId : null +} + +export const doorPaint = createSlotPaintCapability({ + resolveRole: resolveDoorRole, + applyPreview: previewSlotByUserData, +}) diff --git a/packages/nodes/src/door/slots.ts b/packages/nodes/src/door/slots.ts new file mode 100644 index 000000000..89de6c698 --- /dev/null +++ b/packages/nodes/src/door/slots.ts @@ -0,0 +1,19 @@ +import type { SlotDeclaration } from '@pascal-app/core' + +export type DoorSlotId = 'panel' | 'glass' + +// Picker swatches. Rendering falls back to the live body/glass defaults (which +// already track shading + theme), so these are just the indicator colours. +const PANEL_DEFAULT = '#f2f0ed' +const GLASS_DEFAULT = '#87ceeb' + +/** + * A door exposes two paintable slots: `panel` (the door body — frame casing + + * leaf) and `glass`. The opening reveal keeps its own material. + */ +export function doorSlots(): SlotDeclaration[] { + return [ + { slotId: 'panel', label: 'Panel', default: PANEL_DEFAULT }, + { slotId: 'glass', label: 'Glass', default: GLASS_DEFAULT }, + ] +} diff --git a/packages/nodes/src/shared/slot-paint.ts b/packages/nodes/src/shared/slot-paint.ts index fa206d6f9..eb5949584 100644 --- a/packages/nodes/src/shared/slot-paint.ts +++ b/packages/nodes/src/shared/slot-paint.ts @@ -169,6 +169,34 @@ export function previewGeometrySlot(args: PaintPreviewArgs): (() => void) | null } } +/** + * Preview for kinds whose meshes are built by a viewer system (window, door) + * and tagged with `userData.slotId` — no `__fromGeometry` marker and no hosted + * children to guard against, so it swaps every mesh whose slot matches `role`. + */ +export function previewSlotByUserData(args: PaintPreviewArgs): (() => void) | null { + const { role, root, material, materialPreset } = args + const preview = buildSlotPreviewMaterial(material, materialPreset) + if (!preview) return () => {} + + const restores: Array<() => void> = [] + ;(root as Object3D).traverse((object) => { + const mesh = object as Mesh + if (!mesh.isMesh) return + if ((mesh.userData as { slotId?: string | null }).slotId !== role) return + const previous = mesh.material + mesh.material = preview + restores.push(() => { + mesh.material = previous + }) + }) + + if (restores.length === 0) return null + return () => { + for (let index = restores.length - 1; index >= 0; index -= 1) restores[index]?.() + } +} + export type SlotPaintConfig = { /** Resolve the slot id for a pointer hit (`null` = not paintable here). */ resolveRole: (args: PaintResolveArgs) => string | null diff --git a/packages/nodes/src/window/definition.ts b/packages/nodes/src/window/definition.ts index 96f8b11c2..bdd659632 100644 --- a/packages/nodes/src/window/definition.ts +++ b/packages/nodes/src/window/definition.ts @@ -11,8 +11,10 @@ import { buildRoofWallOpeningCut } from '../shared/roof-wall-opening-cut' import { buildWindowFloorplan } from './floorplan' import { windowWidthAffordance } from './floorplan-affordances' import { windowFloorplanMoveTarget } from './floorplan-move' +import { windowPaint } from './paint' import { windowParametrics } from './parametrics' import { WindowNode } from './schema' +import { windowSlots } from './slots' const SIDE_HANDLE_OFFSET = 0.24 const HEIGHT_HANDLE_OFFSET = 0.24 @@ -162,6 +164,10 @@ export const windowDefinition: NodeDefinition = { // `wallId` / `roofSegmentId` are re-derived from the surface under // the cursor at preset placement time — see door for the pattern. hostRefFields: ['wallId', 'roofSegmentId', 'roofFace'], + // Frame / glass slots painted through the registry. The window system tags + // each mesh with its `userData.slotId`; paint writes `node.slots`. + slots: () => windowSlots(), + paint: windowPaint, }, parametrics: windowParametrics, diff --git a/packages/nodes/src/window/paint.ts b/packages/nodes/src/window/paint.ts new file mode 100644 index 000000000..471374eb4 --- /dev/null +++ b/packages/nodes/src/window/paint.ts @@ -0,0 +1,17 @@ +import type { PaintResolveArgs } from '@pascal-app/core' +import { createSlotPaintCapability, previewSlotByUserData } from '../shared/slot-paint' + +/** + * Window paint on the unified slot model. The window's viewer system tags each + * built mesh with `userData.slotId` (`frame` / `glass`), so the role resolves + * straight from the pointer hit; commit writes `node.slots[slotId]`. + */ +function resolveWindowRole(args: PaintResolveArgs): string | null { + const slotId = (args.hitObject?.userData as { slotId?: string | null } | undefined)?.slotId + return typeof slotId === 'string' ? slotId : null +} + +export const windowPaint = createSlotPaintCapability({ + resolveRole: resolveWindowRole, + applyPreview: previewSlotByUserData, +}) diff --git a/packages/nodes/src/window/slots.ts b/packages/nodes/src/window/slots.ts new file mode 100644 index 000000000..ad7829b0d --- /dev/null +++ b/packages/nodes/src/window/slots.ts @@ -0,0 +1,16 @@ +import type { SlotDeclaration } from '@pascal-app/core' + +export type WindowSlotId = 'frame' | 'glass' + +// Picker swatches. Rendering falls back to the live frame/glass defaults (which +// already track shading + theme), so these are just the indicator colours. +const FRAME_DEFAULT = '#f2f0ed' +const GLASS_DEFAULT = '#87ceeb' + +/** A window exposes two paintable slots: the joinery frame and the glass. */ +export function windowSlots(): SlotDeclaration[] { + return [ + { slotId: 'frame', label: 'Frame', default: FRAME_DEFAULT }, + { slotId: 'glass', label: 'Glass', default: GLASS_DEFAULT }, + ] +} diff --git a/packages/viewer/src/systems/door/door-system.tsx b/packages/viewer/src/systems/door/door-system.tsx index 2a93b9265..86c9587be 100644 --- a/packages/viewer/src/systems/door/door-system.tsx +++ b/packages/viewer/src/systems/door/door-system.tsx @@ -5,6 +5,8 @@ import { DoorNode as DoorNodeSchema, getDoorRenderOpenAmount, getEffectiveNode, + type SceneMaterial, + type SceneMaterialId, sceneRegistry, useInteractive, useLiveNodeOverrides, @@ -14,9 +16,12 @@ import { useFrame } from '@react-three/fiber' import { useEffect, useRef } from 'react' import * as THREE from 'three' import { + type ColorPreset, createSurfaceRoleMaterial, glassMaterial as defaultGlassMaterial, baseMaterial as getBaseMaterial, + type RenderShading, + resolveMaterialRef, } from '../../lib/materials' import useViewer from '../../store/use-viewer' @@ -26,6 +31,12 @@ const defaultRevealMaterial = new THREE.MeshBasicMaterial({ color: '#7f766c' }) let baseMaterial = getBaseMaterial() let revealMaterial: THREE.Material = defaultRevealMaterial let glassMaterial: THREE.Material = defaultGlassMaterial +// Per-frame viewer state, captured so the per-node mesh builder (which runs +// outside React) can resolve each door's slot materials. +let currentShading: RenderShading = 'rendered' +let currentTextures = true +let currentColorPreset: ColorPreset = 'clay' +let currentSceneMaterials: Record | undefined const DOOR_RENDER_DEFAULTS = DoorNodeSchema.parse({ id: 'door_render_default' }) const MAX_DOOR_REBUILDS_PER_FRAME = 16 @@ -50,6 +61,7 @@ export const DoorSystem = () => { const shading = useViewer((state) => state.shading) const textures = useViewer((state) => state.textures) const colorPreset = useViewer((state) => state.colorPreset) + const sceneMaterials = useScene((state) => state.materials) const materialRevisionRef = useRef(null) // Subscribe so an override-only update (no scene write) still re-runs // the component, letting the gate below pick up the latest dirtyNodes @@ -75,12 +87,27 @@ export const DoorSystem = () => { } }) + // Editing a scene material a door slot references must rebuild that door + // (door meshes are built by this system, not ). + useEffect(() => { + const nodes = useScene.getState().nodes + for (const node of Object.values(nodes)) { + if (node?.type !== 'door') continue + if (!nodeReferencesSceneMaterial(node)) continue + useScene.getState().dirtyNodes.add(node.id as AnyNodeId) + } + }, [sceneMaterials]) + useFrame(() => { if (dirtyNodes.size === 0) return const frameJoineryMaterial = createSurfaceRoleMaterial('joinery', colorPreset) baseMaterial = textures ? getBaseMaterial(shading) : frameJoineryMaterial revealMaterial = textures ? defaultRevealMaterial : frameJoineryMaterial glassMaterial = textures ? defaultGlassMaterial : frameJoineryMaterial + currentShading = shading + currentTextures = textures + currentColorPreset = colorPreset + currentSceneMaterials = sceneMaterials const nodes = useScene.getState().nodes const dirtyDoorIds: AnyNodeId[] = [] @@ -134,6 +161,40 @@ export const DoorSystem = () => { return null } +// A door exposes two slots: `panel` (the door body — frame casing + leaf, all +// built with `baseMaterial`) and `glass`. The reveal (opening depth) is left on +// its own material and isn't painted. Tag each mesh by which material it got. +function tagDoorSlot(mesh: THREE.Mesh): THREE.Mesh { + if (mesh.material === glassMaterial) mesh.userData.slotId = 'glass' + else if (mesh.material === baseMaterial) mesh.userData.slotId = 'panel' + return mesh +} + +function nodeReferencesSceneMaterial(node: { slots?: Record }): boolean { + const slots = node.slots + if (!slots) return false + for (const ref of Object.values(slots)) { + if (typeof ref === 'string' && ref.startsWith('scene:')) return true + } + return false +} + +function doorSlotDefault(slotId: 'panel' | 'glass'): THREE.Material { + if (!currentTextures) return createSurfaceRoleMaterial('joinery', currentColorPreset) + return slotId === 'glass' ? defaultGlassMaterial : getBaseMaterial(currentShading) +} + +// Resolve a door's slot to a material: the `node.slots` override (colored mode +// only) → the body/glass default. Textures-off ignores overrides — the +// monochrome escape hatch. +function resolveDoorSlotMaterial(node: DoorNode, slotId: 'panel' | 'glass'): THREE.Material { + const fallback = doorSlotDefault(slotId) + if (!currentTextures) return fallback + const ref = node.slots?.[slotId] + if (!ref) return fallback + return resolveMaterialRef(ref, currentSceneMaterials, currentShading) ?? fallback +} + function addBox( parent: THREE.Object3D, material: THREE.Material, @@ -146,6 +207,7 @@ function addBox( ) { const m = new THREE.Mesh(new THREE.BoxGeometry(w, h, d), material) m.position.set(x, y, z) + tagDoorSlot(m) parent.add(m) } @@ -163,6 +225,7 @@ function addRotatedBox( const m = new THREE.Mesh(new THREE.BoxGeometry(w, h, d), material) m.position.set(x, y, z) m.rotation.y = rotationY + tagDoorSlot(m) parent.add(m) } @@ -180,6 +243,7 @@ function addBoxWithRotation( const m = new THREE.Mesh(new THREE.BoxGeometry(w, h, d), material) m.position.set(x, y, z) m.rotation.set(rotation[0], rotation[1], rotation[2]) + tagDoorSlot(m) parent.add(m) } @@ -196,6 +260,7 @@ function addShape( }) geometry.translate(0, 0, -depth / 2) const mesh = new THREE.Mesh(geometry, material) + tagDoorSlot(mesh) parent.add(mesh) } @@ -215,6 +280,7 @@ function addShapeAt( }) geometry.translate(x, y, z - depth / 2) const mesh = new THREE.Mesh(geometry, material) + tagDoorSlot(mesh) parent.add(mesh) } @@ -1968,6 +2034,12 @@ function updateDoorMesh(rawNode: DoorNode, mesh: THREE.Mesh) { mesh.remove(child) } + // Point the builder-facing body/glass materials at this door's slot overrides + // for the duration of its build (recomputed per node, so the next door resets + // cleanly without a restore). Reveal keeps its own material. + baseMaterial = resolveDoorSlotMaterial(node, 'panel') + glassMaterial = resolveDoorSlotMaterial(node, 'glass') + const { width, height, diff --git a/packages/viewer/src/systems/window/window-system.tsx b/packages/viewer/src/systems/window/window-system.tsx index 6f953877e..e49101f0d 100644 --- a/packages/viewer/src/systems/window/window-system.tsx +++ b/packages/viewer/src/systems/window/window-system.tsx @@ -1,6 +1,8 @@ import { type AnyNodeId, getEffectiveNode, + type SceneMaterial, + type SceneMaterialId, sceneRegistry, useInteractive, useLiveNodeOverrides, @@ -11,9 +13,12 @@ import { useFrame } from '@react-three/fiber' import { useEffect, useRef } from 'react' import * as THREE from 'three' import { + type ColorPreset, createSurfaceRoleMaterial, glassMaterial as defaultGlassMaterial, baseMaterial as getBaseMaterial, + type RenderShading, + resolveMaterialRef, } from '../../lib/materials' import useViewer from '../../store/use-viewer' @@ -21,6 +26,12 @@ import useViewer from '../../store/use-viewer' const hitboxMaterial = new THREE.MeshBasicMaterial({ visible: false }) let baseMaterial = getBaseMaterial() let glassMaterial: THREE.Material = defaultGlassMaterial +// Per-frame viewer state, captured so the per-node mesh builder (which runs +// outside React) can resolve each window's slot materials. +let currentShading: RenderShading = 'rendered' +let currentTextures = true +let currentColorPreset: ColorPreset = 'clay' +let currentSceneMaterials: Record | undefined export const CASEMENT_WINDOW_SASH_NAME = 'casement-window-sash' export const FRENCH_CASEMENT_LEFT_SASH_NAME = 'french-casement-left-sash' export const FRENCH_CASEMENT_RIGHT_SASH_NAME = 'french-casement-right-sash' @@ -42,6 +53,7 @@ export const WindowSystem = () => { const shading = useViewer((state) => state.shading) const textures = useViewer((state) => state.textures) const colorPreset = useViewer((state) => state.colorPreset) + const sceneMaterials = useScene((state) => state.materials) const materialRevisionRef = useRef(null) // Subscribe so override-only updates re-run this component. Mirrors // WallSystem + DoorSystem. @@ -67,6 +79,18 @@ export const WindowSystem = () => { } }) + // Editing a scene material a window slot references must rebuild that window + // (window meshes are built by this system, not , so its + // scene-material re-dirty doesn't cover them). + useEffect(() => { + const nodes = useScene.getState().nodes + for (const node of Object.values(nodes)) { + if (node?.type !== 'window') continue + if (!nodeReferencesSceneMaterial(node)) continue + useScene.getState().dirtyNodes.add(node.id as AnyNodeId) + } + }, [sceneMaterials]) + useFrame(() => { if (dirtyNodes.size === 0) return baseMaterial = textures @@ -75,6 +99,10 @@ export const WindowSystem = () => { glassMaterial = textures ? defaultGlassMaterial : createSurfaceRoleMaterial('glazing', colorPreset) + currentShading = shading + currentTextures = textures + currentColorPreset = colorPreset + currentSceneMaterials = sceneMaterials const nodes = useScene.getState().nodes const dirtyWindowIds: AnyNodeId[] = [] @@ -128,6 +156,46 @@ export const WindowSystem = () => { return null } +// A window exposes two slots: `frame` (every joinery member) and `glass`. The +// builders pass `baseMaterial` / `glassMaterial`, so tag each mesh by which one +// it got — that's what `(nodeId, slotId)` paint resolves against. +function tagWindowSlot(mesh: THREE.Mesh): THREE.Mesh { + if (mesh.material === glassMaterial) mesh.userData.slotId = 'glass' + else if (mesh.material === baseMaterial) mesh.userData.slotId = 'frame' + return mesh +} + +function nodeReferencesSceneMaterial(node: { slots?: Record }): boolean { + const slots = node.slots + if (!slots) return false + for (const ref of Object.values(slots)) { + if (typeof ref === 'string' && ref.startsWith('scene:')) return true + } + return false +} + +function windowSlotDefault(slotId: 'frame' | 'glass'): THREE.Material { + if (slotId === 'glass') { + return currentTextures + ? defaultGlassMaterial + : createSurfaceRoleMaterial('glazing', currentColorPreset) + } + return currentTextures + ? getBaseMaterial(currentShading) + : createSurfaceRoleMaterial('joinery', currentColorPreset) +} + +// Resolve a window's slot to a material: the `node.slots` override (colored mode +// only) → the role/base default. Textures-off ignores overrides — the monochrome +// escape hatch. +function resolveWindowSlotMaterial(node: WindowNode, slotId: 'frame' | 'glass'): THREE.Material { + const fallback = windowSlotDefault(slotId) + if (!currentTextures) return fallback + const ref = node.slots?.[slotId] + if (!ref) return fallback + return resolveMaterialRef(ref, currentSceneMaterials, currentShading) ?? fallback +} + function addBox( parent: THREE.Object3D, material: THREE.Material, @@ -140,6 +208,7 @@ function addBox( ) { const m = new THREE.Mesh(new THREE.BoxGeometry(w, h, d), material) m.position.set(x, y, z) + tagWindowSlot(m) parent.add(m) } @@ -157,6 +226,7 @@ function addShape( }) geometry.translate(0, 0, -depth / 2 + z) const mesh = new THREE.Mesh(geometry, material) + tagWindowSlot(mesh) parent.add(mesh) } @@ -3170,6 +3240,12 @@ function updateWindowMesh(node: WindowNode, mesh: THREE.Mesh) { mesh.remove(child) } + // Point the builder-facing frame/glass materials at this window's slot + // overrides for the duration of its build (recomputed per node, so the next + // window resets cleanly without a restore). + baseMaterial = resolveWindowSlotMaterial(node, 'frame') + glassMaterial = resolveWindowSlotMaterial(node, 'glass') + const { width, height, From cebb29460d1ee6318b4b84a6f892e6d0b7fada31 Mon Sep 17 00:00:00 2001 From: Wassim SAMAD Date: Wed, 17 Jun 2026 09:10:43 -0400 Subject: [PATCH 4/9] fix(paint-slots): make window/door paint hits land on the tagged children MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The window/door root is an invisible hitbox the system gives full-depth BoxGeometry; its front face intercepted every paint/hover ray, so the hit resolved to the hitbox (no slotId) → role null → paint silently disabled. Disable the hitbox's own raycast in the visual path so R3F's recursive intersect returns the tagged frame/glass (panel/glass) children instead; selection still works because those child hits bubble to the root's event handlers. Restored to the default raycast each build, and kept for 'opening' windows/doors (no visuals to paint, still need a selectable hitbox). The 'cutout' child is visible=false so the raycaster already skips it. Co-Authored-By: Claude Opus 4.8 (1M context) --- packages/viewer/src/systems/door/door-system.tsx | 9 +++++++++ packages/viewer/src/systems/window/window-system.tsx | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/packages/viewer/src/systems/door/door-system.tsx b/packages/viewer/src/systems/door/door-system.tsx index 86c9587be..d261cb80e 100644 --- a/packages/viewer/src/systems/door/door-system.tsx +++ b/packages/viewer/src/systems/door/door-system.tsx @@ -27,6 +27,8 @@ import useViewer from '../../store/use-viewer' // Invisible material for root mesh — used as selection hitbox only const hitboxMaterial = new THREE.MeshBasicMaterial({ visible: false }) +// Disables a mesh's own raycast so its children become the hit targets. +const noopHitboxRaycast: THREE.Mesh['raycast'] = () => {} const defaultRevealMaterial = new THREE.MeshBasicMaterial({ color: '#7f766c' }) let baseMaterial = getBaseMaterial() let revealMaterial: THREE.Material = defaultRevealMaterial @@ -2022,6 +2024,10 @@ function updateDoorMesh(rawNode: DoorNode, mesh: THREE.Mesh) { mesh.geometry.dispose() mesh.geometry = new THREE.BoxGeometry(node.width, node.height, node.frameDepth) mesh.material = hitboxMaterial + // Default (selectable) hitbox raycast — restored each build; the visual path + // below disables it so the tagged panel/glass children are the hit targets + // (otherwise the full-depth invisible box intercepts every paint/hover ray). + mesh.raycast = THREE.Mesh.prototype.raycast // Sync transform from node (React may lag behind the system by a frame during drag) mesh.position.set(node.position[0], node.position[1], node.position[2]) @@ -2077,6 +2083,9 @@ function updateDoorMesh(rawNode: DoorNode, mesh: THREE.Mesh) { return } + // Visuals exist: let the tagged children receive paint/hover/selection rays. + mesh.raycast = noopHitboxRaycast + const insideWidth = width - 2 * frameThickness const leafH = height - frameThickness // only top frame const leafDepth = 0.04 diff --git a/packages/viewer/src/systems/window/window-system.tsx b/packages/viewer/src/systems/window/window-system.tsx index e49101f0d..feed9e731 100644 --- a/packages/viewer/src/systems/window/window-system.tsx +++ b/packages/viewer/src/systems/window/window-system.tsx @@ -24,6 +24,8 @@ import useViewer from '../../store/use-viewer' // Invisible material for root mesh — used as selection hitbox only const hitboxMaterial = new THREE.MeshBasicMaterial({ visible: false }) +// Disables a mesh's own raycast so its children become the hit targets. +const noopHitboxRaycast: THREE.Mesh['raycast'] = () => {} let baseMaterial = getBaseMaterial() let glassMaterial: THREE.Material = defaultGlassMaterial // Per-frame viewer state, captured so the per-node mesh builder (which runs @@ -3228,6 +3230,10 @@ function updateWindowMesh(node: WindowNode, mesh: THREE.Mesh) { mesh.geometry.dispose() mesh.geometry = new THREE.BoxGeometry(node.width, node.height, node.frameDepth) mesh.material = hitboxMaterial + // Default (selectable) hitbox raycast — restored each build; the visual path + // below disables it so the tagged frame/glass children are the hit targets + // (otherwise the full-depth invisible box intercepts every paint/hover ray). + mesh.raycast = THREE.Mesh.prototype.raycast // Sync transform from node (React may lag behind the system by a frame during drag) mesh.position.set(node.position[0], node.position[1], node.position[2]) @@ -3268,6 +3274,9 @@ function updateWindowMesh(node: WindowNode, mesh: THREE.Mesh) { return } + // Visuals exist: let the tagged children receive paint/hover/selection rays. + mesh.raycast = noopHitboxRaycast + if (windowType === 'sliding') { addSlidingWindowVisuals(node, mesh) syncWindowCutout(node, mesh) From 531dbb6e68e21f240fa1c517ea2f2f0c14835279 Mon Sep 17 00:00:00 2001 From: Wassim SAMAD Date: Wed, 17 Jun 2026 09:36:58 -0400 Subject: [PATCH 5/9] perf(post-processing): don't rebuild the pipeline on hover + temp paint debug logs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - post-processing: hoverHighlightMode was a dependency of the pipeline-build effect, so every hover rebuilt the entire pipeline. The hover style is already pushed to uniforms in a separate effect, so the rebuild was pure waste — removed it from the deps (and the build log). - selection-manager: temporary [paint-debug] logs for window/door hover to trace why their paint dispatch drops (to be removed once diagnosed). Co-Authored-By: Claude Opus 4.8 (1M context) --- .../components/editor/selection-manager.tsx | 24 +++++++++++++++++++ .../src/components/viewer/post-processing.tsx | 6 +++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/packages/editor/src/components/editor/selection-manager.tsx b/packages/editor/src/components/editor/selection-manager.tsx index ffaf5aa84..a7b280953 100644 --- a/packages/editor/src/components/editor/selection-manager.tsx +++ b/packages/editor/src/components/editor/selection-manager.tsx @@ -871,6 +871,14 @@ export const SelectionManager = () => { const activePaintMaterial = resolveActivePaintMaterial() const node = event.node + // TEMP paint debug + if (node.type === 'window' || node.type === 'door') { + // biome-ignore lint/suspicious/noConsole: temporary paint diagnostics + console.log('[paint-debug] event arrived', node.type, { + inLevel: isNodeInCurrentLevel(node), + }) + } + if (!isNodeInCurrentLevel(node)) return null // The eraser clears a surface back to its default by painting with an @@ -898,6 +906,18 @@ export const SelectionManager = () => { // roof / stair / single-surface arms below stay until they // migrate too. const paintCap = nodeRegistry.get(node.type)?.capabilities?.paint + // TEMP paint debug + if (node.type === 'window' || node.type === 'door') { + const ho = getEventObject(event) + // biome-ignore lint/suspicious/noConsole: temporary paint diagnostics + console.log('[paint-debug] getPaintInteraction', node.type, { + hasPaintCap: !!paintCap, + hitObjName: ho?.name, + hitSlotId: (ho?.userData as { slotId?: string } | undefined)?.slotId, + eventObjName: event.nativeEvent.object?.name, + paintEnabled, + }) + } if (paintCap) { const materialIndex = getIntersectionMaterialIndex(getEventObject(event), event.faceIndex) const role = paintCap.resolveRole({ @@ -908,6 +928,10 @@ export const SelectionManager = () => { hitObjectName: event.nativeEvent.object?.name, hitObject: getEventObject(event), }) + if (node.type === 'window' || node.type === 'door') { + // biome-ignore lint/suspicious/noConsole: temporary paint diagnostics + console.log('[paint-debug] resolved role', node.type, role) + } const compatible = role !== null && paintEnabled return { key: `${node.type}:${node.id}:${role ?? 'unsupported'}:${eraser ? 'erase' : 'paint'}`, diff --git a/packages/viewer/src/components/viewer/post-processing.tsx b/packages/viewer/src/components/viewer/post-processing.tsx index 67645cf5b..301ccec4e 100644 --- a/packages/viewer/src/components/viewer/post-processing.tsx +++ b/packages/viewer/src/components/viewer/post-processing.tsx @@ -280,7 +280,6 @@ const PostProcessingPasses = ({ denoise: denoiseEnabled, outline: outlineEnabled, perfDisable, - hoverHighlightMode, projectId, shading, rendererCtor: (renderer as any).constructor?.name, @@ -487,9 +486,12 @@ const PostProcessingPasses = ({ renderPipelineRef.current = null } }, [ + // NOTE: hoverHighlightMode intentionally excluded — the hover style is + // pushed to uniforms in a separate effect, so a hover must NOT rebuild the + // whole pipeline. The uniform refs below are stable (useMemo), so they + // never trigger a rebuild either. camera, hoverHiddenColor, - hoverHighlightMode, hoverPulseMix, hoverStrength, hoverVisibleColor, From c3bd065f2f98ee7b365b8cb77b5249336b81697e Mon Sep 17 00:00:00 2001 From: Wassim SAMAD Date: Wed, 17 Jun 2026 09:42:48 -0400 Subject: [PATCH 6/9] fix(paint-slots): disable the CSG cutout's raycast so window/door paint hits the slots MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The real interceptor was the 'cutout' mesh, not the hitbox: it's a 1m-deep CSG helper whose front face sits 0.5m proud of the glass, and current three.js raycasts invisible meshes — so every paint/hover ray resolved to 'cutout' (no slotId → role null). Disable its raycast; combined with the hitbox noop, paint/hover rays now land on the tagged frame/glass (panel/glass) children. Co-Authored-By: Claude Opus 4.8 (1M context) --- packages/viewer/src/systems/door/door-system.tsx | 4 ++++ packages/viewer/src/systems/window/window-system.tsx | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/packages/viewer/src/systems/door/door-system.tsx b/packages/viewer/src/systems/door/door-system.tsx index d261cb80e..257798e33 100644 --- a/packages/viewer/src/systems/door/door-system.tsx +++ b/packages/viewer/src/systems/door/door-system.tsx @@ -2412,6 +2412,10 @@ function syncDoorCutout(node: DoorNode, mesh: THREE.Mesh) { if (!cutout) { cutout = new THREE.Mesh() cutout.name = 'cutout' + // The cutout is a 1m-deep CSG helper for the wall hole — never interactive. + // three.js raycasts invisible meshes, so without this its front face (0.5m + // proud of the door) intercepts every paint/hover ray. + cutout.raycast = noopHitboxRaycast mesh.add(cutout) } cutout.geometry.dispose() diff --git a/packages/viewer/src/systems/window/window-system.tsx b/packages/viewer/src/systems/window/window-system.tsx index feed9e731..a45f4f121 100644 --- a/packages/viewer/src/systems/window/window-system.tsx +++ b/packages/viewer/src/systems/window/window-system.tsx @@ -3500,6 +3500,10 @@ function syncWindowCutout(node: WindowNode, mesh: THREE.Mesh) { if (!cutout) { cutout = new THREE.Mesh() cutout.name = 'cutout' + // The cutout is a 1m-deep CSG helper for the wall hole — never interactive. + // three.js raycasts invisible meshes, so without this its front face (0.5m + // proud of the glass) intercepts every paint/hover ray. + cutout.raycast = noopHitboxRaycast mesh.add(cutout) } cutout.geometry.dispose() From 8aa179e9cb7b94fc4e45a048c23c20eb62ff4037 Mon Sep 17 00:00:00 2001 From: Wassim SAMAD Date: Wed, 17 Jun 2026 14:01:37 -0400 Subject: [PATCH 7/9] feat(paint-slots): per-part paint for windows + doors, chrome/brass, world-scale UVs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Builds on the explicit per-mesh slot tagging (currentDoorSlot/currentWindowSlot): - Per-part painting: door = panel/frame/glass/hardware, window = frame/glass, each independently paintable. The recessed door/window body sits behind the wall, so the proud invisible cutout wins the scene raycast over the wall and the shared resolveSlotByReRaycast() re-raycasts the kind's own subtree to pick the exact part under the cursor (panel↔frame↔glass↔hardware). Hover tracks the cursor via a re-eval (idempotent, no flicker). - Door frame is its own slot (separate frameMaterial); hardware = new flat 'metal-chrome'. - Library defaults (generic): panel/frame -> library:preset-softwhite, glass -> library:preset-glass (flipped preset-glass to FrontSide — DoubleSide poisons the WebGPU MRT pass; it's the only glass we use). - Catalog: add flat (non-PBR) 'metal-chrome' + 'metal-brass'; drop metal metalness 1 -> 0.6 so metals are lit by existing lights (no env needed). - World-scale UVs (1 unit = 1m) on door/window box meshes via shared box-uv.ts, so finishes tile at real-world scale instead of stretching. - PaintResolveArgs gains an optional for subtree re-raycasting. Co-Authored-By: Claude Opus 4.8 (1M context) --- packages/core/src/material-library.ts | 80 ++++- packages/core/src/registry/types.ts | 10 +- .../components/editor/selection-manager.tsx | 32 +- packages/nodes/src/door/paint.ts | 21 +- packages/nodes/src/door/slots.ts | 20 +- packages/nodes/src/shared/slot-paint.ts | 27 +- packages/nodes/src/window/paint.ts | 21 +- packages/nodes/src/window/slots.ts | 4 +- packages/viewer/src/lib/box-uv.ts | 40 +++ .../viewer/src/systems/door/door-system.tsx | 293 +++++++++++++----- .../src/systems/window/window-system.tsx | 156 ++++++++-- 11 files changed, 544 insertions(+), 160 deletions(-) create mode 100644 packages/viewer/src/lib/box-uv.ts diff --git a/packages/core/src/material-library.ts b/packages/core/src/material-library.ts index 88b7068b6..eedf63e4c 100644 --- a/packages/core/src/material-library.ts +++ b/packages/core/src/material-library.ts @@ -3442,7 +3442,9 @@ export const MATERIAL_CATALOG: MaterialCatalogItem[] = [ bumpScale: 1, emissiveColor: '#000000', aoMapIntensity: 1, - side: 2, + // FrontSide — DoubleSide on a NodeMaterial poisons the WebGPU MRT scene + // pass (window/door glass relies on this). It's the only glass we use. + side: 0, opacity: 0.3, lightMapIntensity: 1, }, @@ -3953,7 +3955,7 @@ export const MATERIAL_CATALOG: MaterialCatalogItem[] = [ mapProperties: { color: '#ffffff', roughness: 0.4, - metalness: 1, + metalness: 0.6, repeatX: 1, repeatY: 1, rotation: 0, @@ -3992,7 +3994,7 @@ export const MATERIAL_CATALOG: MaterialCatalogItem[] = [ mapProperties: { color: '#ffffff', roughness: 0.3, - metalness: 1, + metalness: 0.6, repeatX: 1, repeatY: 1, rotation: 0, @@ -4033,7 +4035,77 @@ export const MATERIAL_CATALOG: MaterialCatalogItem[] = [ mapProperties: { color: '#ffffff', roughness: 0.45, - metalness: 1, + metalness: 0.6, + repeatX: 1, + repeatY: 1, + rotation: 0, + wrapS: 'Repeat', + wrapT: 'Repeat', + normalScaleX: 1, + normalScaleY: 1, + emissiveIntensity: 1, + displacementScale: 0, + transparent: false, + flipY: false, + bumpScale: 1, + emissiveColor: '#000000', + aoMapIntensity: 1, + side: 0, + opacity: 1, + lightMapIntensity: 1, + }, + }, + }, + { + // Parameter-only metal (no texture maps) — a worked example of a non-PBR + // catalog finish driven purely by three.js material settings. + id: 'metal-brass', + label: 'Brass', + category: 'metal', + surfaces: ['furniture', 'wall'], + description: 'Polished brass (flat metal, no maps)', + previewColor: '#b08d57', + preset: { + maps: {}, + mapProperties: { + color: '#b08d57', + roughness: 0.35, + metalness: 0.9, + repeatX: 1, + repeatY: 1, + rotation: 0, + wrapS: 'Repeat', + wrapT: 'Repeat', + normalScaleX: 1, + normalScaleY: 1, + emissiveIntensity: 1, + displacementScale: 0, + transparent: false, + flipY: false, + bumpScale: 1, + emissiveColor: '#000000', + aoMapIntensity: 1, + side: 0, + opacity: 1, + lightMapIntensity: 1, + }, + }, + }, + { + // Parameter-only chrome (no texture maps) — moderate metalness so it reads + // as bright metal under direct/ambient light without needing an env map. + id: 'metal-chrome', + label: 'Chrome', + category: 'metal', + surfaces: ['furniture', 'wall'], + description: 'Polished chrome (flat metal, no maps)', + previewColor: '#c8ccce', + preset: { + maps: {}, + mapProperties: { + color: '#c8ccce', + roughness: 0.2, + metalness: 0.6, repeatX: 1, repeatY: 1, rotation: 0, diff --git a/packages/core/src/registry/types.ts b/packages/core/src/registry/types.ts index bbeca31ad..826f1332e 100644 --- a/packages/core/src/registry/types.ts +++ b/packages/core/src/registry/types.ts @@ -1,5 +1,5 @@ import type { ComponentType } from 'react' -import type { BufferGeometry, Object3D } from 'three' +import type { BufferGeometry, Object3D, Ray } from 'three' import type { ZodObject, z } from 'zod' import type { MaterialSchema } from '../schema/material' import type { SceneMaterial, SceneMaterialId } from '../schema/scene-material' @@ -1212,6 +1212,14 @@ export type PaintResolveArgs = { hitObjectName?: string /** Optional: the three.js object that received the pointer hit. Items read userData.slotId off it. */ hitObject?: Object3D + /** + * Optional: the pointer's world ray, so a kind can re-raycast its OWN subtree + * to pick the precise sub-mesh under the cursor — independent of what the + * shared scene raycast hit first. Door/window use this: their opening proxy + * (a proud invisible cutout) wins the scene raycast over the wall in front of + * the recessed door body, then they re-raycast their parts to find the slot. + */ + ray?: Ray } export type PaintPatchArgs = { diff --git a/packages/editor/src/components/editor/selection-manager.tsx b/packages/editor/src/components/editor/selection-manager.tsx index a7b280953..e6cc48c11 100644 --- a/packages/editor/src/components/editor/selection-manager.tsx +++ b/packages/editor/src/components/editor/selection-manager.tsx @@ -871,14 +871,6 @@ export const SelectionManager = () => { const activePaintMaterial = resolveActivePaintMaterial() const node = event.node - // TEMP paint debug - if (node.type === 'window' || node.type === 'door') { - // biome-ignore lint/suspicious/noConsole: temporary paint diagnostics - console.log('[paint-debug] event arrived', node.type, { - inLevel: isNodeInCurrentLevel(node), - }) - } - if (!isNodeInCurrentLevel(node)) return null // The eraser clears a surface back to its default by painting with an @@ -906,18 +898,6 @@ export const SelectionManager = () => { // roof / stair / single-surface arms below stay until they // migrate too. const paintCap = nodeRegistry.get(node.type)?.capabilities?.paint - // TEMP paint debug - if (node.type === 'window' || node.type === 'door') { - const ho = getEventObject(event) - // biome-ignore lint/suspicious/noConsole: temporary paint diagnostics - console.log('[paint-debug] getPaintInteraction', node.type, { - hasPaintCap: !!paintCap, - hitObjName: ho?.name, - hitSlotId: (ho?.userData as { slotId?: string } | undefined)?.slotId, - eventObjName: event.nativeEvent.object?.name, - paintEnabled, - }) - } if (paintCap) { const materialIndex = getIntersectionMaterialIndex(getEventObject(event), event.faceIndex) const role = paintCap.resolveRole({ @@ -927,11 +907,8 @@ export const SelectionManager = () => { localPosition: event.localPosition as readonly [number, number, number] | undefined, hitObjectName: event.nativeEvent.object?.name, hitObject: getEventObject(event), + ray: event.nativeEvent.ray, }) - if (node.type === 'window' || node.type === 'door') { - // biome-ignore lint/suspicious/noConsole: temporary paint diagnostics - console.log('[paint-debug] resolved role', node.type, role) - } const compatible = role !== null && paintEnabled return { key: `${node.type}:${node.id}:${role ?? 'unsupported'}:${eraser ? 'erase' : 'paint'}`, @@ -1209,6 +1186,11 @@ export const SelectionManager = () => { for (const type of subscribedKinds) { emitter.on(`${type}:enter` as any, onEnter as any) + // Re-evaluate on move so the hover preview tracks the cursor across a + // kind's sub-parts (door/window panel↔frame↔glass↔hardware, wall + // interior↔exterior) — not just on the initial enter. onEnter is + // idempotent (no-ops when the resolved part is unchanged). + emitter.on(`${type}:move` as any, onEnter as any) emitter.on(`${type}:leave` as any, onLeave as any) emitter.on(`${type}:click` as any, onClick as any) } @@ -1216,6 +1198,7 @@ export const SelectionManager = () => { return () => { for (const type of subscribedKinds) { emitter.off(`${type}:enter` as any, onEnter as any) + emitter.off(`${type}:move` as any, onEnter as any) emitter.off(`${type}:leave` as any, onLeave as any) emitter.off(`${type}:click` as any, onClick as any) } @@ -1576,6 +1559,7 @@ export const SelectionManager = () => { localPosition: event.localPosition as readonly [number, number, number] | undefined, hitObjectName: event.nativeEvent.object?.name, hitObject: getEventObject(event), + ray: event.nativeEvent.ray, }) if (role) { setSelectedMaterialTargetForNode(nodeToSelect, role as MaterialTargetRole) diff --git a/packages/nodes/src/door/paint.ts b/packages/nodes/src/door/paint.ts index b1d50f6a0..e236a5e38 100644 --- a/packages/nodes/src/door/paint.ts +++ b/packages/nodes/src/door/paint.ts @@ -1,17 +1,16 @@ -import type { PaintResolveArgs } from '@pascal-app/core' -import { createSlotPaintCapability, previewSlotByUserData } from '../shared/slot-paint' +import { + createSlotPaintCapability, + previewSlotByUserData, + resolveSlotByReRaycast, +} from '../shared/slot-paint' /** - * Door paint on the unified slot model. The door's viewer system tags each built - * mesh with `userData.slotId` (`panel` / `glass`), so the role resolves straight - * from the pointer hit; commit writes `node.slots[slotId]`. + * Door paint on the unified slot model. The door's opening proxy (a proud, + * invisible cutout) wins the shared scene raycast over the wall in front of the + * recessed door body, so `resolveSlotByReRaycast` re-raycasts the door's own + * subtree to find the part (panel / frame / glass / hardware) under the cursor. */ -function resolveDoorRole(args: PaintResolveArgs): string | null { - const slotId = (args.hitObject?.userData as { slotId?: string | null } | undefined)?.slotId - return typeof slotId === 'string' ? slotId : null -} - export const doorPaint = createSlotPaintCapability({ - resolveRole: resolveDoorRole, + resolveRole: resolveSlotByReRaycast, applyPreview: previewSlotByUserData, }) diff --git a/packages/nodes/src/door/slots.ts b/packages/nodes/src/door/slots.ts index 89de6c698..2e2218793 100644 --- a/packages/nodes/src/door/slots.ts +++ b/packages/nodes/src/door/slots.ts @@ -1,19 +1,25 @@ import type { SlotDeclaration } from '@pascal-app/core' -export type DoorSlotId = 'panel' | 'glass' +export type DoorSlotId = 'panel' | 'frame' | 'glass' | 'hardware' -// Picker swatches. Rendering falls back to the live body/glass defaults (which -// already track shading + theme), so these are just the indicator colours. -const PANEL_DEFAULT = '#f2f0ed' -const GLASS_DEFAULT = '#87ceeb' +// Picker swatches. Rendering falls back to the live body/glass/hardware defaults +// (which already track shading + theme), so these are just the indicator colours. +const PANEL_DEFAULT = 'library:preset-softwhite' +const FRAME_DEFAULT = 'library:preset-softwhite' +const GLASS_DEFAULT = 'library:preset-glass' +// Chrome — a flat (non-PBR) catalog metal finish. +const HARDWARE_DEFAULT = 'library:metal-chrome' /** - * A door exposes two paintable slots: `panel` (the door body — frame casing + - * leaf) and `glass`. The opening reveal keeps its own material. + * A door exposes four paintable slots: `panel` (leaf faces), `frame`, `glass`, + * and `hardware` (handle / hinges / closer / panic bar). The opening reveal + * keeps its own material. */ export function doorSlots(): SlotDeclaration[] { return [ { slotId: 'panel', label: 'Panel', default: PANEL_DEFAULT }, + { slotId: 'frame', label: 'Frame', default: FRAME_DEFAULT }, { slotId: 'glass', label: 'Glass', default: GLASS_DEFAULT }, + { slotId: 'hardware', label: 'Hardware', default: HARDWARE_DEFAULT }, ] } diff --git a/packages/nodes/src/shared/slot-paint.ts b/packages/nodes/src/shared/slot-paint.ts index eb5949584..c2d24066f 100644 --- a/packages/nodes/src/shared/slot-paint.ts +++ b/packages/nodes/src/shared/slot-paint.ts @@ -9,11 +9,12 @@ import { parseMaterialRef, type SceneMaterial, type SceneMaterialId, + sceneRegistry, toSceneMaterialRef, useScene, } from '@pascal-app/core' import { createMaterial, createMaterialFromPresetRef, useViewer } from '@pascal-app/viewer' -import type { Material, Mesh, Object3D } from 'three' +import { type Material, type Mesh, type Object3D, Raycaster } from 'three' /** * Shared paint capability for procedural kinds on the unified slot model @@ -197,6 +198,30 @@ export function previewSlotByUserData(args: PaintPreviewArgs): (() => void) | nu } } +// Reused across calls — set from the pointer ray each time. +const subtreeRaycaster = new Raycaster() + +/** + * Resolve the slot for a kind whose paint hit lands on a proud opening proxy + * (door/window: a 1m-deep invisible cutout that wins the scene raycast over the + * wall in front of the recessed body) rather than the part itself. Re-raycasts + * the kind's OWN registered subtree (ignoring everything else) and returns the + * first tagged sub-mesh under the cursor; falls back to the direct hit's slot + * (e.g. a proud part the scene raycast hit directly). + */ +export function resolveSlotByReRaycast(args: PaintResolveArgs): string | null { + const direct = (args.hitObject?.userData as { slotId?: string } | undefined)?.slotId + if (typeof direct === 'string') return direct + const root = sceneRegistry.nodes.get(args.node.id as AnyNodeId) + if (!root || !args.ray) return null + subtreeRaycaster.ray.copy(args.ray) + for (const hit of subtreeRaycaster.intersectObject(root, true)) { + const slot = (hit.object.userData as { slotId?: string }).slotId + if (typeof slot === 'string') return slot + } + return null +} + export type SlotPaintConfig = { /** Resolve the slot id for a pointer hit (`null` = not paintable here). */ resolveRole: (args: PaintResolveArgs) => string | null diff --git a/packages/nodes/src/window/paint.ts b/packages/nodes/src/window/paint.ts index 471374eb4..ca5120d28 100644 --- a/packages/nodes/src/window/paint.ts +++ b/packages/nodes/src/window/paint.ts @@ -1,17 +1,16 @@ -import type { PaintResolveArgs } from '@pascal-app/core' -import { createSlotPaintCapability, previewSlotByUserData } from '../shared/slot-paint' +import { + createSlotPaintCapability, + previewSlotByUserData, + resolveSlotByReRaycast, +} from '../shared/slot-paint' /** - * Window paint on the unified slot model. The window's viewer system tags each - * built mesh with `userData.slotId` (`frame` / `glass`), so the role resolves - * straight from the pointer hit; commit writes `node.slots[slotId]`. + * Window paint on the unified slot model. The window's opening proxy (a proud, + * invisible cutout) wins the shared scene raycast over the wall in front of the + * recessed window, so `resolveSlotByReRaycast` re-raycasts the window's own + * subtree to find the part (frame / glass) under the cursor. */ -function resolveWindowRole(args: PaintResolveArgs): string | null { - const slotId = (args.hitObject?.userData as { slotId?: string | null } | undefined)?.slotId - return typeof slotId === 'string' ? slotId : null -} - export const windowPaint = createSlotPaintCapability({ - resolveRole: resolveWindowRole, + resolveRole: resolveSlotByReRaycast, applyPreview: previewSlotByUserData, }) diff --git a/packages/nodes/src/window/slots.ts b/packages/nodes/src/window/slots.ts index ad7829b0d..4067d4d49 100644 --- a/packages/nodes/src/window/slots.ts +++ b/packages/nodes/src/window/slots.ts @@ -4,8 +4,8 @@ export type WindowSlotId = 'frame' | 'glass' // Picker swatches. Rendering falls back to the live frame/glass defaults (which // already track shading + theme), so these are just the indicator colours. -const FRAME_DEFAULT = '#f2f0ed' -const GLASS_DEFAULT = '#87ceeb' +const FRAME_DEFAULT = 'library:preset-softwhite' +const GLASS_DEFAULT = 'library:preset-glass' /** A window exposes two paintable slots: the joinery frame and the glass. */ export function windowSlots(): SlotDeclaration[] { diff --git a/packages/viewer/src/lib/box-uv.ts b/packages/viewer/src/lib/box-uv.ts new file mode 100644 index 000000000..fe73d2721 --- /dev/null +++ b/packages/viewer/src/lib/box-uv.ts @@ -0,0 +1,40 @@ +import type { BoxGeometry } from 'three' + +/** + * Rewrite a default `BoxGeometry`'s UVs to world scale — 1 UV unit = 1 metre — + * so tiled finishes (with `repeat` in tiles-per-metre) render at a consistent + * real-world scale instead of stretching to fit each face. Matches the + * world-scale UV convention used by the procedural slab/wall geometry. + * + * three.js builds box faces in the fixed order [+X, -X, +Y, -Y, +Z, -Z], four + * verts each, with UVs spanning 0→1 across the face. Each face's two in-plane + * dimensions differ, so we scale U/V per face by that face's size in metres. + */ +export function applyWorldScaleBoxUVs( + geometry: BoxGeometry, + w: number, + h: number, + d: number, +): void { + const uv = geometry.getAttribute('uv') + if (!uv || uv.count < 24) return // non-default segmentation — leave as-is + + // [uScaleMetres, vScaleMetres] per face, in three's face order. + const faceScale: Array<[number, number]> = [ + [d, h], // +X + [d, h], // -X + [w, d], // +Y + [w, d], // -Y + [w, h], // +Z + [w, h], // -Z + ] + + for (let face = 0; face < 6; face += 1) { + const [us, vs] = faceScale[face]! + for (let v = 0; v < 4; v += 1) { + const i = face * 4 + v + uv.setXY(i, uv.getX(i) * us, uv.getY(i) * vs) + } + } + uv.needsUpdate = true +} diff --git a/packages/viewer/src/systems/door/door-system.tsx b/packages/viewer/src/systems/door/door-system.tsx index 257798e33..3342f4fd7 100644 --- a/packages/viewer/src/systems/door/door-system.tsx +++ b/packages/viewer/src/systems/door/door-system.tsx @@ -15,8 +15,10 @@ import { import { useFrame } from '@react-three/fiber' import { useEffect, useRef } from 'react' import * as THREE from 'three' +import { applyWorldScaleBoxUVs } from '../../lib/box-uv' import { type ColorPreset, + createDefaultMaterial, createSurfaceRoleMaterial, glassMaterial as defaultGlassMaterial, baseMaterial as getBaseMaterial, @@ -27,12 +29,24 @@ import useViewer from '../../store/use-viewer' // Invisible material for root mesh — used as selection hitbox only const hitboxMaterial = new THREE.MeshBasicMaterial({ visible: false }) -// Disables a mesh's own raycast so its children become the hit targets. -const noopHitboxRaycast: THREE.Mesh['raycast'] = () => {} const defaultRevealMaterial = new THREE.MeshBasicMaterial({ color: '#7f766c' }) +// Door hardware (handle / hinges / closer / panic bar) renders a catalog metal +// finish by default (chrome), separate from the door body. The flat material is +// only a fallback if the catalog ref ever fails to resolve. +const HARDWARE_DEFAULT_REF = 'library:metal-chrome' +// Door body defaults to a catalog colour (generic approach). Glass keeps the +// built-in FrontSide glass material — the catalog `preset-glass` is DoubleSide, +// which poisons the WebGPU MRT scene pass. +const PANEL_DEFAULT_REF = 'library:preset-softwhite' +const FRAME_DEFAULT_REF = 'library:preset-softwhite' +const GLASS_DEFAULT_REF = 'library:preset-glass' +const defaultHardwareMaterial = createDefaultMaterial('#3a3a3a', 0.4) let baseMaterial = getBaseMaterial() +let frameMaterial: THREE.Material = getBaseMaterial() let revealMaterial: THREE.Material = defaultRevealMaterial let glassMaterial: THREE.Material = defaultGlassMaterial +let hardwareMaterial: THREE.Material = defaultHardwareMaterial +let currentDoorSlot: string | undefined // Per-frame viewer state, captured so the per-node mesh builder (which runs // outside React) can resolve each door's slot materials. let currentShading: RenderShading = 'rendered' @@ -73,8 +87,10 @@ export const DoorSystem = () => { const joineryMaterial = createSurfaceRoleMaterial('joinery', colorPreset) baseMaterial = textures ? getBaseMaterial(shading) : joineryMaterial + frameMaterial = textures ? getBaseMaterial(shading) : joineryMaterial revealMaterial = textures ? defaultRevealMaterial : joineryMaterial glassMaterial = textures ? defaultGlassMaterial : joineryMaterial + hardwareMaterial = textures ? defaultHardwareMaterial : joineryMaterial useEffect(() => { const materialRevision = `${shading}:${textures ? 'textures' : 'solid'}:${colorPreset}` @@ -104,8 +120,10 @@ export const DoorSystem = () => { if (dirtyNodes.size === 0) return const frameJoineryMaterial = createSurfaceRoleMaterial('joinery', colorPreset) baseMaterial = textures ? getBaseMaterial(shading) : frameJoineryMaterial + frameMaterial = textures ? getBaseMaterial(shading) : frameJoineryMaterial revealMaterial = textures ? defaultRevealMaterial : frameJoineryMaterial glassMaterial = textures ? defaultGlassMaterial : frameJoineryMaterial + hardwareMaterial = textures ? defaultHardwareMaterial : frameJoineryMaterial currentShading = shading currentTextures = textures currentColorPreset = colorPreset @@ -163,12 +181,8 @@ export const DoorSystem = () => { return null } -// A door exposes two slots: `panel` (the door body — frame casing + leaf, all -// built with `baseMaterial`) and `glass`. The reveal (opening depth) is left on -// its own material and isn't painted. Tag each mesh by which material it got. function tagDoorSlot(mesh: THREE.Mesh): THREE.Mesh { - if (mesh.material === glassMaterial) mesh.userData.slotId = 'glass' - else if (mesh.material === baseMaterial) mesh.userData.slotId = 'panel' + mesh.userData.slotId = currentDoorSlot return mesh } @@ -181,15 +195,38 @@ function nodeReferencesSceneMaterial(node: { slots?: Record }): return false } -function doorSlotDefault(slotId: 'panel' | 'glass'): THREE.Material { +type DoorMaterialSlotId = 'panel' | 'frame' | 'glass' | 'hardware' + +function doorSlotDefault(slotId: DoorMaterialSlotId): THREE.Material { if (!currentTextures) return createSurfaceRoleMaterial('joinery', currentColorPreset) - return slotId === 'glass' ? defaultGlassMaterial : getBaseMaterial(currentShading) + if (slotId === 'glass') { + return ( + resolveMaterialRef(GLASS_DEFAULT_REF, currentSceneMaterials, currentShading) ?? + defaultGlassMaterial + ) + } + if (slotId === 'hardware') { + return ( + resolveMaterialRef(HARDWARE_DEFAULT_REF, currentSceneMaterials, currentShading) ?? + defaultHardwareMaterial + ) + } + if (slotId === 'frame') { + return ( + resolveMaterialRef(FRAME_DEFAULT_REF, currentSceneMaterials, currentShading) ?? + getBaseMaterial(currentShading) + ) + } + return ( + resolveMaterialRef(PANEL_DEFAULT_REF, currentSceneMaterials, currentShading) ?? + getBaseMaterial(currentShading) + ) } // Resolve a door's slot to a material: the `node.slots` override (colored mode -// only) → the body/glass default. Textures-off ignores overrides — the +// only) → the body/glass/hardware default. Textures-off ignores overrides — the // monochrome escape hatch. -function resolveDoorSlotMaterial(node: DoorNode, slotId: 'panel' | 'glass'): THREE.Material { +function resolveDoorSlotMaterial(node: DoorNode, slotId: DoorMaterialSlotId): THREE.Material { const fallback = doorSlotDefault(slotId) if (!currentTextures) return fallback const ref = node.slots?.[slotId] @@ -207,7 +244,9 @@ function addBox( y: number, z: number, ) { - const m = new THREE.Mesh(new THREE.BoxGeometry(w, h, d), material) + const geometry = new THREE.BoxGeometry(w, h, d) + applyWorldScaleBoxUVs(geometry, w, h, d) + const m = new THREE.Mesh(geometry, material) m.position.set(x, y, z) tagDoorSlot(m) parent.add(m) @@ -224,7 +263,9 @@ function addRotatedBox( z: number, rotationY: number, ) { - const m = new THREE.Mesh(new THREE.BoxGeometry(w, h, d), material) + const geometry = new THREE.BoxGeometry(w, h, d) + applyWorldScaleBoxUVs(geometry, w, h, d) + const m = new THREE.Mesh(geometry, material) m.position.set(x, y, z) m.rotation.y = rotationY tagDoorSlot(m) @@ -242,7 +283,9 @@ function addBoxWithRotation( z: number, rotation: [number, number, number], ) { - const m = new THREE.Mesh(new THREE.BoxGeometry(w, h, d), material) + const geometry = new THREE.BoxGeometry(w, h, d) + applyWorldScaleBoxUVs(geometry, w, h, d) + const m = new THREE.Mesh(geometry, material) m.position.set(x, y, z) m.rotation.set(rotation[0], rotation[1], rotation[2]) tagDoorSlot(m) @@ -825,6 +868,7 @@ function addLeafSegmentContent({ const cpX = contentPadding[0] const cpY = contentPadding[1] if (renderPerimeterFrame && shouldRenderFrame && cpY > 0) { + currentDoorSlot = 'panel' addLeafBox( baseMaterial, leafWidth, @@ -846,6 +890,7 @@ function addLeafSegmentContent({ } if (renderPerimeterFrame && shouldRenderFrame && cpX > 0) { const innerH = leafHeight - 2 * cpY + currentDoorSlot = 'panel' addLeafBox( baseMaterial, cpX, @@ -925,6 +970,7 @@ function addLeafSegmentContent({ if (seg.type !== 'empty') { cx = leafCenterX - contentW / 2 + currentDoorSlot = 'panel' for (let c = 0; c < numCols - 1; c++) { cx += colWidths[c]! const dividerLeft = cx @@ -962,6 +1008,7 @@ function addLeafSegmentContent({ const colX = colXCenters[c]! if (seg.type === 'glass') { + currentDoorSlot = 'glass' const glassDepth = Math.max(0.004, leafDepth * 0.15) const segmentLeft = colX - colW / 2 const segmentRight = colX + colW / 2 @@ -982,6 +1029,7 @@ function addLeafSegmentContent({ addLeafBox(glassMaterial, colW, segH, glassDepth, colX, segCenterY, 0) } } else if (seg.type === 'panel') { + currentDoorSlot = 'panel' const segmentLeft = colX - colW / 2 const segmentRight = colX + colW / 2 const outerPanelShape = @@ -1119,6 +1167,7 @@ function addDoorLeaf( const usesShapedLeafFrame = openingShape === 'rounded' || openingShape === 'arch' if (usesShapedLeafFrame && hasLeafContent) { + currentDoorSlot = 'panel' if (openingShape === 'rounded') { const roundedLeafShape = roundedBoundary ? createRoundedClippedLeafFrameShape( @@ -1209,6 +1258,7 @@ function addDoorLeaf( }) if (hasLeafContent && handle) { + currentDoorSlot = 'hardware' const handleY = handleHeight - doorHeight / 2 const faceZ = leafDepth / 2 const handleX = @@ -1216,20 +1266,21 @@ function addDoorLeaf( ? leafCenterX + leafWidth / 2 - 0.045 : leafCenterX - leafWidth / 2 + 0.045 - addLeafBox(baseMaterial, 0.028, 0.14, 0.01, handleX, handleY, faceZ + 0.005) - addLeafBox(baseMaterial, 0.022, 0.1, 0.035, handleX, handleY, faceZ + 0.025) + addLeafBox(hardwareMaterial, 0.028, 0.14, 0.01, handleX, handleY, faceZ + 0.005) + addLeafBox(hardwareMaterial, 0.022, 0.1, 0.035, handleX, handleY, faceZ + 0.025) if (handleBothSides) { - addLeafBox(baseMaterial, 0.028, 0.14, 0.01, handleX, handleY, -faceZ - 0.005) - addLeafBox(baseMaterial, 0.022, 0.1, 0.035, handleX, handleY, -faceZ - 0.025) + addLeafBox(hardwareMaterial, 0.028, 0.14, 0.01, handleX, handleY, -faceZ - 0.005) + addLeafBox(hardwareMaterial, 0.022, 0.1, 0.035, handleX, handleY, -faceZ - 0.025) } } if (hasLeafContent && doorCloser) { + currentDoorSlot = 'hardware' const closerY = leafCenterY + leafHeight / 2 - 0.04 - addLeafBox(baseMaterial, 0.28, 0.055, 0.055, leafCenterX, closerY, leafDepth / 2 + 0.03) + addLeafBox(hardwareMaterial, 0.28, 0.055, 0.055, leafCenterX, closerY, leafDepth / 2 + 0.03) addLeafBox( - baseMaterial, + hardwareMaterial, 0.14, 0.015, 0.015, @@ -1240,18 +1291,37 @@ function addDoorLeaf( } if (hasLeafContent && panicBar) { + currentDoorSlot = 'hardware' const barY = panicBarHeight - doorHeight / 2 - addLeafBox(baseMaterial, leafWidth * 0.72, 0.04, 0.055, leafCenterX, barY, leafDepth / 2 + 0.03) + addLeafBox( + hardwareMaterial, + leafWidth * 0.72, + 0.04, + 0.055, + leafCenterX, + barY, + leafDepth / 2 + 0.03, + ) } if (hasLeafContent) { + currentDoorSlot = 'hardware' const hingeMarkerX = hingeSide === 'right' ? hingeX - 0.012 : hingeX + 0.012 const hingeH = 0.1 const hingeW = 0.024 const hingeD = leafDepth + 0.016 - addBox(mesh, baseMaterial, hingeW, hingeH, hingeD, hingeMarkerX, leafBottom + 0.25, 0) - addBox(mesh, baseMaterial, hingeW, hingeH, hingeD, hingeMarkerX, (leafBottom + leafTop) / 2, 0) - addBox(mesh, baseMaterial, hingeW, hingeH, hingeD, hingeMarkerX, leafTop - 0.25, 0) + addBox(mesh, hardwareMaterial, hingeW, hingeH, hingeD, hingeMarkerX, leafBottom + 0.25, 0) + addBox( + mesh, + hardwareMaterial, + hingeW, + hingeH, + hingeD, + hingeMarkerX, + (leafBottom + leafTop) / 2, + 0, + ) + addBox(mesh, hardwareMaterial, hingeW, hingeH, hingeD, hingeMarkerX, leafTop - 0.25, 0) } } @@ -1290,9 +1360,10 @@ function addFoldingDoor( const panelLength = insideWidth / panelCount const foldAngle = Math.PI * 0.44 * foldAmount + currentDoorSlot = 'hardware' addBox( mesh, - baseMaterial, + hardwareMaterial, insideWidth, Math.min(frameThickness * 0.5, 0.025), Math.max(frameDepth * 0.45, 0.035), @@ -1312,6 +1383,7 @@ function addFoldingDoor( }) } + currentDoorSlot = undefined for (let index = 0; index < panelCount; index++) { const start = vertices[index]! const end = vertices[index + 1]! @@ -1359,6 +1431,7 @@ function addFoldingDoor( keepFrameWhenEmpty: true, }) + currentDoorSlot = undefined for (const point of [start, end]) { addBox( mesh, @@ -1375,9 +1448,10 @@ function addFoldingDoor( const handlePoint = vertices[vertices.length - 1]! const handleY = handleHeight - doorHeight / 2 + currentDoorSlot = 'hardware' addBox( mesh, - baseMaterial, + hardwareMaterial, 0.035, 0.16, leafDepth + 0.035, @@ -1387,7 +1461,7 @@ function addFoldingDoor( ) addBox( mesh, - baseMaterial, + hardwareMaterial, 0.035, 0.16, leafDepth + 0.035, @@ -1436,9 +1510,10 @@ function addPocketDoor( const handleY = handleHeight - doorHeight / 2 const handleX = leafCenterX - slideSign * (leafWidth / 2 - 0.055) + currentDoorSlot = 'hardware' addBox( mesh, - baseMaterial, + hardwareMaterial, insideWidth * 2, Math.min(frameThickness * 0.45, 0.024), Math.max(frameDepth * 0.38, 0.03), @@ -1446,6 +1521,7 @@ function addPocketDoor( topY - 0.018, 0, ) + currentDoorSlot = undefined addBox( mesh, revealMaterial, @@ -1487,8 +1563,27 @@ function addPocketDoor( segments, contentPadding, }) - addBox(mesh, baseMaterial, 0.03, 0.18, leafDepth + 0.03, handleX, handleY, leafDepth / 2 + 0.02) - addBox(mesh, baseMaterial, 0.03, 0.18, leafDepth + 0.03, handleX, handleY, -leafDepth / 2 - 0.02) + currentDoorSlot = 'hardware' + addBox( + mesh, + hardwareMaterial, + 0.03, + 0.18, + leafDepth + 0.03, + handleX, + handleY, + leafDepth / 2 + 0.02, + ) + addBox( + mesh, + hardwareMaterial, + 0.03, + 0.18, + leafDepth + 0.03, + handleX, + handleY, + -leafDepth / 2 - 0.02, + ) } function addBarnDoor( @@ -1533,9 +1628,10 @@ function addBarnDoor( const handleX = leafCenterX - slideSign * (leafWidth / 2 - 0.075) const wheelY = trackY - 0.075 - addBox(mesh, revealMaterial, railLength, 0.035, 0.035, railCenterX, trackY, faceZ + 0.01) - addBox(mesh, revealMaterial, 0.05, 0.13, 0.035, -insideWidth / 2, trackY - 0.02, faceZ + 0.01) - addBox(mesh, revealMaterial, 0.05, 0.13, 0.035, insideWidth / 2, trackY - 0.02, faceZ + 0.01) + currentDoorSlot = 'hardware' + addBox(mesh, hardwareMaterial, railLength, 0.035, 0.035, railCenterX, trackY, faceZ + 0.01) + addBox(mesh, hardwareMaterial, 0.05, 0.13, 0.035, -insideWidth / 2, trackY - 0.02, faceZ + 0.01) + addBox(mesh, hardwareMaterial, 0.05, 0.13, 0.035, insideWidth / 2, trackY - 0.02, faceZ + 0.01) const addBarnLeafBox = ( material: THREE.Material, @@ -1559,6 +1655,7 @@ function addBarnDoor( keepFrameWhenEmpty: true, }) + currentDoorSlot = undefined addRotatedBox( mesh, revealMaterial, @@ -1582,11 +1679,12 @@ function addBarnDoor( 0.52, ) + currentDoorSlot = 'hardware' for (const offset of [-leafWidth * 0.28, leafWidth * 0.28]) { - addBox(mesh, revealMaterial, 0.085, 0.085, 0.035, leafCenterX + offset, wheelY, faceZ + 0.022) + addBox(mesh, hardwareMaterial, 0.085, 0.085, 0.035, leafCenterX + offset, wheelY, faceZ + 0.022) addBox( mesh, - revealMaterial, + hardwareMaterial, 0.026, 0.16, 0.026, @@ -1596,9 +1694,10 @@ function addBarnDoor( ) } + currentDoorSlot = 'hardware' addBox( mesh, - baseMaterial, + hardwareMaterial, 0.032, 0.22, leafDepth + 0.034, @@ -1608,7 +1707,7 @@ function addBarnDoor( ) addBox( mesh, - baseMaterial, + hardwareMaterial, 0.032, 0.22, leafDepth + 0.034, @@ -1663,10 +1762,20 @@ function addSlidingDoor( const handleY = handleHeight - doorHeight / 2 const handleX = activeX + activeSign * (panelWidth / 2 - 0.06) - addBox(mesh, revealMaterial, insideWidth, 0.024, Math.max(frameDepth * 0.32, 0.026), 0, railY, 0) + currentDoorSlot = 'hardware' addBox( mesh, - revealMaterial, + hardwareMaterial, + insideWidth, + 0.024, + Math.max(frameDepth * 0.32, 0.026), + 0, + railY, + 0, + ) + addBox( + mesh, + hardwareMaterial, insideWidth, 0.018, Math.max(frameDepth * 0.28, 0.022), @@ -1717,8 +1826,27 @@ function addSlidingDoor( contentPadding, keepFrameWhenEmpty: true, }) - addBox(mesh, baseMaterial, 0.032, 0.24, 0.016, handleX, handleY, frontZ + leafDepth / 2 + 0.01) - addBox(mesh, baseMaterial, 0.032, 0.24, 0.016, handleX, handleY, frontZ - leafDepth / 2 - 0.01) + currentDoorSlot = 'hardware' + addBox( + mesh, + hardwareMaterial, + 0.032, + 0.24, + 0.016, + handleX, + handleY, + frontZ + leafDepth / 2 + 0.01, + ) + addBox( + mesh, + hardwareMaterial, + 0.032, + 0.24, + 0.016, + handleX, + handleY, + frontZ - leafDepth / 2 - 0.01, + ) } function addGarageSectionalDoor( @@ -1755,9 +1883,10 @@ function addGarageSectionalDoor( const railY = leafCenterY + leafHeight / 2 - 0.04 const railZ = -travelDepth / 2 + currentDoorSlot = 'hardware' addBox( mesh, - revealMaterial, + hardwareMaterial, 0.035, Math.max(0.04, frameThickness * 0.75), travelDepth, @@ -1767,7 +1896,7 @@ function addGarageSectionalDoor( ) addBox( mesh, - revealMaterial, + hardwareMaterial, 0.035, Math.max(0.04, frameThickness * 0.75), travelDepth, @@ -1798,6 +1927,7 @@ function addGarageSectionalDoor( const trimDepth = 0.01 const trimFaceOffset = leafDepth / 2 + trimDepth + 0.006 const addSectionalTrim = (localY: number) => { + currentDoorSlot = undefined addBoxWithRotation( mesh, revealMaterial, @@ -1811,6 +1941,7 @@ function addGarageSectionalDoor( ) } + currentDoorSlot = 'panel' addBoxWithRotation( mesh, baseMaterial, @@ -1826,7 +1957,8 @@ function addGarageSectionalDoor( addSectionalTrim(-revealOffset) } - addBox(mesh, revealMaterial, insideWidth, 0.032, Math.max(frameDepth * 0.36, 0.03), 0, railY, 0) + currentDoorSlot = 'hardware' + addBox(mesh, hardwareMaterial, insideWidth, 0.032, Math.max(frameDepth * 0.36, 0.03), 0, railY, 0) } function addGarageRollupDoor( @@ -1859,9 +1991,10 @@ function addGarageRollupDoor( const drumY = topY + drumMaxRadius * 0.12 const drumZ = -frameDepth / 2 - drumMaxRadius * 0.72 + currentDoorSlot = 'hardware' addBox( mesh, - revealMaterial, + hardwareMaterial, 0.032, leafHeight, Math.max(frameDepth * 0.48, 0.035), @@ -1871,7 +2004,7 @@ function addGarageRollupDoor( ) addBox( mesh, - revealMaterial, + hardwareMaterial, 0.032, leafHeight, Math.max(frameDepth * 0.48, 0.035), @@ -1881,8 +2014,10 @@ function addGarageRollupDoor( ) if (visibleHeight > 0.01) { + currentDoorSlot = 'panel' addBox(mesh, baseMaterial, insideWidth, visibleHeight, leafDepth, 0, curtainCenterY, 0) + currentDoorSlot = undefined for (let index = 0; index < visibleSlatCount; index++) { const y = topY - Math.min(visibleHeight, index * slatHeight) addBox(mesh, revealMaterial, insideWidth - 0.08, 0.01, 0.012, 0, y, leafDepth / 2 + 0.012) @@ -1900,17 +2035,20 @@ function addGarageRollupDoor( ) } + currentDoorSlot = 'panel' const drum = new THREE.Mesh( new THREE.CylinderGeometry(drumMaxRadius, drumMaxRadius, insideWidth + frameThickness, 36), baseMaterial, ) drum.position.set(0, drumY, drumZ) drum.rotation.z = Math.PI / 2 + tagDoorSlot(drum) mesh.add(drum) + currentDoorSlot = 'hardware' addBox( mesh, - revealMaterial, + hardwareMaterial, insideWidth + frameThickness, 0.026, Math.max(frameDepth * 0.52, 0.04), @@ -1949,9 +2087,10 @@ function addGarageTiltupDoor( const railY = hingeY - frameThickness * 0.35 const railZ = -railLength / 2 + currentDoorSlot = 'hardware' addBox( mesh, - revealMaterial, + hardwareMaterial, 0.03, Math.max(frameThickness * 0.7, 0.035), railLength, @@ -1961,7 +2100,7 @@ function addGarageTiltupDoor( ) addBox( mesh, - revealMaterial, + hardwareMaterial, 0.03, Math.max(frameThickness * 0.7, 0.035), railLength, @@ -1970,6 +2109,7 @@ function addGarageTiltupDoor( railZ, ) + currentDoorSlot = 'panel' addBoxWithRotation( mesh, baseMaterial, @@ -1987,6 +2127,7 @@ function addGarageTiltupDoor( const trimDepth = 0.012 const trimFaceOffset = leafDepth / 2 + trimDepth + 0.006 const addTiltupTrim = (localX: number, localY: number, trimWidth: number, trimHeight: number) => { + currentDoorSlot = undefined addBoxWithRotation( mesh, revealMaterial, @@ -2005,7 +2146,17 @@ function addGarageTiltupDoor( addTiltupTrim(-insetWidth / 2, 0, 0.018, insetHeight) addTiltupTrim(insetWidth / 2, 0, 0.018, insetHeight) - addBox(mesh, revealMaterial, insideWidth, 0.026, Math.max(frameDepth * 0.4, 0.035), 0, hingeY, 0) + currentDoorSlot = 'hardware' + addBox( + mesh, + hardwareMaterial, + insideWidth, + 0.026, + Math.max(frameDepth * 0.4, 0.035), + 0, + hingeY, + 0, + ) } function getEffectiveOpeningShape(node: DoorNode): DoorNode['openingShape'] { @@ -2019,15 +2170,12 @@ function getEffectiveOpeningShape(node: DoorNode): DoorNode['openingShape'] { function updateDoorMesh(rawNode: DoorNode, mesh: THREE.Mesh) { const node = normalizeDoorNodeForRender(rawNode) + currentDoorSlot = undefined // Root mesh is an invisible hitbox; all visuals live in child meshes mesh.geometry.dispose() mesh.geometry = new THREE.BoxGeometry(node.width, node.height, node.frameDepth) mesh.material = hitboxMaterial - // Default (selectable) hitbox raycast — restored each build; the visual path - // below disables it so the tagged panel/glass children are the hit targets - // (otherwise the full-depth invisible box intercepts every paint/hover ray). - mesh.raycast = THREE.Mesh.prototype.raycast // Sync transform from node (React may lag behind the system by a frame during drag) mesh.position.set(node.position[0], node.position[1], node.position[2]) @@ -2040,11 +2188,13 @@ function updateDoorMesh(rawNode: DoorNode, mesh: THREE.Mesh) { mesh.remove(child) } - // Point the builder-facing body/glass materials at this door's slot overrides - // for the duration of its build (recomputed per node, so the next door resets - // cleanly without a restore). Reveal keeps its own material. + // Point the builder-facing materials at this door's slot overrides for the + // duration of its build (recomputed per node, so the next door resets cleanly + // without a restore). Reveal keeps its own material. baseMaterial = resolveDoorSlotMaterial(node, 'panel') + frameMaterial = resolveDoorSlotMaterial(node, 'frame') glassMaterial = resolveDoorSlotMaterial(node, 'glass') + hardwareMaterial = resolveDoorSlotMaterial(node, 'hardware') const { width, @@ -2083,9 +2233,6 @@ function updateDoorMesh(rawNode: DoorNode, mesh: THREE.Mesh) { return } - // Visuals exist: let the tagged children receive paint/hover/selection rays. - mesh.raycast = noopHitboxRaycast - const insideWidth = width - 2 * frameThickness const leafH = height - frameThickness // only top frame const leafDepth = 0.04 @@ -2093,6 +2240,7 @@ function updateDoorMesh(rawNode: DoorNode, mesh: THREE.Mesh) { const swingDirectionSign = swingDirection === 'inward' ? 1 : -1 // ── Frame members ── + currentDoorSlot = 'frame' if (openingShape === 'arch') { const frameBottom = -height / 2 const frameTop = height / 2 @@ -2106,7 +2254,7 @@ function updateDoorMesh(rawNode: DoorNode, mesh: THREE.Mesh) { addBox( mesh, - baseMaterial, + frameMaterial, frameThickness, postHeight, frameDepth, @@ -2116,7 +2264,7 @@ function updateDoorMesh(rawNode: DoorNode, mesh: THREE.Mesh) { ) addBox( mesh, - baseMaterial, + frameMaterial, frameThickness, postHeight, frameDepth, @@ -2126,7 +2274,7 @@ function updateDoorMesh(rawNode: DoorNode, mesh: THREE.Mesh) { ) addShape( mesh, - baseMaterial, + frameMaterial, useShallowHeadBar ? createArchHeadBarShape(width, frameHeadBottomY, frameSpringY, frameTop) : createArchBandShape( @@ -2142,7 +2290,7 @@ function updateDoorMesh(rawNode: DoorNode, mesh: THREE.Mesh) { } else if (openingShape === 'rounded') { addShape( mesh, - baseMaterial, + frameMaterial, createRoundedDoorFrameShape( width, height, @@ -2155,7 +2303,7 @@ function updateDoorMesh(rawNode: DoorNode, mesh: THREE.Mesh) { // Left post — full height addBox( mesh, - baseMaterial, + frameMaterial, frameThickness, height, frameDepth, @@ -2166,7 +2314,7 @@ function updateDoorMesh(rawNode: DoorNode, mesh: THREE.Mesh) { // Right post — full height addBox( mesh, - baseMaterial, + frameMaterial, frameThickness, height, frameDepth, @@ -2177,7 +2325,7 @@ function updateDoorMesh(rawNode: DoorNode, mesh: THREE.Mesh) { // Head (top bar) — full width addBox( mesh, - baseMaterial, + frameMaterial, width, frameThickness, frameDepth, @@ -2189,9 +2337,10 @@ function updateDoorMesh(rawNode: DoorNode, mesh: THREE.Mesh) { // ── Threshold (inside the frame) ── if (threshold) { + currentDoorSlot = 'frame' addBox( mesh, - baseMaterial, + frameMaterial, insideWidth, thresholdHeight, frameDepth, @@ -2412,10 +2561,10 @@ function syncDoorCutout(node: DoorNode, mesh: THREE.Mesh) { if (!cutout) { cutout = new THREE.Mesh() cutout.name = 'cutout' - // The cutout is a 1m-deep CSG helper for the wall hole — never interactive. - // three.js raycasts invisible meshes, so without this its front face (0.5m - // proud of the door) intercepts every paint/hover ray. - cutout.raycast = noopHitboxRaycast + // The cutout (a 1m-deep CSG helper, invisible) is proud of the wall, so it + // wins the scene raycast over the wall in front of the recessed door body — + // making it the selection AND paint hit target for the whole opening. The + // paint capability then re-raycasts the door's parts to find the slot. mesh.add(cutout) } cutout.geometry.dispose() diff --git a/packages/viewer/src/systems/window/window-system.tsx b/packages/viewer/src/systems/window/window-system.tsx index a45f4f121..57c938924 100644 --- a/packages/viewer/src/systems/window/window-system.tsx +++ b/packages/viewer/src/systems/window/window-system.tsx @@ -12,6 +12,7 @@ import { import { useFrame } from '@react-three/fiber' import { useEffect, useRef } from 'react' import * as THREE from 'three' +import { applyWorldScaleBoxUVs } from '../../lib/box-uv' import { type ColorPreset, createSurfaceRoleMaterial, @@ -24,10 +25,9 @@ import useViewer from '../../store/use-viewer' // Invisible material for root mesh — used as selection hitbox only const hitboxMaterial = new THREE.MeshBasicMaterial({ visible: false }) -// Disables a mesh's own raycast so its children become the hit targets. -const noopHitboxRaycast: THREE.Mesh['raycast'] = () => {} let baseMaterial = getBaseMaterial() let glassMaterial: THREE.Material = defaultGlassMaterial +let currentWindowSlot: string | undefined // Per-frame viewer state, captured so the per-node mesh builder (which runs // outside React) can resolve each window's slot materials. let currentShading: RenderShading = 'rendered' @@ -158,12 +158,8 @@ export const WindowSystem = () => { return null } -// A window exposes two slots: `frame` (every joinery member) and `glass`. The -// builders pass `baseMaterial` / `glassMaterial`, so tag each mesh by which one -// it got — that's what `(nodeId, slotId)` paint resolves against. function tagWindowSlot(mesh: THREE.Mesh): THREE.Mesh { - if (mesh.material === glassMaterial) mesh.userData.slotId = 'glass' - else if (mesh.material === baseMaterial) mesh.userData.slotId = 'frame' + mesh.userData.slotId = currentWindowSlot return mesh } @@ -176,15 +172,25 @@ function nodeReferencesSceneMaterial(node: { slots?: Record }): return false } +// Window frame/glass default to catalog finishes (generic approach). `preset-glass` +// is now FrontSide (it was the only glass we use), so it's safe for the WebGPU +// MRT scene pass. +const FRAME_DEFAULT_REF = 'library:preset-softwhite' +const GLASS_DEFAULT_REF = 'library:preset-glass' + function windowSlotDefault(slotId: 'frame' | 'glass'): THREE.Material { if (slotId === 'glass') { - return currentTextures - ? defaultGlassMaterial - : createSurfaceRoleMaterial('glazing', currentColorPreset) + if (!currentTextures) return createSurfaceRoleMaterial('glazing', currentColorPreset) + return ( + resolveMaterialRef(GLASS_DEFAULT_REF, currentSceneMaterials, currentShading) ?? + defaultGlassMaterial + ) } - return currentTextures - ? getBaseMaterial(currentShading) - : createSurfaceRoleMaterial('joinery', currentColorPreset) + if (!currentTextures) return createSurfaceRoleMaterial('joinery', currentColorPreset) + return ( + resolveMaterialRef(FRAME_DEFAULT_REF, currentSceneMaterials, currentShading) ?? + getBaseMaterial(currentShading) + ) } // Resolve a window's slot to a material: the `node.slots` override (colored mode @@ -208,7 +214,9 @@ function addBox( y: number, z: number, ) { - const m = new THREE.Mesh(new THREE.BoxGeometry(w, h, d), material) + const geometry = new THREE.BoxGeometry(w, h, d) + applyWorldScaleBoxUVs(geometry, w, h, d) + const m = new THREE.Mesh(geometry, material) m.position.set(x, y, z) tagWindowSlot(m) parent.add(m) @@ -565,6 +573,7 @@ function addRoundedWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { const innerH = innerTop - innerBottom const innerRadii = insetCornerRadii(outerRadii, inset, innerW, innerH) + currentWindowSlot = 'frame' addShape( mesh, baseMaterial, @@ -574,6 +583,7 @@ function addRoundedWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (innerW > 0.01 && innerH > 0.01) { const glassDepth = Math.max(0.004, frameDepth * 0.08) + currentWindowSlot = 'glass' addShape( mesh, glassMaterial, @@ -591,6 +601,7 @@ function addRoundedWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { const rowHeights = rowRatios.map((r) => (r / rowSum) * usableH) let x = innerLeft + currentWindowSlot = 'frame' for (let c = 0; c < numCols - 1; c++) { x += colWidths[c]! const x1 = x @@ -611,6 +622,7 @@ function addRoundedWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { } let y = innerTop + currentWindowSlot = 'frame' for (let r = 0; r < numRows - 1; r++) { y -= rowHeights[r]! const yTop = y @@ -637,6 +649,7 @@ function addRoundedWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (sill) { const sillW = width + sillDepth * 0.4 const sillZ = frameDepth / 2 + sillDepth / 2 + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -678,10 +691,12 @@ function addArchedWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { const innerArchHeight = getClampedArchHeight(innerW, innerH, archHeight - inset) const innerSpringY = innerTop - innerArchHeight + currentWindowSlot = 'frame' addShape(mesh, baseMaterial, createArchedFrameShape(width, height, archHeight, inset), frameDepth) if (innerW > 0.01 && innerH > 0.01) { const glassDepth = Math.max(0.004, frameDepth * 0.08) + currentWindowSlot = 'glass' addShape( mesh, glassMaterial, @@ -700,6 +715,7 @@ function addArchedWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { const innerHalfWidth = innerW / 2 let x = innerLeft + currentWindowSlot = 'frame' for (let c = 0; c < numCols - 1; c++) { x += colWidths[c]! const x1 = x @@ -720,6 +736,7 @@ function addArchedWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { } let y = innerTop + currentWindowSlot = 'frame' for (let r = 0; r < numRows - 1; r++) { y -= rowHeights[r]! const yTop = y @@ -747,6 +764,7 @@ function addArchedWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (sill) { const sillW = width + sillDepth * 0.4 const sillZ = frameDepth / 2 + sillDepth / 2 + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -786,6 +804,7 @@ function addSlidingWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { const innerH = height - 2 * frameThickness // Outer frame. + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -848,6 +867,7 @@ function addSlidingWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { mesh.add(activePanel) // Twin tracks signal the sliding operation without adding editor-only state. + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -869,10 +889,12 @@ function addSlidingWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { 0, ) + currentWindowSlot = 'glass' addBox(activePanel, glassMaterial, panelWidth, panelH, glassDepth, 0, 0, 0) addBox(mesh, glassMaterial, panelWidth, panelH, glassDepth, rightPanelX, 0, rightZ) // The right sash stays fixed. The left sash is the active panel that slides across it. + currentWindowSlot = 'frame' addBox( activePanel, baseMaterial, @@ -918,6 +940,7 @@ function addSlidingWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (sill) { const sillW = width + sillDepth * 0.4 const sillZ = frameDepth / 2 + sillDepth / 2 + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -954,6 +977,7 @@ function addRectCasementSash( sash.rotation.y = rotationY parent.add(sash) + currentWindowSlot = 'frame' addBox( sash, baseMaterial, @@ -994,6 +1018,7 @@ function addRectCasementSash( 0, 0, ) + currentWindowSlot = 'glass' addBox(sash, glassMaterial, glassW, glassH, glassDepth, sashCenterX, 0, sashDepth * 0.08) } @@ -1006,6 +1031,7 @@ function addFrenchCasementHingeMarkers( ) { const markerW = Math.max(frameThickness * 0.38, 0.018) const markerH = innerH * 0.24 + currentWindowSlot = 'frame' for (const pivotX of [-innerW / 2, innerW / 2]) { addBox( mesh, @@ -1184,6 +1210,7 @@ function addShapedFrenchCasementSash( const outerArchHeight = getClampedArchHeight(node.width, node.height, node.archHeight) const sashArchHeight = getClampedArchHeight(fullW, leafH, outerArchHeight - frameThickness) const sashSpringY = node.height / 2 - outerArchHeight + currentWindowSlot = 'frame' addShape( sashVisual, baseMaterial, @@ -1200,6 +1227,7 @@ function addShapedFrenchCasementSash( ) const glassInset = Math.min(sashFrameThickness, leafW / 2 - 0.005, leafH / 2 - 0.005) if (glassInset > 0.001) { + currentWindowSlot = 'glass' addShape( sashVisual, glassMaterial, @@ -1225,6 +1253,7 @@ function addShapedFrenchCasementSash( fullW, leafH, ) + currentWindowSlot = 'frame' addShape( sashVisual, baseMaterial, @@ -1233,6 +1262,7 @@ function addShapedFrenchCasementSash( ) const glassInset = Math.min(sashFrameThickness, leafW / 2 - 0.005, leafH / 2 - 0.005) if (glassInset > 0.001) { + currentWindowSlot = 'glass' addShape( sashVisual, glassMaterial, @@ -1249,6 +1279,7 @@ function addFrenchCasementWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { const innerH = height - 2 * frameThickness // Fixed outer frame. + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -1321,6 +1352,7 @@ function addFrenchCasementWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (sill) { const sillW = width + sillDepth * 0.4 const sillZ = frameDepth / 2 + sillDepth / 2 + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -1340,6 +1372,7 @@ function addShapedCasementWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { const innerH = height - 2 * frameThickness if (node.openingShape === 'arch') { + currentWindowSlot = 'frame' addShape( mesh, baseMaterial, @@ -1352,6 +1385,7 @@ function addShapedCasementWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { frameDepth, ) } else { + currentWindowSlot = 'frame' addShape( mesh, baseMaterial, @@ -1403,6 +1437,7 @@ function addShapedCasementWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (sill) { const sillW = width + sillDepth * 0.4 const sillZ = frameDepth / 2 + sillDepth / 2 + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -1443,6 +1478,7 @@ function addShapedCasementWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { innerH, (node.archHeight ?? innerW / 2) - frameThickness, ) + currentWindowSlot = 'frame' addShape( sashVisual, baseMaterial, @@ -1453,6 +1489,7 @@ function addShapedCasementWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (glassInset > 0.001) { const glassW = innerW - 2 * glassInset const glassH = innerH - 2 * glassInset + currentWindowSlot = 'glass' addShape( sashVisual, glassMaterial, @@ -1469,6 +1506,7 @@ function addShapedCasementWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { } } else { const outerRadii = getWindowRoundedRadii(node, innerW, innerH) + currentWindowSlot = 'frame' addShape( sashVisual, baseMaterial, @@ -1479,6 +1517,7 @@ function addShapedCasementWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (glassInset > 0.001) { const glassW = innerW - 2 * glassInset const glassH = innerH - 2 * glassInset + currentWindowSlot = 'glass' addShape( sashVisual, glassMaterial, @@ -1495,6 +1534,7 @@ function addShapedCasementWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { } } + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -1520,6 +1560,7 @@ function addShapedCasementWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (sill) { const sillW = width + sillDepth * 0.4 const sillZ = frameDepth / 2 + sillDepth / 2 + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -1550,6 +1591,7 @@ function addCasementWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { const innerH = height - 2 * frameThickness // Fixed outer frame. + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -1610,6 +1652,7 @@ function addCasementWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { sash.rotation.y = hingeSign * openAngle mesh.add(sash) + currentWindowSlot = 'frame' addBox( sash, baseMaterial, @@ -1650,9 +1693,11 @@ function addCasementWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { 0, 0, ) + currentWindowSlot = 'glass' addBox(sash, glassMaterial, glassW, glassH, glassDepth, sashCenterX, 0, sashDepth * 0.08) // Small hinge markers make the pivot side legible when the sash is closed. + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -1678,6 +1723,7 @@ function addCasementWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (sill) { const sillW = width + sillDepth * 0.4 const sillZ = frameDepth / 2 + sillDepth / 2 + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -1703,6 +1749,7 @@ function addAwningWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { const innerH = height - 2 * frameThickness // Fixed outer frame. + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -1762,6 +1809,7 @@ function addAwningWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { sash.rotation.x = -openAngle mesh.add(sash) + currentWindowSlot = 'frame' addBox( sash, baseMaterial, @@ -1802,9 +1850,11 @@ function addAwningWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { sashCenterY, 0, ) + currentWindowSlot = 'glass' addBox(sash, glassMaterial, glassW, glassH, glassDepth, 0, sashCenterY, sashDepth * 0.08) // Compact hinge rail, visible even when the sash is closed. + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -1820,6 +1870,7 @@ function addAwningWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (sill) { const sillW = width + sillDepth * 0.4 const sillZ = frameDepth / 2 + sillDepth / 2 + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -1839,6 +1890,7 @@ function addShapedAwningWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { const innerH = height - 2 * frameThickness if (node.openingShape === 'arch') { + currentWindowSlot = 'frame' addShape( mesh, baseMaterial, @@ -1851,6 +1903,7 @@ function addShapedAwningWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { frameDepth, ) } else { + currentWindowSlot = 'frame' addShape( mesh, baseMaterial, @@ -1888,6 +1941,7 @@ function addShapedAwningWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { innerH, (node.archHeight ?? innerW / 2) - frameThickness, ) + currentWindowSlot = 'frame' addShape( sashVisual, baseMaterial, @@ -1898,6 +1952,7 @@ function addShapedAwningWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (glassInset > 0.001) { const glassW = innerW - 2 * glassInset const glassH = innerH - 2 * glassInset + currentWindowSlot = 'glass' addShape( sashVisual, glassMaterial, @@ -1914,6 +1969,7 @@ function addShapedAwningWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { } } else { const outerRadii = getWindowRoundedRadii(node, innerW, innerH) + currentWindowSlot = 'frame' addShape( sashVisual, baseMaterial, @@ -1924,6 +1980,7 @@ function addShapedAwningWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (glassInset > 0.001) { const glassW = innerW - 2 * glassInset const glassH = innerH - 2 * glassInset + currentWindowSlot = 'glass' addShape( sashVisual, glassMaterial, @@ -1940,6 +1997,7 @@ function addShapedAwningWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { } } + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -1955,6 +2013,7 @@ function addShapedAwningWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (sill) { const sillW = width + sillDepth * 0.4 const sillZ = frameDepth / 2 + sillDepth / 2 + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -1980,6 +2039,7 @@ function addHopperWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { const innerH = height - 2 * frameThickness // Fixed outer frame. + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -2037,6 +2097,7 @@ function addHopperWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { sash.rotation.x = -openAngle mesh.add(sash) + currentWindowSlot = 'frame' addBox( sash, baseMaterial, @@ -2068,9 +2129,11 @@ function addHopperWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { innerH / 2, 0, ) + currentWindowSlot = 'glass' addBox(sash, glassMaterial, glassW, glassH, glassDepth, 0, innerH / 2, sashDepth * 0.08) // Compact bottom hinge rail, visible even when the sash is closed. + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -2086,6 +2149,7 @@ function addHopperWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (sill) { const sillW = width + sillDepth * 0.4 const sillZ = frameDepth / 2 + sillDepth / 2 + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -2105,6 +2169,7 @@ function addShapedHopperWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { const innerH = height - 2 * frameThickness if (node.openingShape === 'arch') { + currentWindowSlot = 'frame' addShape( mesh, baseMaterial, @@ -2117,6 +2182,7 @@ function addShapedHopperWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { frameDepth, ) } else { + currentWindowSlot = 'frame' addShape( mesh, baseMaterial, @@ -2153,6 +2219,7 @@ function addShapedHopperWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { innerH, (node.archHeight ?? innerW / 2) - frameThickness, ) + currentWindowSlot = 'frame' addShape( sashVisual, baseMaterial, @@ -2163,6 +2230,7 @@ function addShapedHopperWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (glassInset > 0.001) { const glassW = innerW - 2 * glassInset const glassH = innerH - 2 * glassInset + currentWindowSlot = 'glass' addShape( sashVisual, glassMaterial, @@ -2179,6 +2247,7 @@ function addShapedHopperWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { } } else { const outerRadii = getWindowRoundedRadii(node, innerW, innerH) + currentWindowSlot = 'frame' addShape( sashVisual, baseMaterial, @@ -2189,6 +2258,7 @@ function addShapedHopperWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (glassInset > 0.001) { const glassW = innerW - 2 * glassInset const glassH = innerH - 2 * glassInset + currentWindowSlot = 'glass' addShape( sashVisual, glassMaterial, @@ -2205,6 +2275,7 @@ function addShapedHopperWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { } } + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -2220,6 +2291,7 @@ function addShapedHopperWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (sill) { const sillW = width + sillDepth * 0.4 const sillZ = frameDepth / 2 + sillDepth / 2 + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -2243,6 +2315,7 @@ function addHungSash( glassW: number, glassH: number, ) { + currentWindowSlot = 'frame' addBox( parent, baseMaterial, @@ -2283,6 +2356,7 @@ function addHungSash( 0, 0, ) + currentWindowSlot = 'glass' addBox(parent, glassMaterial, glassW, glassH, glassDepth, 0, 0, 0) } @@ -2293,6 +2367,7 @@ function addSingleHungWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { const innerH = height - 2 * frameThickness // Fixed outer frame. + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -2357,6 +2432,7 @@ function addSingleHungWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { mesh.add(activeSash) // Side tracks show the lower sash is the moving element. + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -2403,6 +2479,7 @@ function addSingleHungWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { ) // Meeting rails: top sash fixed, bottom sash moves upward over it. + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -2428,6 +2505,7 @@ function addSingleHungWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (sill) { const sillW = width + sillDepth * 0.4 const sillZ = frameDepth / 2 + sillDepth / 2 + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -2448,6 +2526,7 @@ function addDoubleHungWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { const innerH = height - 2 * frameThickness // Fixed outer frame. + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -2516,6 +2595,7 @@ function addDoubleHungWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { mesh.add(bottomSash) // Side tracks show both sashes move vertically. + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -2559,6 +2639,7 @@ function addDoubleHungWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { ) // Opposing meeting rails: top sash descends while bottom sash rises. + currentWindowSlot = 'frame' addBox( topSash, baseMaterial, @@ -2584,6 +2665,7 @@ function addDoubleHungWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (sill) { const sillW = width + sillDepth * 0.4 const sillZ = frameDepth / 2 + sillDepth / 2 + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -2602,6 +2684,7 @@ function addBayWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { const innerW = width - 2 * frameThickness const innerH = height - 2 * frameThickness + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -2662,6 +2745,7 @@ function addBayWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { const addBayPanel = (parent: THREE.Object3D, panelW: number) => { const glassW = Math.max(panelW - 2 * sashFrameThickness, 0.01) const glassH = Math.max(innerH - 2 * sashFrameThickness, 0.01) + currentWindowSlot = 'frame' addBox( parent, baseMaterial, @@ -2702,10 +2786,12 @@ function addBayWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { 0, 0, ) + currentWindowSlot = 'glass' addBox(parent, glassMaterial, glassW, glassH, glassDepth, 0, 0, panelDepth * 0.08) } const addBayCap = (centerY: number) => { + currentWindowSlot = 'frame' const halfThickness = frameThickness / 2 const vertices: number[] = [] const indices: number[] = [] @@ -2760,7 +2846,7 @@ function addBayWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { geometry.setAttribute('position', new THREE.Float32BufferAttribute(vertices, 3)) geometry.setIndex(indices) geometry.computeVertexNormals() - mesh.add(new THREE.Mesh(geometry, baseMaterial)) + mesh.add(tagWindowSlot(new THREE.Mesh(geometry, baseMaterial))) } const center = new THREE.Group() @@ -2787,6 +2873,7 @@ function addBayWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (sill) { const sillW = width + sillDepth * 0.4 const sillZ = frameDepth / 2 + sillDepth / 2 + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -2805,6 +2892,7 @@ function addBowWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { const innerW = width - 2 * frameThickness const innerH = height - 2 * frameThickness + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -2931,15 +3019,19 @@ function addBowWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { } const addCurvedMesh = (material: THREE.Material, geometry: THREE.BufferGeometry) => { - mesh.add(new THREE.Mesh(geometry, material)) + mesh.add(tagWindowSlot(new THREE.Mesh(geometry, material))) } + currentWindowSlot = 'frame' addCurvedMesh(baseMaterial, createCurvedVerticalBand(glassTop, innerH / 2)) addCurvedMesh(baseMaterial, createCurvedVerticalBand(-innerH / 2, glassBottom)) + currentWindowSlot = 'glass' addCurvedMesh(glassMaterial, createCurvedVerticalBand(glassBottom, glassTop, frameDepth * 0.04)) + currentWindowSlot = 'frame' addCurvedMesh(baseMaterial, createCurvedCap(slabYTop, frameThickness)) addCurvedMesh(baseMaterial, createCurvedCap(slabYBottom, frameThickness)) + currentWindowSlot = 'frame' for (let index = 0; index <= mullionCount; index += 1) { const x = -halfSpan + (innerW * index) / mullionCount addBox(mesh, baseMaterial, sashFrameThickness, innerH, frameDepth * 0.72, x, 0, arcZAt(x)) @@ -2949,6 +3041,7 @@ function addBowWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (sill) { const sillW = width + sillDepth * 0.4 const sillZ = frameDepth / 2 + sillDepth / 2 + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -2973,6 +3066,7 @@ function addLouveredWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { const innerW = width - 2 * frameThickness const innerH = height - 2 * frameThickness + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -3027,6 +3121,7 @@ function addLouveredWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { slats.name = LOUVERED_WINDOW_SLATS_NAME mesh.add(slats) + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -3048,6 +3143,7 @@ function addLouveredWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { 0, ) + currentWindowSlot = 'glass' for (let index = 0; index < slatCount; index += 1) { const y = innerH / 2 - slatGap * (index + 0.5) const slat = new THREE.Group() @@ -3070,6 +3166,7 @@ function addLouveredWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (sill) { const sillW = width + sillDepth * 0.4 const sillZ = frameDepth / 2 + sillDepth / 2 + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -3097,6 +3194,7 @@ function addShapedLouveredWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { const innerH = innerTop - innerBottom if (node.openingShape === 'arch') { + currentWindowSlot = 'frame' addShape( mesh, baseMaterial, @@ -3109,6 +3207,7 @@ function addShapedLouveredWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { frameDepth, ) } else { + currentWindowSlot = 'frame' addShape( mesh, baseMaterial, @@ -3159,6 +3258,7 @@ function addShapedLouveredWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { })() const addVerticalRail = (x: number) => { + currentWindowSlot = 'frame' const railX1 = x const railX2 = x + (x < 0 ? railThickness : -railThickness) const sampleX = x < 0 ? Math.max(railX1, railX2) : Math.min(railX1, railX2) @@ -3192,6 +3292,7 @@ function addShapedLouveredWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { addVerticalRail(innerLeft) addVerticalRail(innerRight) + currentWindowSlot = 'glass' for (let index = 0; index < slatCount; index += 1) { const y = innerTop - slatGap * (index + 0.5) const topBounds = getBoundsAtY(Math.min(y + slatHeight / 2, innerTop)) @@ -3212,6 +3313,7 @@ function addShapedLouveredWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { if (sill) { const sillW = width + sillDepth * 0.4 const sillZ = frameDepth / 2 + sillDepth / 2 + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -3226,14 +3328,12 @@ function addShapedLouveredWindowVisuals(node: WindowNode, mesh: THREE.Mesh) { } function updateWindowMesh(node: WindowNode, mesh: THREE.Mesh) { + currentWindowSlot = undefined + // Root mesh is an invisible hitbox; all visuals live in child meshes mesh.geometry.dispose() mesh.geometry = new THREE.BoxGeometry(node.width, node.height, node.frameDepth) mesh.material = hitboxMaterial - // Default (selectable) hitbox raycast — restored each build; the visual path - // below disables it so the tagged frame/glass children are the hit targets - // (otherwise the full-depth invisible box intercepts every paint/hover ray). - mesh.raycast = THREE.Mesh.prototype.raycast // Sync transform from node (React may lag behind the system by a frame during drag) mesh.position.set(node.position[0], node.position[1], node.position[2]) @@ -3274,9 +3374,6 @@ function updateWindowMesh(node: WindowNode, mesh: THREE.Mesh) { return } - // Visuals exist: let the tagged children receive paint/hover/selection rays. - mesh.raycast = noopHitboxRaycast - if (windowType === 'sliding') { addSlidingWindowVisuals(node, mesh) syncWindowCutout(node, mesh) @@ -3348,6 +3445,7 @@ function updateWindowMesh(node: WindowNode, mesh: THREE.Mesh) { // ── Frame members ── // Top / bottom — full width + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -3422,6 +3520,7 @@ function updateWindowMesh(node: WindowNode, mesh: THREE.Mesh) { // Column dividers — full inner height cx = -innerW / 2 + currentWindowSlot = 'frame' for (let c = 0; c < numCols - 1; c++) { cx += colWidths[c]! addBox( @@ -3439,6 +3538,7 @@ function updateWindowMesh(node: WindowNode, mesh: THREE.Mesh) { // Row dividers — per column width, so they don't overlap column dividers (top to bottom) cy = innerH / 2 + currentWindowSlot = 'frame' for (let r = 0; r < numRows - 1; r++) { cy -= rowHeights[r]! const divY = cy - rowDividerThickness / 2 @@ -3459,6 +3559,7 @@ function updateWindowMesh(node: WindowNode, mesh: THREE.Mesh) { // Glass panes const glassDepth = Math.max(0.004, frameDepth * 0.08) + currentWindowSlot = 'glass' for (let c = 0; c < numCols; c++) { for (let r = 0; r < numRows; r++) { addBox( @@ -3479,6 +3580,7 @@ function updateWindowMesh(node: WindowNode, mesh: THREE.Mesh) { const sillW = width + sillDepth * 0.4 // slightly wider than frame // Protrudes from the front face of the frame (+Z) const sillZ = frameDepth / 2 + sillDepth / 2 + currentWindowSlot = 'frame' addBox( mesh, baseMaterial, @@ -3500,10 +3602,10 @@ function syncWindowCutout(node: WindowNode, mesh: THREE.Mesh) { if (!cutout) { cutout = new THREE.Mesh() cutout.name = 'cutout' - // The cutout is a 1m-deep CSG helper for the wall hole — never interactive. - // three.js raycasts invisible meshes, so without this its front face (0.5m - // proud of the glass) intercepts every paint/hover ray. - cutout.raycast = noopHitboxRaycast + // The cutout (a 1m-deep CSG helper, invisible) is proud of the wall, so it + // wins the scene raycast over the wall in front of the recessed window — + // making it the selection AND paint hit target for the whole opening. The + // paint capability then re-raycasts the window's parts to find the slot. mesh.add(cutout) } cutout.geometry.dispose() From 37c56788f3f2915c837f3dade0e730bbba7f362e Mon Sep 17 00:00:00 2001 From: Wassim SAMAD Date: Wed, 17 Jun 2026 14:30:23 -0400 Subject: [PATCH 8/9] feat(paint-slots): add drei sunset environment as an editor viewer child Inject an EditorEnvironment wrapper (drei prefiltered sunset HDRI at environmentIntensity 0.6) as a child of the editor Viewer, not baked into the Viewer component, so read-only/embed viewers stay lightweight. This gives PBR metals their reflections and lifts lighting on vertical walls that flat directional + hemisphere lights cannot. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../src/components/editor-environment.tsx | 20 +++++++++++++++++++ .../editor/src/components/editor/index.tsx | 2 ++ 2 files changed, 22 insertions(+) create mode 100644 packages/editor/src/components/editor-environment.tsx diff --git a/packages/editor/src/components/editor-environment.tsx b/packages/editor/src/components/editor-environment.tsx new file mode 100644 index 000000000..9e9bf0d4e --- /dev/null +++ b/packages/editor/src/components/editor-environment.tsx @@ -0,0 +1,20 @@ +'use client' + +import { Environment } from '@react-three/drei' +import { Suspense } from 'react' + +/** + * Scene IBL for the editor — drei's prefiltered environment map. Injected as a + * *child* (not baked into the Viewer component) so read-only / embed + * viewers don't pull the HDRI. This is what gives PBR metals their reflections + * and lifts the lighting on vertical surfaces (walls), which flat directional + + * hemisphere lights can't do alone. Intensity is dialled below the preset + * default so it complements the scene lights rather than washing them out. + */ +export function EditorEnvironment() { + return ( + + + + ) +} diff --git a/packages/editor/src/components/editor/index.tsx b/packages/editor/src/components/editor/index.tsx index c6903080a..49bd023d7 100644 --- a/packages/editor/src/components/editor/index.tsx +++ b/packages/editor/src/components/editor/index.tsx @@ -21,6 +21,7 @@ import { } from '../../lib/scene' import { initSFXBus } from '../../lib/sfx-bus' import useEditor from '../../store/use-editor' +import { EditorEnvironment } from '../editor-environment' import { CeilingSelectionAffordanceSystem } from '../systems/ceiling/ceiling-selection-affordance-system' import { CeilingSystem } from '../systems/ceiling/ceiling-system' import { RoofEditSystem } from '../systems/roof/roof-edit-system' @@ -602,6 +603,7 @@ const ViewerSceneContent = memo(function ViewerSceneContent({ const noEditing = isVersionPreviewMode || isFirstPersonMode || isStudioMode return ( <> + {!(isFirstPersonMode || isStudioMode) && } {!noEditing && } {!noEditing && } From 481880736077f6a7b842019d4dde66e3789fdc08 Mon Sep 17 00:00:00 2001 From: Wassim SAMAD Date: Wed, 17 Jun 2026 14:49:35 -0400 Subject: [PATCH 9/9] refactor(paint-slots): share scene IBL as viewer SceneEnvironment Replace the editor-only EditorEnvironment wrapper with a SceneEnvironment component exported from @pascal-app/viewer, mounted as an opt-in child (still not baked into the Viewer component). One source of truth the editor and the community public viewer both inject; embed/thumbnail surfaces simply don't mount it. Sunset preset at environmentIntensity 0.6. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../src/components/editor-environment.tsx | 20 ----------------- .../editor/src/components/editor/index.tsx | 11 +++++++--- .../components/viewer/scene-environment.tsx | 22 +++++++++++++++++++ packages/viewer/src/index.ts | 1 + 4 files changed, 31 insertions(+), 23 deletions(-) delete mode 100644 packages/editor/src/components/editor-environment.tsx create mode 100644 packages/viewer/src/components/viewer/scene-environment.tsx diff --git a/packages/editor/src/components/editor-environment.tsx b/packages/editor/src/components/editor-environment.tsx deleted file mode 100644 index 9e9bf0d4e..000000000 --- a/packages/editor/src/components/editor-environment.tsx +++ /dev/null @@ -1,20 +0,0 @@ -'use client' - -import { Environment } from '@react-three/drei' -import { Suspense } from 'react' - -/** - * Scene IBL for the editor — drei's prefiltered environment map. Injected as a - * *child* (not baked into the Viewer component) so read-only / embed - * viewers don't pull the HDRI. This is what gives PBR metals their reflections - * and lifts the lighting on vertical surfaces (walls), which flat directional + - * hemisphere lights can't do alone. Intensity is dialled below the preset - * default so it complements the scene lights rather than washing them out. - */ -export function EditorEnvironment() { - return ( - - - - ) -} diff --git a/packages/editor/src/components/editor/index.tsx b/packages/editor/src/components/editor/index.tsx index 49bd023d7..1398dec38 100644 --- a/packages/editor/src/components/editor/index.tsx +++ b/packages/editor/src/components/editor/index.tsx @@ -7,7 +7,13 @@ import { spatialGridManager, useScene, } from '@pascal-app/core' -import { type HoverStyles, InteractiveSystem, useViewer, Viewer } from '@pascal-app/viewer' +import { + type HoverStyles, + InteractiveSystem, + SceneEnvironment, + useViewer, + Viewer, +} from '@pascal-app/viewer' import { memo, type ReactNode, useCallback, useEffect, useRef, useState } from 'react' import { ViewerOverlay } from '../../components/viewer-overlay' import { ViewerZoneSystem } from '../../components/viewer-zone-system' @@ -21,7 +27,6 @@ import { } from '../../lib/scene' import { initSFXBus } from '../../lib/sfx-bus' import useEditor from '../../store/use-editor' -import { EditorEnvironment } from '../editor-environment' import { CeilingSelectionAffordanceSystem } from '../systems/ceiling/ceiling-selection-affordance-system' import { CeilingSystem } from '../systems/ceiling/ceiling-system' import { RoofEditSystem } from '../systems/roof/roof-edit-system' @@ -603,7 +608,7 @@ const ViewerSceneContent = memo(function ViewerSceneContent({ const noEditing = isVersionPreviewMode || isFirstPersonMode || isStudioMode return ( <> - + {!(isFirstPersonMode || isStudioMode) && } {!noEditing && } {!noEditing && } diff --git a/packages/viewer/src/components/viewer/scene-environment.tsx b/packages/viewer/src/components/viewer/scene-environment.tsx new file mode 100644 index 000000000..1834c8f3e --- /dev/null +++ b/packages/viewer/src/components/viewer/scene-environment.tsx @@ -0,0 +1,22 @@ +'use client' + +import { Environment } from '@react-three/drei' +import { Suspense } from 'react' + +/** + * Scene IBL — drei's prefiltered environment map, exported as an opt-in + * *child* rather than baked into the Viewer component, so embed / + * thumbnail surfaces that don't want the HDRI fetch simply don't mount it. + * This is what gives PBR metals their reflections and lifts the lighting on + * vertical surfaces (walls), which flat directional + hemisphere lights can't + * do alone. Intensity is dialled below the preset default so it complements + * the scene lights rather than washing them out. Only visible in `rendered` + * shading. + */ +export function SceneEnvironment() { + return ( + + + + ) +} diff --git a/packages/viewer/src/index.ts b/packages/viewer/src/index.ts index 7d2c94693..6782d31cf 100644 --- a/packages/viewer/src/index.ts +++ b/packages/viewer/src/index.ts @@ -18,6 +18,7 @@ export { DEFAULT_HOVER_STYLES, SSGI_PARAMS, } from './components/viewer/post-processing' +export { SceneEnvironment } from './components/viewer/scene-environment' export { WalkthroughControls } from './components/viewer/walkthrough-controls' export { useAssetUrl } from './hooks/use-asset-url' export { useGLTFKTX2 } from './hooks/use-gltf-ktx2'