1.概念

FacetData是一项mesh特性,默认是禁用状态,这项特性提供了一些方法和属性用来访问mesh的每个面,比如说facet位置,法线等.
一个mesh有许多个平面构成,例如一个正方体有六个方形平面,每个面在webGL层级上是由两个三角形构成的,我们称基本的三角形为facet
**

2.如何启用facetData

启用facetData仅需要调用函数updateFacetData()

  1. //启用facetData
  2. mesh.updateFacetData();
  3. //禁用facetData
  4. mesh.disableFacetData();

3.常用方法

3.1Facet position

  1. //获取mesh第nth个面的位置
  2. mesh.getFacetPosition(nth)
  3. //将获取的位置存储到已存在的变量
  4. let pos = BABYLON.Vector3.Zero();
  5. mesh.getFacetPositionToRef(nth,pos);
  6. //获取所有面的位置数组(局部坐标系)
  7. let localPositions = mesh.getFacetLocalPositions();

3.2 Facet normal

面的法线是正交与当前面的的标准三维向量.

  1. //获取第nth个面的法线向量
  2. let normal = mesh.getFacetNormal(nth)
  3. //将获取的法线向量存储到已知变量
  4. mesh.getFacetNormalToRef(nth,normal)
  5. //获取所有面的位置数组(局部坐标系)
  6. mesh.getFacetLocalNormals()

3.3 Mesh partitioning