Как указать путь к каталогу для файла .obj

#react-native #react-native-android #react-native-ios #virtual-reality

#react-native #react-native-android #react-native-ios #виртуальная реальность

Вопрос:

Я использую react-viro для включения поддержки AR в мое приложение. Интеграция с Viro идеальна, я могу видеть текст в режиме AR. Но когда я пытаюсь включить любой 3D-объект с помощью Viro3DObject, я получаю сообщение об ошибке «Модуль не найден из (локальный путь к моему файлу)». Когда я загружаю тот же ресурс с сервера, я могу загрузить его с помощью его URI.

Согласно документации React-Viro, React-native по умолчанию не поддерживает 3D-файлы с расширениями .obj и .mtl. Итак, я последовал этому подходу, чтобы включить поддержку. Но все же та же ошибка сохраняется.

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')]}/>
 

Ответ №1:

добавить 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"]
    }
  };
})();
 

должно быть хорошо

Комментарии:

1. Вау, спасибо! По-видимому, функция async была ключевой, я пытался решить эту проблему в течение нескольких часов. Теперь я даже могу видеть большинство объектов, отображаемых в симуляторе ios.