You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular+TypeScript中Three.js OBJ Loader创建失败,实例为undefined求助

解决Angular中Three.js OBJ Loader实例化返回undefined的问题

我之前在Angular项目里用Three.js加载OBJ模型时也踩过这个坑!你的代码问题出在对three-obj-loader这个包的用法理解错了,下面给你拆解原因和正确的实现方式:

为什么实例化后是undefined?

three-obj-loader并不是一个独立的构造函数类,它的核心作用是把Three.js官方的OBJLoader扩展到全局的THREE命名空间上,而不是返回一个可以直接new的构造函数。你用new THREEObjLoader(THREE)的方式调用,本质上是在尝试实例化一个不存在的类,所以自然会得到undefined。

正确的使用步骤

方式一:使用three-obj-loader扩展Three.js

  1. 确保已经安装了依赖:
npm install three three-obj-loader --save
  1. 在你的Angular组件中正确导入并扩展:
import * as THREE from 'three';
import * as THREEObjLoader from 'three-obj-loader';

// 关键一步:调用工具把OBJLoader挂载到THREE上
THREEObjLoader(THREE);

// 现在可以直接通过THREE.OBJLoader实例化了
const objLoader = new THREE.OBJLoader();

方式二:直接使用Three.js内置的OBJLoader(推荐)

如果你的Three.js版本是r125及以上,其实官方已经把OBJLoader集成到了addons目录里,不需要额外安装three-obj-loader包,直接导入即可:

import * as THREE from 'three';
import { OBJLoader } from 'three/addons/loaders/OBJLoader.js';

// 直接实例化OBJLoader
const objLoader = new OBJLoader();

这种方式更简洁,也能避免第三方包带来的兼容性问题,建议优先用这种方法。

内容的提问来源于stack exchange,提问作者Ramakrishna Hosmani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 15:07:37