【发布时间】:2019-11-26 03:30:27
【问题描述】:
在 Angular 8 应用程序中运行 threejs 时出现此错误。我只是想加载一个对象。对象和材料文件是从Kenney assets 下载的。我查看了官方的threejs 站点示例,就像this example,以及其他一些在线示例。代码是:
import * as THREE from "three";
import {MTLLoader} from "three/examples/jsm/loaders/MTLLoader";
import {OBJLoader} from "three/examples/jsm/loaders/OBJLoader";
new MTLLoader()
.load('./../../../../../assets/Models/buildingCorridorOpen.mtl', function (materials) {
materials.preload();
new OBJLoader()
.load('./../../../../../assets/Models/buildingCorridorOpen.obj', function (mesh) {
mesh.position.set(0, 0.5, 0);
scene.add(mesh);
});
});
完整的错误如下:
core.js:6014 ERROR Error: THREE.OBJLoader: Unexpected line: "usemap _defaultMat"
at OBJLoader.parse (OBJLoader.js:633)
at Object.onLoad (OBJLoader.js:402)
at XMLHttpRequest.<anonymous> (three.module.js:35663)
at ZoneDelegate.invokeTask (zone-evergreen.js:391)
at Object.onInvokeTask (core.js:39680)
at ZoneDelegate.invokeTask (zone-evergreen.js:390)
at Zone.runTask (zone-evergreen.js:168)
at ZoneTask.invokeTask [as invoke] (zone-evergreen.js:465)
at invokeTask (zone-evergreen.js:1603)
at XMLHttpRequest.globalZoneAwareCallback (zone-evergreen.js:1640)
项目结构如下:
ClientApp
|_____src
| |____component
| |______ev
| |___factory
| |____js
| |__application.js
|____assets
| |___Models
| |____buildingCorridorOpen.mtl
| |____buildingCorridorOpen.obj
我尝试如下导入加载器,但结果是一样的:
import {MTLLoader} from "three-obj-mtl-loader";
import {OBJLoader} from "three-obj-mtl-loader";
我也试过 .setpath() 然后 load(),但结果是一样的,同样的错误,我使用的是 npm 版本:6.12.1,节点版本:12.13.1。
与此问题相关的唯一问题是this堆栈溢出问题中的问题。
javascript 渲染良好,除此之外,所有其他网格(简单的,CubeGeometry p.e.)都出现在正确的位置,除了这个。
任何帮助,将不胜感激:)
【问题讨论】:
-
我正在尝试修补
OBJLoader以使其更加健壮。我会及时通知你;)
标签: javascript angular three.js