未捕获的类型错误:THREE.MTLLoader 不是构造函数 2.0

2024-02-14

我之前在这里问过这个问题:未捕获的类型错误:THREE.MTLLoader 不是构造函数 https://stackoverflow.com/questions/46989337/uncaught-typeerror-three-mtlloader-is-not-a-constructor

我通过更改 Three-mtl-loader 文件来使其工作。但由于我稍后要将我的工作上传到 github,所以我必须在不更改这些文件的情况下创建一个解决方案。

因此,我尝试使用经典示例中使用的加载器加载 obj 和 mtl 文件:https://github.com/mrdoob/ Three.js/blob/master/examples/webgl_loader_obj_mtl.html https://github.com/mrdoob/three.js/blob/master/examples/webgl_loader_obj_mtl.html

但我仍然收到错误“未捕获的类型错误:THREE.MTLLoader 不是构造函数”

我有点不确定如何在这些加载器中加载,但现在我的代码如下所示:

import * as THREE from 'three'
import {OBJLoader} from 'three'
import {MTLLoader} from 'three'


var mtlLoader = new THREE.MTLLoader();
mtlLoader.load("http://blabla.obj.mtl", function(materials) {
   materials.preload();
   var objLoader = new THREE.OBJLoader();
   objLoader.setMaterials(materials);
   objLoader.load("http://blabla.obj", function(object) {

       object.scale.x = scale;
       object.scale.y = scale;
       object.scale.z = scale;

       scene.add(object)

  });
});

在 src 文件夹中的 Three.js 文件中,我插入了:

export { OBJLoader } from './loaders/OBJLoader.js'
export { MTLLoader} from './loaders/MTLLoader.js'

EDIT

我使用 NPM 安装,错误消失了。不幸的是,出现了其他问题 - 但我在另一个问题中问过这些问题:三-mtl-loader 错误:THREE.MeshPhongMaterial:.shading 已被删除 -> 对象不可见 https://stackoverflow.com/questions/47753533/three-mtl-loader-error-three-meshphongmaterial-shading-has-been-removed-ob


Three.js 文档具有误导性。尽管MTLLoader 在主要文档中 https://threejs.org/docs/#examples/loaders/MTLLoader,它实际上不是 Three.js 核心库的一部分。它包含在examples/Three.js 文件夹。

如果您使用 ES6 模块语法,您有两个选择。

选项 1:NPM

通常人们会将这样的东西发布到 NPM,因为 Threejs 的创建者不使用现代 JS 开发实践。在这种情况下,有一个三个 mtl-loader npm 包 https://www.npmjs.com/package/three-mtl-loader包裹。

npm install --save three-mtl-loader

and then

import MTLLoader from 'three-mtl-loader';

选项 2:从 Three 的源复制 MTLLoader。

您可以复制MTLLoader.js https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/MTLLoader.js文件到您的项目中,但如果您使用现代 ES6 模块,将第三方库复制到本地项目中并不是一个好习惯。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

未捕获的类型错误:THREE.MTLLoader 不是构造函数 2.0 的相关文章

