繁体   English   中英

在three.js中挤出几何

[英]Extrude Geometry in three.js

我目前正在将STL onject加载到我的three.js场景中。

由于某些原因,渲染/动画需要大量的GPU资源,从而降低了整个场景的速度,因此我一直在考虑其他选择。

因为它是一个非常简单的形状,所以我认为我可以使用创建2D形状并将其拉伸。

3D形状是一个正方形框架( 它是一个相框 ),没有曲线或任何其他聪明的几何形状。

最初,我考虑过创建4个3D椭圆,将每个椭圆旋转90度,然后将它们恰好放置在场景中以使其看起来像一帧-但这并不理想。

这是2D形状(完全是正方形):

这是STL模型的预览

因此,作为将STL模型加载到场景中的一种替代方法,我该如何在three.js中创建此形状(中间有空白 ),然后对其进行拉伸以使其具有一定的深度?

基本的拉伸示例: Shape -> ExtrudeGeometry -> Mesh

 const { renderer, scene, camera } = initThree(); //Create a frame shape.. var frame = new THREE.Shape(); frame.moveTo(-4, -3); frame.lineTo( 4, -3); frame.lineTo( 4, 3); frame.lineTo(-4, 3); //..with a hole: var hole = new THREE.Path(); hole.moveTo(-3, -2); hole.lineTo( 3, -2); hole.lineTo( 3, 2); hole.lineTo(-3, 2); frame.holes.push(hole); //Extrude the shape into a geometry, and create a mesh from it: var extrudeSettings = { steps: 1, depth: 1, bevelEnabled: false, }; var geom = new THREE.ExtrudeGeometry(frame, extrudeSettings); var mesh = new THREE.Mesh(geom, new THREE.MeshPhongMaterial({ color: 0xffaaaa })); scene.add(mesh); renderer.render(scene, camera); 
 body { margin: 0; overflow: hidden; } canvas { display: block; } 
 <script src="//cdnjs.cloudflare.com/ajax/libs/three.js/102/three.min.js"></script> <script src="//cdn.rawgit.com/Sphinxxxx/298702f070e34a5df30326cd9943260a/raw/16afc701da1ed8ed267a896907692d8acdce9b7d/init-three.js"></script> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM