Ну, я опоздал примерно на 3 месяца, но я надеюсь, что это разрешит любые сомнения в случае, если кто-нибудь найдет этот вопрос.
Прежде всего вам нужно будет импортировать рендер GLB, ваше приложение не ' В настоящее время я не знаю, какой файл GLB вы пытаетесь визуализировать. Что-то вроде этого должно сделать:
import MyCustomRender from 'src/static/glb/an_awesome_bird.glb'
Затем, каждый раз, когда вы создаете экземпляр компонента птицы, вы сможете передать его как опору, как в
<Bird
key={i}
position={[x, y, z]}
rotation={[0, x > 0 ? Math.PI : 0, 0]}
speed={speed}
factor={factor}
url={MyCustomRender}
/>
Теперь, так как вы используете Next JS, это означает, что вы в настоящее время используете WebPack для комплектации своего приложения.
Дело в том, что WebPack с самого начала не знает, что такое glb
или GLTF
файл, вы должны сообщить этому маленькому модулю, как вести себя при импорте файла с указанным расширением.
Вы можете сделать это, обновив файл next.config.js
следующим образом:
module.exports = withCSS(withSass({
webpack (config, options) {
config.module.rules.push({
test: /\.(glb|gltf)$/,
use: {
loader: 'file-loader',
}
})
return config
}
}))
По сути, это означает, что вы говорите Webpack: «Эй, если вы видите, что я импортирую какие-либо файлы .gltf или .glb, это означает, что я хочу их путь, поэтому дайте мне их URL».
В случае, если вы не Если у вас установлен загрузчик файлов для Webpack, вы всегда можете сделать
npm install file-loader --save-dev
Несколько дней go Я сделал репо, используя точно такой же стек:
https://github.com/franco-roura/react-game
(за исключением того, что я не использовал Next JS, поэтому мой next.config.js
на самом деле webpack.config.js
)
Надеюсь, это поможет вам устранить любые сомнения!