handle better item scales

This commit is contained in:
wass08
2026-02-23 11:11:22 +09:00
parent d15f601107
commit 6581e25e9f
2 changed files with 7 additions and 3 deletions
@@ -745,7 +745,8 @@ export function usePlacementCoordinator(config: PlacementCoordinatorConfig): Rea
} }
}) })
const dims = config.asset.dimensions ?? DEFAULT_DIMENSIONS const initialDraft = draftNode.current
const dims = initialDraft ? getScaledDimensions(initialDraft) : (config.asset.dimensions ?? DEFAULT_DIMENSIONS)
const initialBoxGeometry = new BoxGeometry(dims[0], dims[1], dims[2]) const initialBoxGeometry = new BoxGeometry(dims[0], dims[1], dims[2])
initialBoxGeometry.translate(0, dims[1] / 2, 0) initialBoxGeometry.translate(0, dims[1] / 2, 0)
@@ -40,7 +40,7 @@ export const ItemRenderer = ({ node }: { node: ItemNode }) => {
useRegistry(node.id, node.type, ref) useRegistry(node.id, node.type, ref)
return ( return (
<group position={node.position} rotation={node.rotation} scale={node.scale} ref={ref} visible={node.visible}> <group position={node.position} rotation={node.rotation} ref={ref} visible={node.visible}>
<Suspense fallback={<PreviewModel node={node} />}> <Suspense fallback={<PreviewModel node={node} />}>
<ModelRenderer node={node} /> <ModelRenderer node={node} />
</Suspense> </Suspense>
@@ -73,6 +73,9 @@ const PreviewModel = ({ node }: { node: ItemNode }) => {
) )
} }
const multiplyScales = (a: [number, number, number], b: [number, number, number]): [number, number, number] =>
[a[0] * b[0], a[1] * b[1], a[2] * b[2]]
const ModelRenderer = ({ node }: { node: ItemNode }) => { const ModelRenderer = ({ node }: { node: ItemNode }) => {
const { scene, nodes } = useGLTF(resolveCdnUrl(node.asset.src) || '') const { scene, nodes } = useGLTF(resolveCdnUrl(node.asset.src) || '')
@@ -115,7 +118,7 @@ const ModelRenderer = ({ node }: { node: ItemNode }) => {
return ( return (
<Clone <Clone
object={scene} object={scene}
scale={node.asset.scale} scale={multiplyScales(node.asset.scale, node.scale)}
position={node.asset.offset} position={node.asset.offset}
rotation={node.asset.rotation} rotation={node.asset.rotation}
{...handlers} {...handlers}