无法在 ThreeJS 中显示对象。收到错误:三。OBJLoader:意外行:"usemap glass"



在 angular 8 应用程序中运行 threejs 时出现此错误。我只是想加载一个对象。对象和材质文件是从肯尼资产下载的。我已经查看了官方的 threejs 网站示例,就像这个示例一样,以及在线的其他一些示例。代码为:

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。

与此问题相关的唯一问题是此堆栈溢出问题中的问题。

javascript渲染得很好,除此之外,所有其他网格(简单的网格,CubeGeometry p.e.(都出现在正确的位置,除了这个。

任何帮助,将不胜感激:)

R111开始,THREE.OBJLoader现在可以解析包含usemap渲染标识符的OBJ文件。但是,标识符将被忽略,因为纹理通常在 MTL 文件中定义。请注意,usemap是旧式波前纹理参考方法。

您提到的资产现在应该正确加载。

相关公关: https://github.com/mrdoob/three.js/pull/18000

最新更新