Не уверен, что это неприемлемое требование, но я считаю, что expo нужно загружать свои ресурсы из локального хранилища, а не из удаленных URL-адресов.
Сначала загрузите файл wall.jpg и сохраните его локально (в моемcase, папка в корневом каталоге с именем 'assets'.
Теперь вам нужно настроить expo для добавления файлов jpg в ваш пакет. Откройте app.json в корневом каталоге вашего приложения и обновите или добавьте в ""packagerOpts ", чтобы включить jpg:
"packagerOpts": {
"assetExts": ["jpg"]
},
Вам также может понадобиться создать файл в корневом каталоге вашего приложения с именем" metro.config.js ", который будет содержать следующее:
module.exports = {
resolver: {
assetExts: ["jpg"]
}
}
Теперь, когда ваш упаковщик включает JPG-файлы в ваш пакет приложений expo, вы можете использовать встроенную функцию ExpoAsREE loadAsync для загрузки вашего jpg:
const texture = await ExpoTHREE.loadAsync(
require('./assets/wall.jpg')
);
const geometry = new THREE.SphereGeometry(3, 50, 50, 0, Math.PI * 2, 0, Math.PI * 2);
const material = new THREE.MeshPhongMaterial({map: texture});
С этими изменениями ваш код будет работать на моем концеВы можете использовать один и тот же процесс для добавления файлов разных типов в ваш пакет и загрузки их для использования в ExpoTHREE. Просто добавьте различные типы файлов в массивы в вашем app.jsonи metro.config.js, и они будут объединены для использования в вашем приложении.