首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在反应/三/光纤中增加GLTF对象的辉光效应

如何在反应/三/光纤中增加GLTF对象的辉光效应
EN

Stack Overflow用户
提问于 2022-07-24 12:16:00
回答 1查看 303关注 0票数 1

我用的是反应/三/纤维

在我的项目中,有一个关于汽车模态的GLTF文件

我想使车头灯发光效果。

代码语言:javascript
复制
function Car() {
  const gltf = useLoader(
        GLTFLoader,
        process.env.PUBLIC_URL + './modal/tesla/scene.gltf'
    );

    useEffect(() => {
        gltf.scene.scale.set(0.01, 0.01, 0.01);
        gltf.scene.position.set(0, 0.75, 0);
        gltf.scene.rotation.set(0, Math.PI, 0)
        gltf.scene.traverse((object) => {
            if (object instanceof Mesh) { //check callback is a mesh
                object.castShadow = true;
                object.receiveShadow = true;
                object.material.envMapIntensity = 10
            }
        });
    }, [gltf]);

 return (
        <>
          <mesh> 
                <primitive object={gltf.scene} />
            </mesh>
        </>
    )
}

用聚光灯?

代码语言:javascript
复制
     <spotLight
                color={[0, 0.5, 1]}
                intensity={2}
                angle={0.1}
                penumbra={0.5}
                position={[0, 0, 0]}
                castShadow
                ref={blueSpotLight}
            />

我试过了。然而,没有头灯的辉光效应。另外,gltf文件中所有子文件的位置都是0、0、0。因此,我不能将聚光灯的位置设置为前照灯。

EN

回答 1

Stack Overflow用户

发布于 2022-08-03 12:00:13

两种可能的检查方法,第一,使用一个group来定位轻盈的汽车如下(你可能需要在周围玩一些位置)

代码语言:javascript
复制
function Car() {
  const gltf = useLoader(
        GLTFLoader,
        process.env.PUBLIC_URL + './modal/tesla/scene.gltf'
    );

    useEffect(() => {
        gltf.scene.scale.set(0.01, 0.01, 0.01);
        gltf.scene.position.set(0, 0.75, 0);
        gltf.scene.rotation.set(0, Math.PI, 0)
        gltf.scene.traverse((object) => {
            if (object instanceof Mesh) { //check callback is a mesh
                object.castShadow = true;
                object.receiveShadow = true;
                object.material.envMapIntensity = 10
            }
        });
    }, [gltf]);

 return (
        <>
          <group>
              <spotLight
                color={[0, 0.5, 1]}
                intensity={2}
                angle={0.1}
                penumbra={0.5}
                position={[0, 0, 0]}
                castShadow
                ref={blueSpotLight}
            />
             <mesh> 
                <primitive object={gltf.scene} />
            </mesh>
          </group>
        </>
    )
}

或者,查看发射属性并将发射属性添加到网格的基础上,

代码语言:javascript
复制
 <meshStandardMaterial emissive={[0.5, 0.5, 0.5]} color={[0, 0, 0]} />

根据https://threejs.org/docs/#api/en/materials/MeshStandardMaterial.emissive

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73098329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档