From 26dede87608f9ced212a3f76acd358dc4544747b Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期二, 23 四月 2024 17:02:03 +0800
Subject: [PATCH] #

---
 src/components/shelf.jsx |   54 ++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 42 insertions(+), 12 deletions(-)

diff --git a/src/components/shelf.jsx b/src/components/shelf.jsx
index aa2bfa3..1edf4b9 100644
--- a/src/components/shelf.jsx
+++ b/src/components/shelf.jsx
@@ -2,29 +2,59 @@
 import { useGLTF } from '@react-three/drei';
 import * as THREE from 'three';
 import { MODEL_SHELF_SCALE } from '@/config/setting'
+import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader';
+import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';
+
+const generateScene = async () => {
+    const loader = new GLTFLoader();
+    const dracoLoader = new DRACOLoader();
+    dracoLoader.setDecoderPath('/draco/');
+    loader.setDRACOLoader(dracoLoader);
+
+    return await new Promise((resolve, reject) => {
+        loader.load('/models/shelf/row.glb', function (mesh) {
+            console.log(mesh);
+            resolve(mesh.scene)
+        })
+    })
+}
 
 const Shelf = (props) => {
     const { position = [0, 300, 0], rotationY = 0 } = props;
 
-    const { scene } = useGLTF('/models/shelf/row.glb');
-    console.log(scene);
+    const dracoLoader = new DRACOLoader();
+    dracoLoader.setDecoderPath('draco/');
+    useGLTF.setDecoderPath('/draco/');
+    // const { scene } = useGLTF('/models/shelf/row.glb', '/draco/');
 
-    const model = useMemo(() => scene.clone(), [scene]);
+    const { nodes, materials } = useGLTF('/models/shelf/row.glb');
+    console.log(nodes);
+
+
+    const { nodes: nodes1, materials1, animations } = useGLTF('/models/shelf/Horse.glb');
 
     return (
         <>
-            <mesh position={position}>
-                <boxGeometry args={[50, 50, 50]} />
-                <meshStandardMaterial color={'hotpink'} />
-            </mesh>
-            {/* <group rotation-y={rotationY} position={position}>
-                <primitive
-                    object={model}
+            <group rotation-y={rotationY} position={position}>
+                <primitive object={generateScene()} />
+                <mesh
                     castShadow
                     receiveShadow
-                    scale={[MODEL_SHELF_SCALE, MODEL_SHELF_SCALE, MODEL_SHELF_SCALE]}
+                    geometry={nodes.鐗╀欢_1001.geometry}
+                    material={materials['鏉愯川_1.002']}
+                    position={[0, 2, 0.3]}
+                    rotation={[Math.PI / 2, 0, Math.PI / 2]}
+                    scale={70}
                 />
-            </group> */}
+                <mesh
+                    castShadow
+                    receiveShadow
+                    geometry={nodes1.mesh_0.geometry}
+                    material={nodes1.mesh_0.material}
+                    morphTargetDictionary={nodes1.mesh_0.morphTargetDictionary}
+                    morphTargetInfluences={nodes1.mesh_0.morphTargetInfluences}
+                />
+            </group>
         </>
     )
 }

--
Gitblit v1.9.1