#
luxiaotao1123
2024-04-24 ef1c6cacf5aa4b2bcce35eb3b7bae2db95692edd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import React, { useEffect, useRef } from 'react';
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';
import { useLoader } from '@react-three/fiber';
 
const TreeModel = ({ position, scale }) => {
  const gltfRef = useRef(null);
  const gltf = useLoader(
    GLTFLoader,
    '/models/tree/scene.gltf'
  );
 
  const setShadow = (obj) => {
    if (obj.children) {
      obj.children.forEach((child) => {
        child.castShadow = true;
        child.receiveShadow = true;
        setShadow(child);
      });
    }
  };
  if (gltf.scene) {
    setShadow(gltf.scene);
    gltfRef.current = gltf.scene.clone();
  }
 
  return (
    <>
      <primitive position={position} object={gltfRef.current} castShadow scale={scale} />
    </>
  );
};
 
export default TreeModel;