Cocos Creator 3D 通过顶点创建Mesh - 六边形地图案例

关于 动态创建Mesh 

全网唯一靠谱的一个案例 https://zhuanlan.zhihu.com/p/269862585

这种通过struct和data来创建mesh的方式 实际上还是比较麻烦的

目前全网虽然和U3D的API完全不同 用法也完全不同 但是创建mesh 无非就是顶点数组和索引数组

所以经过多次尝试 总算摸出来了

cocos creator 3.0开始 提供了 utils的工具类  里面包含一些常用的 创建 Cube,Panel,胶囊网格 的工具方法

utils类 虽然仅提供通用的几个几何mesh创建方法  但是返回的 几何数据接口IGeometry  可以用来创建mesh

primitives.IGeometry

进去看 primitives.IGeometry的定义 你会发现 它包含 顶点数组,下标数组,法线数组,uvs, 等等

是的 这就是我想要的! 

虽然 几何数据接口 IGeometry 并不能转换成 meshData 但是 

utils类 提供了一个 通过 IGeometry 来创建mesh的方法

这个API 起初 官方的用法是 

这里我们改改 通过顶点数组直接生成一个 IGeometry 对象 然后创建mesh 就可以 通过utils类提供的 createMesh来创建自定义的mesh对象啦  非常nice!

然后 看下 六边形 格子的创建   网上一大把 六边形的公式

看了下 作业帮里的答案是 高是正六边形内切圆的半径,即:√3/2 a

这里 我得出了公式     当一个半径为r的圆内正六边形 从圆心发送一根射线到AB上 

OP = 0.866025404 * R

这里是约等于!!!

有了这两个 就能得出我们的其它顶点了

然后 将顶点组成的小三角索引利用顺序输入就好了 

这里的报错 没关系的哈 只是提示  实际上运行是正常的 

关于地图创建

这里 我直接贴源码了   我创建了 40×40的地图

大功告成!!!

gitee仓库地址:https://gitee.com/welcome2jcSpace/hex-map-example

Guess you like

Origin blog.csdn.net/qq_39162566/article/details/119654560