#
luxiaotao1123
2024-04-22 51c03e5d6d3586d52603d76d76acdf13388883ab
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import { useState, useMemo, useRef, useEffect } from 'react';
import { useFrame } from '@react-three/fiber';
import { useFBX, useAnimations } from '@react-three/drei';
import * as THREE from 'three';
 
const setShadow = (obj) => {
    obj.castShadow = true;
    obj.receiveShadow = true;
 
    if (obj.children) {
        obj.children.forEach((child) => {
            setShadow(child);
        });
    }
};
 
const setColor = (obj) => {
    if (obj.material) {
        obj.material.color.set(0x4680BF);
    }
    if (obj.children) {
        obj.children.forEach((child) => {
            setColor(child);
        });
    }
};
 
const Box = (props) => {
    const { position = [0, 300, 0] } = props;
 
    const boxModel = useMemo(() => {
        const fbx = useFBX('/models/box/box.fbx');
        if (!fbx.castShadow) {
            setShadow(fbx);
        }
        return fbx.clone();
    }, [])
 
    useEffect(() => {
 
    }, []);
 
    return (
        <>
            <group rotation={[0, 0, 0]} scale={0.5} position={position}>
                <primitive object={boxModel} castShadow />
            </group>
        </>
    )
}
 
export default Box;