UE4的自动建树工具
一、功能介绍
本工具主要用于对UE4中草坪、花坛、道路等相关模型周边进行自动建树,主要分为四个流程:
-
拆分整体模型
-
生成子图块外轮廓
-
轮廓偏移
-
对偏移部分插值种树
1.拆分整体模型
由于UE4的模型通常为一个整体模型,需要对模型进行拆分,得到单独的子模型图块。UE4支持导出模型三角网的信息,故从模型的三角网着手对其进行拆分。
拆分大致流程为:从模型的第一个三角网索引进行遍历,如果其它三角网中存在索引与此三角网相同则对此三角网进行递归,并将有索引关联的三角网收集,直至没有三角网索引相同,则最终得到该图块所有三角网信息。
2.生成子图块外轮廓
对分离好的每个子图块的三角网进行如下判断:如果图块中的三角网信息不存在共边情况(每条边只被访问一次),则此边为子图块的外轮廓边。为此对每个子图块建立其顶点个数长度的矩阵,对每条边进行遍历,每遍历一次其访问次数加一。最终统计访问次数为一的边即为子图块外轮廓边。
3.轮廓偏移
对需要种树的子图块采用轮廓偏移算法,其算法思路为:对多边形轮廓的每个点产生的前后两条边进行判断,如图(b),两条边由连续三个点P2、P、P1组成,偏移距离为L则偏移后的点为Q。对草坪外轮廓偏移的主要流程为:首先对外轮廓边进行排序,根据边的起点与终点的关联关系进行遍历拼接,其次对排序好的边根据其点的顺序进行判定,逆时针为内缩,顺时针为外扩。对每个点采用上述偏移算法最终生成偏移后的轮廓。
(a)多边形内缩偏移
(b)算法思路
4.对偏移部分插值种树
将偏移后各边长度累加得到总长度,对此长度进行等差变换,公差为插值距离,计算出每棵树所在长度;对偏移后的各点距离与树所在长度进行分析,得到树对应的坐标;最终得到所有树的位置;之后导出所有树数据并提供给UE4进行建模。
二、效果展示
本工具目前经过测试,可根据树干直径、树冠直径和插值距离在UE4中自动生成相关的树,除此之外在原先只能种植一种类型树的基础上,增加了双层方案,可种植不同种类和间距的树。但是,由于现场实际草坪的情况多种多样,后续还需要不断的样本数据测试,并对树木生成的结果进行优化和完善。
作者:卞明月