fix: align 3d world mesh display
This commit is contained in:
parent
68eab912d8
commit
4d83a2d001
@ -56,6 +56,7 @@ type Model3DViewerProps = {
|
|||||||
previewImageUrl?: string | null;
|
previewImageUrl?: string | null;
|
||||||
emptyStateTitle?: string;
|
emptyStateTitle?: string;
|
||||||
settings: Model3DViewerSettings;
|
settings: Model3DViewerSettings;
|
||||||
|
modelRotation?: [number, number, number];
|
||||||
layerVisibility?: Record<string, boolean>;
|
layerVisibility?: Record<string, boolean>;
|
||||||
onLayersChange?: (layers: Model3DLayer[]) => void;
|
onLayersChange?: (layers: Model3DLayer[]) => void;
|
||||||
onStatsChange?: (stats: Model3DStats) => void;
|
onStatsChange?: (stats: Model3DStats) => void;
|
||||||
@ -194,12 +195,14 @@ function collectSceneMeta(scene: Object3D): {
|
|||||||
function ModelScene({
|
function ModelScene({
|
||||||
url,
|
url,
|
||||||
settings,
|
settings,
|
||||||
|
modelRotation,
|
||||||
layerVisibility,
|
layerVisibility,
|
||||||
onLayersChange,
|
onLayersChange,
|
||||||
onStatsChange,
|
onStatsChange,
|
||||||
}: {
|
}: {
|
||||||
url: string;
|
url: string;
|
||||||
settings: Model3DViewerSettings;
|
settings: Model3DViewerSettings;
|
||||||
|
modelRotation?: [number, number, number];
|
||||||
layerVisibility?: Record<string, boolean>;
|
layerVisibility?: Record<string, boolean>;
|
||||||
onLayersChange?: (layers: Model3DLayer[]) => void;
|
onLayersChange?: (layers: Model3DLayer[]) => void;
|
||||||
onStatsChange?: (stats: Model3DStats) => void;
|
onStatsChange?: (stats: Model3DStats) => void;
|
||||||
@ -266,7 +269,11 @@ function ModelScene({
|
|||||||
}
|
}
|
||||||
}, [meta.meshRefs, settings.wireframe]);
|
}, [meta.meshRefs, settings.wireframe]);
|
||||||
|
|
||||||
return <primitive object={scene} scale={1} />;
|
return (
|
||||||
|
<group rotation={modelRotation || [0, 0, 0]}>
|
||||||
|
<primitive object={scene} scale={1} />
|
||||||
|
</group>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function ViewerCaptureBridge({
|
function ViewerCaptureBridge({
|
||||||
@ -351,6 +358,7 @@ export function Model3DViewer({
|
|||||||
previewImageUrl,
|
previewImageUrl,
|
||||||
emptyStateTitle = "准备生成 3D 资产",
|
emptyStateTitle = "准备生成 3D 资产",
|
||||||
settings,
|
settings,
|
||||||
|
modelRotation,
|
||||||
layerVisibility,
|
layerVisibility,
|
||||||
onLayersChange,
|
onLayersChange,
|
||||||
onStatsChange,
|
onStatsChange,
|
||||||
@ -458,6 +466,7 @@ export function Model3DViewer({
|
|||||||
<group position={[0, 0, 0]}>
|
<group position={[0, 0, 0]}>
|
||||||
<ModelScene
|
<ModelScene
|
||||||
layerVisibility={layerVisibility}
|
layerVisibility={layerVisibility}
|
||||||
|
modelRotation={modelRotation}
|
||||||
onLayersChange={onLayersChange}
|
onLayersChange={onLayersChange}
|
||||||
onStatsChange={onStatsChange}
|
onStatsChange={onStatsChange}
|
||||||
settings={settings}
|
settings={settings}
|
||||||
|
|||||||
@ -876,8 +876,10 @@ export function World3DNode({
|
|||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={cn(
|
className={cn(
|
||||||
"relative h-full w-full overflow-hidden rounded-xl border bg-card shadow-sm",
|
"relative h-full w-full overflow-hidden rounded-none border border-[#dbe2ee] bg-white shadow-[0_0_0_1px_rgba(219,226,238,0.34),0_16px_34px_rgba(22,24,29,0.08)] transition-all dark:border-zinc-800 dark:bg-zinc-950",
|
||||||
isSelected && "border-primary"
|
isSelected
|
||||||
|
? "border-[#5b76fe] ring-2 ring-[#5b76fe]/14 shadow-[0_0_0_1px_rgba(91,118,254,0.14),0_20px_38px_rgba(91,118,254,0.12)]"
|
||||||
|
: "hover:border-[#cfd9ea]"
|
||||||
)}
|
)}
|
||||||
onMouseEnter={() => setIsHovered(true)}
|
onMouseEnter={() => setIsHovered(true)}
|
||||||
onMouseLeave={() => setIsHovered(false)}
|
onMouseLeave={() => setIsHovered(false)}
|
||||||
|
|||||||
@ -1540,6 +1540,7 @@ export function World3DViewer({
|
|||||||
<Model3DViewer
|
<Model3DViewer
|
||||||
emptyStateTitle={emptyStateTitle}
|
emptyStateTitle={emptyStateTitle}
|
||||||
layerVisibility={meshLayerVisibility}
|
layerVisibility={meshLayerVisibility}
|
||||||
|
modelRotation={[Math.PI, 0, 0]}
|
||||||
modelUrl={meshUrl}
|
modelUrl={meshUrl}
|
||||||
onLayersChange={onMeshLayersChange}
|
onLayersChange={onMeshLayersChange}
|
||||||
onStatsChange={onMeshStatsChange}
|
onStatsChange={onMeshStatsChange}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user