当前位置: 首页 > 知识库问答 >
问题:

没有显示贴花

方宁
2023-03-14

我试图在我的网格上创建一个贴花使用three.js和反应-三纤维。我相信我正确地设置了网格和材料,但由于某种原因,贴花没有出现在画布上。

这是包含模型、背板和贴花的父组件。

<Canvas camera={{ position: [0, 0, 2], fov: 70 }}>
    <Lights />
    <Suspense fallback={null}>
        <Model flipped={flipped} returnMesh={setMesh} />
        <Decal mesh={mesh} />
        <Back />
    </Suspense>
</Canvas>

这是我从. glb文件创建t恤网格的组件的一部分。网格传递回父节点,然后传递到Decal组件。

let geometry, material, mesh;

// GEOMETRY
geometry = useGLTF("/tshirt.glb").nodes.tshirt.geometry;

useEffect(() => {
    material = new THREE.MeshStandardMaterial({ color: "orange" });
    mesh = new THREE.Mesh(geometry, material);
}, []);

以下是我尝试设置贴花网格的方式:

extend({ DecalGeometry });

const Decal = ({ mesh }) => {
    let decalGeometry;

    useEffect(() => {
        if (mesh) {
            decalGeometry = new DecalGeometry(
                mesh,
                new THREE.Vector3(0, 0, 0),
                new THREE.Euler(0, 0, -1, "XYZ"),
                new THREE.Vector3(0.5, 0.5, 0.5)
            );
        }
    }, [mesh]);

    return (
        <mesh geometry={decalGeometry}>
            <meshStandardMaterial attach="material" color="red" />
        </mesh>
    );
};

我没有得到任何错误,贴花只是没有出现。我希望有人有一些见解。没有太多关于贴花几何体与3J在那里,甚至更具体的r3f。

共有1个答案

皇甫飞宇
2023-03-14

在指定几何图形之前,您正在使用它。这是因为对useffect的回调是在调用deap之后执行的。

建议的修复方法:使用usemohook。

例如。

js prettyprint-override">extend({ DecalGeometry });

const Decal = ({ mesh }) => {
    const decalGeometry = useMemo(() => {
        return new DecalGeometry(
            mesh,
            new THREE.Vector3(0, 0, 0),
            new THREE.Euler(0, 0, -1, "XYZ"),
            new THREE.Vector3(0.5, 0.5, 0.5)
        );
    }, [mesh]);

    return (
        <mesh geometry={decalGeometry}>
            <meshStandardMaterial attach="material" color="red" />
        </mesh>
    );
};
 类似资料:
  • 问题内容: 在1.5.5.3123版本的机盖上运行 Folium版本:0.1.2,内部版本:1 下面的代码; 退货 但没有别的。 如何在ipython笔记本中显示地图? 问题答案: 我发现iPythonNotebooks中有关Folium的本教程很有帮助。您创建的原始Folium实例不足以让iPython显示地图- 您需要做更多的工作才能获得一些iPython可以渲染的HTML。 要在iPytho

  • 为了构建一个贴纸应用程序,我遵循以下指南:https://github.com/whatsapp/stickers/tree/master/Android 一切都很好(包括将贴纸添加到whatsapp),除了一件事:包细节视图()中没有显示webp贴纸。 我正在像这样更改贴纸文件的加载位置 StickerPreviewAdapter.java *如这里所述:https://github.com/w

  • 问题内容: 我是Java初学者 我试图制作我的jframe节目,但没有 它不起作用 问题答案: 我认为您没有正确声明您的JFrame。这是创建简单框架的示例:

  • 问题内容: 我是iOS的新手。我正在尝试显示一个弹出菜单,但是我却无法显示菜单。请帮忙。这是我的代码: 请帮助我显示弹出菜单。 先感谢您。 问题答案:

  • 问题内容: 我看着其他问题,无法解决… 我做了以下安装django-debug-toolbar的操作: pip安装django-debug-toolbar 添加到中间件类: 3添加了INTERNAL_IPS: INTERNAL_IPS =(‘174.121.34.187’,) 4将debug_toolbar添加到已安装的应用程序 我没有收到任何错误或任何内容,并且该工具栏也没有显示在任何页面上,甚

  • 我已经下载了谷歌API,现在我的地图XML似乎是一个标准问题,它只是在谷歌地图应该显示的地方显示了一个灰色抓握,如下所示: 我已经尝试了两个API密钥(通过生成一个新的),但都没有成功。我在清单中添加了internet权限和Google maps库,如下所示: 舱单: API密钥: 这是我的地图XML布局: 我正在设置我的项目谷歌API的SDK版本和我的AVD相同。 当我的应用程序被加载并且我的意