如何在网格内绘制一个点

How to draw a point inside a mesh?

本文关键字:一个 绘制 网格      更新时间:2023-09-26

我有多个网格,并希望在六边形[0]中包含的随机部分添加一个点。我该怎么做呢?

var Hexagon=new Array();
Hexagon[0] = new THREE.Mesh( HexagonExtrude[0],material[0] );
Hexagon[1] = new THREE.Mesh( HexagonExtrude[1],material[1]  );
Hexagon[2] = new THREE.Mesh( HexagonExtrude[2],material[2]  );
Hexagon[3] = new THREE.Mesh( HexagonExtrude[3],material[3]  );
Hexagon[4] = new THREE.Mesh( HexagonExtrude[4],material[4]  );
Hexagon[5] = new THREE.Mesh( HexagonExtrude[5],material[5]  );
Hexagon[6] = new THREE.Mesh( HexagonExtrude[6],material[6]  );
http://jsfiddle.net/fznore2c/

如果网格是未知形状(它甚至是封闭的吗?),那么你要么必须做一些花哨的事情,比如使用带符号距离字段,体素化,或者根据@gaitat建议的边界框选择一个点。样本使用方框和球体的原因是因为这些形状具有非常良好的、简单的算术性质。如果你想做一些更花哨的事情,比如在一个随机的形状中选择随机的点,嗯…那就难多了!

你可以考虑的另一种方法是将不可见的粒子发射器区域作为对象的一部分。你的对象的形状可能像游戏中的怪物,但它内部的粒子只来自复杂的、变形的网格中的几个球形区域。