使用 three.js 加载 STL 文件时出错

Posted

技术标签:

【中文标题】使用 three.js 加载 STL 文件时出错【英文标题】:Error while loading an STL file using three.js 【发布时间】:2018-06-16 20:24:02 【问题描述】:

我想使用three.js 显示一个STL 文件的预览。我遵循了以下教程,因为这正是我所需要的:

Tutorial

我在以下行中收到一个名为 undefined is not a function (near '...loader.addEventListener...') 的错误:

    var loader=new THREE.STLLoader();
    loader.addEventListener('load', function (event)
    var geometry=event.content;
    var material=new THREE.MeshLambertMaterial( ambient: 0xFBB917,color: 0xfdd017 );
    var mesh=new THREE.Mesh(geometry, material);
    scene.add(mesh););

我还正确地包含了所有文件,我的代码有什么问题,或者是否有任何替代方法可以使用 javascript 简单预览 STL 文件?

【问题讨论】:

【参考方案1】:

看起来该教程是用旧版本的 three.js 编写的。对于较新的版本,在加载 STL(和其他模型格式)时,您必须使用 .load 函数:

var material = new THREE.MeshLambertMaterial( ambient: 0xFBB917,color: 0xfdd017 );

var loader = new THREE.STLLoader();
loader.load( './models/stl/slotted_disk.stl', function ( geometry ) 
  scene.add( new THREE.Mesh( geometry, material ) );
);

STLLoader.js:L18-30

【讨论】:

以上是关于使用 three.js 加载 STL 文件时出错的主要内容,如果未能解决你的问题,请参考以下文章

three.js加载stl模型文件,怎么能让模型大小一致并居中

“仅 HTTP 支持跨源请求。”加载本地文件时出错

“仅 HTTP 支持跨源请求。”加载本地文件时出错

“仅 HTTP 支持跨源请求。”加载本地文件时出错

如何在 STL 加载的 BufferGeometry 中平滑网格三角形

如何在使用three.js和jsonLoader时制作加载屏幕?