我有多个网格物体,并希望在六边形[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] );
答案 0 :(得分:0)
如果网格形状未知(甚至是否已关闭?)那么您要么做一些奇特的事情,比如使用签名距离字段,体素化,或者根据@gaitat建议的边界框选择一个点。样品使用盒子和球体的原因是因为这些形状具有非常好的简单算术特性。如果你想做一些更好的事情,比如在随机形状中选择随机点,那么......那就更难了!
您可能考虑的另一种方法是让隐形粒子发射区成为您对象的一部分。例如,你的物体可能像游戏中的怪物一样被塑造,但它内部的粒子只来自复杂的几个球形区域,变形网格。不是直接来自网格本身。