fix: align 3d world mesh display
This commit is contained in:
parent
68eab912d8
commit
4d83a2d001
@ -56,6 +56,7 @@ type Model3DViewerProps = {
|
||||
previewImageUrl?: string | null;
|
||||
emptyStateTitle?: string;
|
||||
settings: Model3DViewerSettings;
|
||||
modelRotation?: [number, number, number];
|
||||
layerVisibility?: Record<string, boolean>;
|
||||
onLayersChange?: (layers: Model3DLayer[]) => void;
|
||||
onStatsChange?: (stats: Model3DStats) => void;
|
||||
@ -194,12 +195,14 @@ function collectSceneMeta(scene: Object3D): {
|
||||
function ModelScene({
|
||||
url,
|
||||
settings,
|
||||
modelRotation,
|
||||
layerVisibility,
|
||||
onLayersChange,
|
||||
onStatsChange,
|
||||
}: {
|
||||
url: string;
|
||||
settings: Model3DViewerSettings;
|
||||
modelRotation?: [number, number, number];
|
||||
layerVisibility?: Record<string, boolean>;
|
||||
onLayersChange?: (layers: Model3DLayer[]) => void;
|
||||
onStatsChange?: (stats: Model3DStats) => void;
|
||||
@ -266,7 +269,11 @@ function ModelScene({
|
||||
}
|
||||
}, [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({
|
||||
@ -351,6 +358,7 @@ export function Model3DViewer({
|
||||
previewImageUrl,
|
||||
emptyStateTitle = "准备生成 3D 资产",
|
||||
settings,
|
||||
modelRotation,
|
||||
layerVisibility,
|
||||
onLayersChange,
|
||||
onStatsChange,
|
||||
@ -458,6 +466,7 @@ export function Model3DViewer({
|
||||
<group position={[0, 0, 0]}>
|
||||
<ModelScene
|
||||
layerVisibility={layerVisibility}
|
||||
modelRotation={modelRotation}
|
||||
onLayersChange={onLayersChange}
|
||||
onStatsChange={onStatsChange}
|
||||
settings={settings}
|
||||
|
||||
@ -876,8 +876,10 @@ export function World3DNode({
|
||||
return (
|
||||
<div
|
||||
className={cn(
|
||||
"relative h-full w-full overflow-hidden rounded-xl border bg-card shadow-sm",
|
||||
isSelected && "border-primary"
|
||||
"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-[#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)}
|
||||
onMouseLeave={() => setIsHovered(false)}
|
||||
|
||||
@ -1540,6 +1540,7 @@ export function World3DViewer({
|
||||
<Model3DViewer
|
||||
emptyStateTitle={emptyStateTitle}
|
||||
layerVisibility={meshLayerVisibility}
|
||||
modelRotation={[Math.PI, 0, 0]}
|
||||
modelUrl={meshUrl}
|
||||
onLayersChange={onMeshLayersChange}
|
||||
onStatsChange={onMeshStatsChange}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user