使用three.js渲染.stl文件时自动缩放
Auto-scale when rendering an .stl file with three.js
我正在尝试创建一个服务器/网页,工作原理如下:
- 客户端上传他们想要3d打印的。stl文件
- 服务器在.stl文件上运行网格修复脚本
- 新修复的。stl文件在客户端浏览器中呈现,以便他们可以确认脚本没有以不良方式更改。stl文件
我遇到的问题是步骤3。我试图使用这个例子从3 .js的repo渲染。stl文件:
https://github.com/mrdoob/three.js/blob/master/examples/webgl_loader_stl.html问题是,如果.stl文件中的模型太大,你无法看到整个东西。我可以通过在mesh.scale中使用三个参数来修复这个问题,这样整个模型就可以在相机的视野中了。在代码块中设置(x, y, z)函数:
var loader = new THREE.STLLoader();
loader.addEventListener( 'load', function ( event ) {
var geometry = event.content;
var mesh = new THREE.Mesh( geometry, material );
mesh.position.set( 0, - 0.37, 0 );
mesh.rotation.set( - Math.PI / 2, 0, 0 );
mesh.scale.set( 2, 2, 2 );
mesh.castShadow = true;
mesh.receiveShadow = true;
scene.add( mesh );
} );
loader.load( './models/stl/binary/pr2_head_tilt.stl' );
但是,我想知道如何在。stl文件中自动识别模型的大小,并相应地缩放它。
我知道这是可能的,因为GitHub已经用他们的STL文件查看器实现了这一点。您可以通过导航到这里并单击其中一个.stl文件来查看它是如何工作的:
https://github.com/mrdoob/three.js/tree/master/examples/models/stl/binary基本上GitHub STL文件查看器正是我想要模拟的,因为它干净地加载任何. STL文件,而不需要用户放大/缩小以正确查看模型。
在你的视口中有多少模型是可见的取决于你的相机参数和你如何设置你的场景。您可以使用几何的。boundingbox或。boundingsphere来计算模型的大小,然后使用一些启发式方法来适当地缩小或扩大模型以达到您想要的效果。还有一个BoundingBoxHelper,可以帮助您可视化模型的扩展。
另外你可以看:如何适合相机对象和调整镜头使Three.js形状可见
相关文章:
- 更改高贴图的缩放级别
- 在不阻止默认行为的情况下检测IE10中的缩放
- 单击超链接时,如何使用Google Maps API v3缩放地图
- 缩放Raphael/SVG容器以适应所有内容
- 传单缩放控制位置错误
- 在不移动内部文本的情况下缩放元素的效果
- 调整缩放窗口高度提升缩放
- 计算CSS3缩放框在另一个框中的最高位置
- D3.JS向rect添加缩放和列表项
- 当我在节点上拖动鼠标时,我如何防止使用d3.ehavior.zoom().on(“缩放”,重绘)
- 将直流图表库中的折线图缩放限制为小时
- 为什么缩放按钮不会显示在照片擦除中
- 动态设置谷歌地图缩放
- 从输入[类型=文件]缩放图像
- 如何为 jpg 文件创建响应式视口,供用户缩放、滚动和点击
- 如何在openlayers上显示缩放级别(仅限js/html文件)
- 设置缩放谷歌地图v3不工作的文件准备
- HTML5拖放/文件API缩略图上传器不工作
- 使用three.js渲染.stl文件时自动缩放
- 在leaflet.js中使用基于map's缩放级别的不同JavaScript文件