随机推荐

  • 在 Msys 上安装 Pip

    我使用 Python 3 5 2 和 Msys 构建了一个简单的 PyGTK 应用程序 但我需要一些默认安装中没有的模块 尽管我可以使用setup py install为了得到它们我宁愿使用pip 我环顾四周发现this https sou
  • 使用 lambda 表达式的嵌套集合创建对象图

    我对利用 lambda 表达式创建属性选择器树感兴趣 使用场景是 我们有一些代码对对象图进行一些递归反射 为了限制递归的范围 我们目前使用 Attributes 来标记应该遍历哪些属性 即获取对象的所有修饰属性 如果该属性是具有修饰属性的引
  • Java接口实现对象?

    是否有 Java 接口隐式实现 java lang Object 当我做这样的事情时出现了这个问题 public static String sizeSort String sa Comparator
  • 在 bash_profile 中设置路径

    为什么设置一个PATH要求 PATH 在最后 PATH Library Frameworks Python framework Versions 2 7 bin PATH 当我附加一条路径时我会这样做 PATH PATH 我如何附加一个PA
  • pylab/networkx;更新后不显示节点标签

    将 matplotlib 更新到当前版本后 我遇到了 networkX 中节点标签的问题 如果我使用nx draw G 命令 我得到一个图表 但没有显示标签 但我们还是举个例子吧 import networkx as nx import m
  • 计算已用时间的 Bash 脚本

    我正在 bash 中编写一个脚本来计算执行命令所用的时间 请考虑 STARTTIME date s command block that takes time to complete ENDTIME date s echo It takes
  • 如何在 p:calendar 中使用 java.time.ZonedDateTime / LocalDateTime

    我一直在 Java EE 应用程序中使用 Joda Time 进行日期时间操作 其中关联客户端提交的日期时间字符串表示形式在将其提交到数据库之前已使用以下转换例程进行转换 即在getAsObject JSF 转换器中的方法 org joda
  • Xampp MySQL 未启动 - “MYSQL 未在 XAMPP 3.2.1 版本上启动...”

    我在我的笔记本电脑上安装了 xampp 版本 3 2 1 之前 mysql 工作正常 但突然 mysql 停止工作 而 apache 和其他人正在工作 当我单击启动 mysql 时 它显示此错误 我使用 Windows 10 8 52 32
  • 我在尝试发送消息时收到错误

    send setOnClickListener new OnClickListener Override public void onClick View v TODO Auto generated method stub URI uri
  • KendoUI 网格默认值与数据注释

    我将 Kendo UI Grid 与 ASP NET MVC Helpers 和自动生成的列一起使用 I have DefaultValue 60 60 我的视图模型中存在注释 但 Kendo 助手似乎并不尊重这一点 我可以指定默认值 可能
  • 如何将 Observable 序列化到云端并返回

    我需要分割处理序列 就像在这个问题中如何使用 net RX 组织数据处理器的序列 https stackoverflow com q 13310865 296494 到 Azure 环境中的多个计算单元 这个想法是将 Observable
  • 如何在 android 10 - android Q - MIUI 11 中从后台启动活动

    我在真实设备上的 android 10 android Q MIUI 11 中从后台启动活动时遇到问题 在这个线程中 在android 10中启动活动背景 https stackoverflow com a 59421118 1006090
  • Java Selenium WebDriver 找不到表单字段

    我正在测试一个注册页面 并且尝试了名称 xpath id 类 但似乎没有任何效果 这是我的硒代码 driver findElement By id pushMenu click Thread sleep 2000 driver findEl
  • CALayer + NSOutlineView/NSTableView

    问题是 基于视图的 NSOutlineView 或 NSTableView 两者都有这个问题 包含一个托管 CALayer 的自定义控件 用于自定义动画目的 调整大纲视图大小时或删除行 动画删除 后 CALayer 会在错误的位置绘制 这是
  • 检测光盘是否在 DVD 驱动器中

    有没有简单的方法来检测 DVD 驱动器中是否插入了光盘 我不在乎哪种光盘 CD DVD 或蓝光 使用 WMI 检测磁盘是否在 CD DVD 驱动器中 foreach var drive in DriveInfo GetDrives Wher
  • AngularJS - 等待多个资源查询完成

    我有一个用 ngResource 定义的工厂 App factory Account function resource return resource url query method GET 我正在多次调用该工厂中定义的查询方法 这些调
  • 查找两组整数的所有成对 OR 的集合

    给定两个集合 每个集合都包含整数值 如何找到包含所有可能的成对值的集合ORs这两组的值 例如 所有数字都是二进制 1 10 x 100 1000 101 1001 110 1010 1 10 x 11 101 11 101 111 第一个示
  • Excel:将秒转换为 dd 天 hh:mm:ss 格式

    我想将秒转换为 dddays时 分 秒 这就是我所拥有的 我有一个单元格 A1 其值为 457003 在单元格 B1 中我正在执行 Text A1 24 60 60 dd hh mm ss 并且它返回 05 06 56 43 我要找的是 0
  • 在 PowerShell 中添加数字

    我正在尝试在 PowerShell 中将两个数字相加 我将用户提供的输入存储在 Value1 and Value2 但是我找不到任何方法来实际将这些数字相加 我尝试使用Measure Objectcmdlet 但我似乎无法让它工作 如何在
  • 未捕获的类型错误:THREE.MTLLoader 不是构造函数 2.0

    我之前在这里问过这个问题 未捕获的类型错误 THREE MTLLoader 不是构造函数 https stackoverflow com questions 46989337 uncaught typeerror three mtlload