javascript - 从 Box3 创建 BoxBufferGeometry
问题描述
我想在 three.js 场景上创建一个盒子网格,其中盒子网格的点将与场景中某些现有对象的边界框相同。
我试图以下面显示的方式从 box3 创建盒子网格,但我没有得到正确的结果:
var threeObject = existing object on the scene;
var boundingBox = new THREE.Box3();
boundingBox.setFromObject(threeObject);
var geometry = new THREE.BufferGeometry();
var vertices = new Float32Array( [
boundingBox.min.x, boundingBox.min.y, boundingBox.min.z,
boundingBox.min.x, boundingBox.max.y, boundingBox.min.z,
boundingBox.min.x, boundingBox.min.y, boundingBox.max.z,
boundingBox.min.x, boundingBox.max.y, boundingBox.max.z,
boundingBox.max.x, boundingBox.min.y, boundingBox.min.z,
boundingBox.max.x, boundingBox.max.y, boundingBox.min.z,
boundingBox.max.x, boundingBox.min.y, boundingBox.max.z,
boundingBox.max.x, boundingBox.max.y, boundingBox.max.z,
] );
geometry.addAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );
var material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
var mesh = new THREE.Mesh( geometry, material );
viewer.scene.add(mesh);
如何从 box3 创建网格盒?非常感谢您的帮助!
解决方案
代码中的vertices
数组包含顶点数据,但它们实际上代表面/三角形定义。因此,仅渲染此几何数据会导致一些随机三角形(不可视化框)。
您可以通过向几何图形添加一个索引来解决此问题,该索引将基于您的顶点表示面定义。要理解这个主题,您必须知道索引几何和非索引几何之间的区别。我建议你研究一下THREE.BufferGeometry的官方文档页面。每种几何类型都有官方代码示例。
three.js R107
推荐阅读
- regex - 正则表达式问题
- javascript - fullpage.js 在自动滚动时启用在 div 内滚动而不滚动页面
- angular - 角度 6 路由到主页
- php - API REST 在更新现有资源时返回新资源
- ios - 在 Swift / IOS 中将 shapeLayer 添加到视图层时,绘图应用程序滞后
- java - Java 根据这个输入,程序会显示小于 50 的整数个数
- javascript - node.js 的性能哪一个更好的多类实例或函数调用
- javascript - 用 setTimeout 理解 Vue 中的 while 循环
- laravel - 在流明 laravel 中使用条带连接,安装问题
- ios - 什么是与应用内购买一起提交但我未能包含导致它被拒绝的二进制文件?