#reactjs #three.js #objloader
#reactjs #three.js #objloader
Вопрос:
Я хотел бы загрузить объект «.obj» с помощью three.js .
Мой код :
/********** Imports **********/
import React, { PureComponent } from 'react';
import * as THREE from 'three';
import OBJLoader from 'three-obj-loader';
OBJLoader('THREE');
export class Satellites extends PureComponent {
componentDidMount() {
// Satellite Sphere
this.geometry = new THREE.SphereGeometry( 10, 32, 32 );
// Texture
this.texture = new THREE.OBJLoader().load
('textures/Satellite.obj',
texture => {
this.sat = new THREE.MeshBasicMaterial( { map: this.texture } );
this.sphere = new THREE.Mesh( this.geometry, this.sat );
this.props.scene.add( this.sphere );
}
)
}
render() {
return null;
}
}
Ошибка :
Attempted import error: 'OBJLoader' is not exported from 'three' (imported as 'THREE').
Итак, я использую этот пакет
Я добавляю эту строку, импортирую OBJLoader из ‘three-obj-loader’;
Но ничего… У меня все еще та же ошибка с этим импортом!
Подробнее:https://github.com/SolenneD/earth-react
Scene.js и Satellite.js (это первая версия, поэтому нет этого кода, но есть texture .obj)
Спасибо за помощь.
Комментарии:
1. Да,
OBJLoader
не является частьюthree.js
ядра. Вы можете попробовать преобразоватьOBJLoader
в модуль самостоятельно или использовать один из существующихnpm
пакетов. Однако последний подход иногда проблематичен, поскольку пакеты не всегда хорошо поддерживаются. Какая ошибка возникает при использованииthree-object-loader
? Ваш текущий общий код, к сожалению, бесполезен в этом контексте.2. Я отредактировал свой вопрос, спасибо!
3. Если вы используете
npm
пакет, этого должно быть достаточно для вызоваnew OBJLoader()
. Обратите внимание на отсутствующееTHREE
пространство имен.4. Я уже вызывал
new OBJLoader ()
сthis.texture = new THREE.OBJLoader().load
помощью. С моим кодом (я отредактировал с помощью импорта) У меня та же ошибка :Attempted import error: 'OBJLoader' is not exported from 'three' (imported as 'THREE').
5. Можете ли вы поделиться проблемным кодом в качестве живого примера ? Можете ли вы хотя бы обновить свой репозиторий кодом, используемым
OBJLoader
? Я проверил ваш репозиторий, но Satellites.js кажется, представляет предыдущую версию.