handle better item scales
This commit is contained in:
@@ -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}
|
||||||
|
|||||||
Reference in New Issue
Block a user