From aeecd4d7ece27a2608c88fc48cdaba544532d5c0 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Sun, 24 May 2026 19:12:18 +0000 Subject: [PATCH] Changes Co-authored-by: Reifonas <211114984+Reifonas@users.noreply.github.com> --- src/lib/modelTransforms.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/lib/modelTransforms.ts b/src/lib/modelTransforms.ts index 58d8807..c3ef211 100644 --- a/src/lib/modelTransforms.ts +++ b/src/lib/modelTransforms.ts @@ -33,3 +33,25 @@ export function worldToModelLocal( g.worldToLocal(v); return { x: v.x, y: v.y, z: v.z }; } + +export function modelLocalToWorld( + modelId: string | null | undefined, + p: { x: number; y: number; z: number }, +): { x: number; y: number; z: number } | null { + const g = getModelLocalGroup(modelId); + if (!g) return null; + g.updateWorldMatrix(true, false); + const v = new THREE.Vector3(p.x, p.y, p.z); + g.localToWorld(v); + return { x: v.x, y: v.y, z: v.z }; +} + +export function getModelWorldScaleFactor(modelId: string | null | undefined): number { + const g = getModelLocalGroup(modelId); + if (!g) return 1; + g.updateWorldMatrix(true, false); + const s = new THREE.Vector3(); + g.getWorldScale(s); + const factor = (Math.abs(s.x) + Math.abs(s.y) + Math.abs(s.z)) / 3; + return Number.isFinite(factor) && factor > 1e-6 ? factor : 1; +}