我正在用 10 厘米立方体(Godot + C++)制作一个体素游戏,这是在其测试平台中的树生成器:每次点击“new seeds”都会生成一组新的 树木。树干和分支接近我想要的效果,但叶子还不够。

https://reddit.com/link/1xgp3z1/video/qcpvjtwxnzxh1/player

工作原理简述:

  1. 树干:在 20 厘米的步长上沿垂直导向线生长,伴随轻微的噪声弯曲和一定的倾斜。
  2. 主枝:从树干以螺旋方式伸出(每根枝条相对于前一根旋转约 137°),并增长直到达到每种树种设定的冠冕形状边缘(橡树为圆形,桦树为椭圆形,松树为锥形)。
  3. 细枝:空间殖民。在冠冕内部散布点,枝尖向最近的点生长,点在枝条到达它们时被移除。这样填充冠冕而不让枝条相互交叉。
  4. 粗细:根据尖端向树干的方向(即“管子规则”)计算,枝条的粗细永不超过支撑它的部分;树干底部会向外展开几根表面根。
  5. 转为立方体:每个枝条段是一个充满 10 厘米木立方体的锥体,整棵树保持一个面连通的结构,因此可以被砍下。
  6. 叶子:外枝上的点会得到噪声状的叶立方体团块,每个立方体的颜色各不相同。

每种树种仅是一组数字文件。一棵橡树的构建时间约为 5 毫秒(骨架 + 木材 + 叶子)。

我希望得到的反馈:

  • 叶子看起来像是很多独立的 blob。如何让它们看起来像一个完整的冠冕,同时保留孔洞?
  • 分支结构自然吗,还是有什么地方不对?
  • 还有其他建议都很欢迎。

我以后会制作一个更长的视频,详细讲解整个过程。