首页 > 解决方案 > 如何在 React Native 中提供 .obj 和 .mtl 文件的目录路径?

问题描述

我正在使用 react-viro 在我的应用程序中包含 AR 支持。Viro 集成非常完美,我可以在 AR 模式下看到文本。但是当我尝试使用 Viro3DObject 包含任何 3D 对象时,我收到一条错误消息,提示“无法从(我的文件的本地路径)找到模块”。当我从服务器加载相同的资产时,我可以使用它的 URI 加载它。

根据 React-Viro 文档,默认情况下 React-native 不支持扩展名为 .obj 和 .mtl 的 3D 文件。所以,我按照这种方法来包括支持。但是,同样的错误仍然存​​在。

https://docs.viromedia.com/docs/importing-assets#adding-asset-types

<Viro3DObject
source={require('./emoji_vow/emoji_vow.vrx')}
position={[0, .2, 0]}
scale={[.2, .2, .2]}
type="VRX"
lightReceivingBitMask={3}
shadowCastingBitMask={2}
transformBehaviors={['billboardY']}
resources={[require('./emoji_wow/emoji_wow_diffuse.png'),
require('./emoji_wow/emoji_wow_specular.png'),
require('./emoji_wow/emoji_wow_normal.png')]}/>

标签: react-nativereact-native-androidreact-native-iosvirtual-reality

解决方案


添加 Metro.config.js

'use strict';

const { getDefaultConfig } = require("metro-config");

module.exports = (async () => {
  const {
    resolver: { assetExts }
  } = await getDefaultConfig();

  return {
    resolver: {
      assetExts: [...assetExts, "obj", "mtl", "JPG", "vrx", "hdr", "gltf", "glb", "GLB", "bin", "arobject", "gif"]
    }
  };
})();

应该没问题


推荐阅读