【问题标题】:Load GLB model with Webpack - Three.js使用 Webpack 加载 GLB 模型 - Three.js
【发布时间】:2020-08-24 07:04:20
【问题描述】:

我是第一次尝试使用 Webpack,但我无法添加我的 glb 模型。我的模型没问题,用了很多次,我放在公共文件夹里。我不明白控制台错误,任何帮助将不胜感激,谢谢。

我正在使用 three.js r116 和 Firefox。 Safari 告诉我同样的错误,找不到模型。

这是我的 JS 代码的一部分:

import * as THREE from 'three';
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';

const loader = new GLTFLoader();
    loader.load('/assets/models/street_car.glb', (gltf) => {
        scene.add(gltf.scene);
    });

我的 webpack.config :

const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin');

module.exports = {
    entry: './src/scripts/main.js',
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'dist/main.js',
    },
    performance: {
        hints: false
    },
    plugins: [
        new CopyWebpackPlugin([{ from: '**/*', to: '' }], {
            context: 'src',
            writeToDisk: true,
        }),
    ],
    devServer: {
        contentBase: path.resolve(__dirname, 'dist'),
        port: 9000, 
        historyApiFallback: true
    }
};

最后是控制台错误:

【问题讨论】:

  • 您的.glb 文件的相对地址似乎不正确。尝试在您的浏览器 URL 栏上查找它。当您访问localhost:9000/???/assets/models/street_car.glb 时会发生什么? assets 目录是否与您的 .html 文件位于同一位置?
  • 我只是找到问题并发布解决方案。感谢您的回复 ! :)

标签: webpack three.js gltf


【解决方案1】:

我刚刚发现问题,将这行添加到 webpack.config

module:
    {
        rules:
        [
            {
                test: /\.(glb|gltf)$/,
                use:
                [
                    {
                        loader: 'file-loader',
                        options:
                        {
                            outputPath: 'assets/models/'
                        }
                    }
                ]
            },
        ]
    }

并且不需要在公共文件夹中添加资产,它们在我的 src 文件夹中,带有脚本。

【讨论】:

  • 感谢更新。我正在为您制定解决方案。
  • 很高兴你能成功!我个人更喜欢将我的资产简单地保存在公用文件夹中,因为这样我就不必为.jpg.png 和每种类型的文件添加规则。我必须配置的 Webpack 越少越好。但这只是一个意见问题。 :P
  • @Marquizzo 哈哈我理解你,它是这样工作的,所以我不想再碰了^^
【解决方案2】:

我一直在寻找类似的东西,但要寻找 Symfony Webpack Encore 应用程序配置。 @MlleBz 您的回答实际上对我帮助很大,谢谢。 因此,事不宜迟,如果您希望在 Symfony / React / ThreeJS 应用程序中实现 .glb.gltf 加载程序,请将其添加到您的 webpack.config.js

// add loader for .glb files (use this with three.js)
    .addLoader({
        test: /\.(glb|gltf)$/,
        loader: 'file-loader'
    })

【讨论】:

  • 谢谢,这会有所帮助! ;-)
猜你喜欢
  • 1970-01-01
  • 2019-10-18
  • 2022-07-09
  • 2012-08-11
  • 2019-07-10
  • 2021-07-10
  • 2021-06-30
  • 2022-09-23
  • 2015-01-14
相关资源
最近更新 更多