STLloader/THREE.js error: "Uncaught RangeError: offset is outside the bounds of the DataView"
STLloader/THREE.js error: "Uncaught RangeError: offset is outside the bounds of the DataView"
我想在 javascript 中编写一个 stl 文件的小查看器,因此为此使用库 three.js 和模块 STLLoader,对于这个查看器,我使用一个上传系统API 在 node.js 中(我通过使用获取请求发送文件并在背面强大的保存文件)并且对于 viwer 页面使用获取地址请求并获取 stl 文件内容,现在加载stl 数据我使用这段代码:
var contents = stl_name;
var geometry = new THREE.STLLoader().parse( contents );
geometry.sourceType = "stl";
var mesh = new THREE.Mesh( geometry, material );
mesh.rotation.x = 5;
mesh.rotation.z = .25;
scene.add( mesh );
但它是 return 一个错误(我只对 stl 二进制文件有这个错误,ASCII stl 文件工作正常):“未捕获的 RangeError:偏移量超出了 DataView 的范围”,
不知道怎么卖的,先谢谢了。
测试文件示例:test.stl
我可以通过拖放将资产成功导入 three.js editor。所以看起来你的应用程序有问题或者你没有使用最新版本的 three.js
.
无论如何,请尝试在编辑器中使用 similar code。本质上是这样的:
const reader = new FileReader();
reader.addEventListener( 'load', function ( event ) {
const contents = event.target.result;
const geometry = new THREE.STLLoader().parse( contents );
const material = new THREE.MeshStandardMaterial();
const mesh = new THREE.Mesh( geometry, material );
mesh.name = filename;
scene.add( mesh );
}, false );
reader.readAsArrayBuffer( file );
我终于通过在 API (stl) 中添加 node.js 库解决了我的问题,将二进制 stl 转换为 ASCII stl。 link to the library
我想在 javascript 中编写一个 stl 文件的小查看器,因此为此使用库 three.js 和模块 STLLoader,对于这个查看器,我使用一个上传系统API 在 node.js 中(我通过使用获取请求发送文件并在背面强大的保存文件)并且对于 viwer 页面使用获取地址请求并获取 stl 文件内容,现在加载stl 数据我使用这段代码:
var contents = stl_name;
var geometry = new THREE.STLLoader().parse( contents );
geometry.sourceType = "stl";
var mesh = new THREE.Mesh( geometry, material );
mesh.rotation.x = 5;
mesh.rotation.z = .25;
scene.add( mesh );
但它是 return 一个错误(我只对 stl 二进制文件有这个错误,ASCII stl 文件工作正常):“未捕获的 RangeError:偏移量超出了 DataView 的范围”, 不知道怎么卖的,先谢谢了。
测试文件示例:test.stl
我可以通过拖放将资产成功导入 three.js editor。所以看起来你的应用程序有问题或者你没有使用最新版本的 three.js
.
无论如何,请尝试在编辑器中使用 similar code。本质上是这样的:
const reader = new FileReader();
reader.addEventListener( 'load', function ( event ) {
const contents = event.target.result;
const geometry = new THREE.STLLoader().parse( contents );
const material = new THREE.MeshStandardMaterial();
const mesh = new THREE.Mesh( geometry, material );
mesh.name = filename;
scene.add( mesh );
}, false );
reader.readAsArrayBuffer( file );
我终于通过在 API (stl) 中添加 node.js 库解决了我的问题,将二进制 stl 转换为 ASCII stl。 link to the library