UE4的自动建树工具

UE4的自动建树工具

一、功能介绍

本工具主要用于对UE4中草坪、花坛、道路等相关模型周边进行自动建树,主要分为四个流程:

  • 拆分整体模型

  • 生成子图块外轮廓

  • 轮廓偏移

  • 对偏移部分插值种树

1.拆分整体模型

由于UE4的模型通常为一个整体模型,需要对模型进行拆分,得到单独的子模型图块。UE4支持导出模型三角网的信息,故从模型的三角网着手对其进行拆分。

拆分大致流程为:从模型的第一个三角网索引进行遍历,如果其它三角网中存在索引与此三角网相同则对此三角网进行递归,并将有索引关联的三角网收集,直至没有三角网索引相同,则最终得到该图块所有三角网信息。

2.生成子图块外轮廓

对分离好的每个子图块的三角网进行如下判断:如果图块中的三角网信息不存在共边情况(每条边只被访问一次),则此边为子图块的外轮廓边。为此对每个子图块建立其顶点个数长度的矩阵,对每条边进行遍历,每遍历一次其访问次数加一。最终统计访问次数为一的边即为子图块外轮廓边。

3.轮廓偏移

对需要种树的子图块采用轮廓偏移算法,其算法思路为:对多边形轮廓的每个点产生的前后两条边进行判断,如图(b),两条边由连续三个点P2、P、P1组成,偏移距离为L则偏移后的点为Q。对草坪外轮廓偏移的主要流程为:首先对外轮廓边进行排序,根据边的起点与终点的关联关系进行遍历拼接,其次对排序好的边根据其点的顺序进行判定,逆时针为内缩,顺时针为外扩。对每个点采用上述偏移算法最终生成偏移后的轮廓。

在这里插入图片描述

​ (a)多边形内缩偏移

在这里插入图片描述

​ (b)算法思路

4.对偏移部分插值种树

将偏移后各边长度累加得到总长度,对此长度进行等差变换,公差为插值距离,计算出每棵树所在长度;对偏移后的各点距离与树所在长度进行分析,得到树对应的坐标;最终得到所有树的位置;之后导出所有树数据并提供给UE4进行建模。

二、效果展示

本工具目前经过测试,可根据树干直径、树冠直径和插值距离在UE4中自动生成相关的树,除此之外在原先只能种植一种类型树的基础上,增加了双层方案,可种植不同种类和间距的树。但是,由于现场实际草坪的情况多种多样,后续还需要不断的样本数据测试,并对树木生成的结果进行优化和完善。
在这里插入图片描述

作者:卞明月

猜你喜欢

转载自blog.csdn.net/ekcchina/article/details/131206114
UE4