A Survey on Procedural Modeling for VirtualWorlds -论文阅读笔记

Introduction
PM包括一系列自动生成方法,用一组输入参数自动的对特定内容进行生成。PM可以与很多领域相联系,如物理模拟、植被和城市分布模拟等。PM最吸引人的地方是可以用少量参数生成很多变种的模型而无需大量数据,另外,一个复杂的几何实体可以用过程式生成模型和一组参数来表示。的目的是大幅减少建模工作,并且可以由一组随机参数生成大量的不同的结果。但除了其拥有紧凑的表示方法、高效率和看似无穷的变种,大多数PM仍旧不能适应艺术家进行手工建模,而需要操作者用复杂的参数对生成结果进行控制,非常不直观,且比较保守。

  • 本文主要内容:
    介绍相关PM方法,根据其使用的技术对方法进行分类,对近期PM方向的进展进行概览,用相关评价标准进行评估,并给出展望。
    评价标准如下:直观性和易用性、用户可控程度、分类(随机、AI、模拟、语法、数据驱动、计算几何)、应用方向(地形、植被、道路、水域、建筑、城市)。
Terrain
  • height map
    最常见的地形数据就是一张二维的高度图,而地形的海拔可以由分形技术进行过程式生成。但是高度图由无法生成特殊地形(悬崖、洞穴)的局限,可替代的地形存储技术包括分层数据结构、体素数据、3D网格。
  • midpoint displacement:
    早期的地形生成算法是基于细分技术(subdivision methods),首先生成一个粗糙的地形然后通过迭代不断进行细化和随机细节。
    算法如下:
    每次生成一个新的点,它的高度数据是其所处的三角形网格的平均,加上一个随机的偏移量。偏移量的范围随迭代次数的增加而减少,最后得到一个分形布朗运动(fBM)的表面。地形生成控制算法通过控制迭代次数和初始偏移量控制地形的精细程度,但是不控制特征生成的位置。
  • 其他高度图随机生成算法:
    1.通常基于噪声生成器如perlin noise,通过对几种频率的缩放和求和得到更像山的地形。布朗分形运动很适合生成山脊和丘陵地形,并且适于并行计算,因为它的每个格点不受邻近点影响,可以独立计算。高阶噪声函数还可以对有体积的物体进行生成,如大理石、树木或云层,如果高阶部分是时间的函数,还可以产生一定动态效果。这些算法基本是同一性质的,对高度图的控制都依赖于初始参数,这些参数可能不直观,并且被限制在一个区间内,可以用滤波函数进一步处理。
    2.比较好的进一步改进的方法是用基于物理的算法添加对腐蚀和天气情况的模拟,比如热气流和简单的水的腐蚀作用。热气流模拟算法可以通过从高到底扰动材质,直到倾斜角达到临界点,来避免突兀的变化。水力学模拟是根据地形倾斜的角度对水流和被腐蚀物进行细胞运动的模拟。但目前有两个局限,需要很多初始控制参数,不易把握、CPU计算能力达不到。除了对网格点进行操作的算法,也有用粒子在大范围地形中模拟3D的水流腐蚀的算法,它可以在GPU中高效的运行,不过达成真实感需要非常多的粒子。
    3.有一种设想是将地形的限制条件以掩膜图像的形式表达,并用搜索算法对地形进行变形以迎合掩膜图像,但是这种方法计算代价太大。
    4.基于一个既有的实例和大比例尺下地形的特征曲线,根据实例提取和校准高度信息。这种方法直观,但不能处理微小的地形特征。
    5.一种算法设想通过预设代理来创建特殊地形(海滩、海岸、山脉)等,它可以控制特殊地形生成的频率但是不能控制生成位置。
    6.使用AI基于真实世界的高程模型合成高度图,但是网格交界处可能发生突变,并且不能交互的控制地形。
    7.基于草图描绘山脉轮廓生成地形
Vegetation

植物过程式生成的方法可以根据生成的精细程度划分,L分形系统可以生成分叉结构,可以生成精细到植物器官、植物整体、整个植被生态系统三个层次的植物。dL-systems可以模拟植物生长过程。Open L-systems可以使植物体受外部环境影响或引导。
过程式生成通常不会允许植物与地形进行交互调整,但事实上阴影、碰撞等外部因素是影响植物形态的重要条件。将植物模拟为竞争资源的粒子,每个粒子的运动轨迹定义了一条独立的枝干,该粒子还可以再分枝或长出树叶。这种做法也可以用来模拟叶脉或小型植物群落。

Water bodies

1.首先根据高度图生成一个河流网络,然后递归的进行分叉,生成小溪流。
2.最初用一个三角形的两条边分别表示河流的入边和出边,然后对三角形进行细分。
3.将粒子放在最高点,用简单的物理模拟其沿着山脊下落的过程。
4.用一条线画出河水的轨迹,再用算法模拟其河水和河岸的细节。不过这样不能保证符合物理特性。

Roads

可以基于用户辅助定义路径或关键点,或者基于AI算法。地面不能穿过水系,移除路径经过的所有植物,并要使地形适于路面铺展。
1.一种基于shader的方法,将路面数据纹理与高度图纹理混合。

City layout

生成城市的方法可以有基于模式的,基于主体的模拟、基于L系统的或基于张量场的。最简单的做法是生成稠密的网格,并通过噪声干扰减少重复性。
1.更精细的一种方法是观察实际生活,选出集中有代表性的街区模式,进行组合和混合。首先生成高速公路,形成路网的骨架,然后用细小的网格填补空白。和植物一样,路网可以用生长模型来模拟。
2.应用L系统,以人口密度和特殊的道路分布模式为目标,进行导向。
3.统计学对一个样例城市的道路进行分析
4,一种基于主体的模拟将城市划分为住宅、商业、工业、政府工作区、绿化等区域,在种子点放置扩充器和连接器,扩充器搜索未被连接的区域,连接器负责连接。
5.基于用户交互的城市生成,首先由用户定义主路上的点,然后用几种街区模式进行填充。
5.用户手绘草图后,将草图和过程式生成的城市道路用算法进行剪切和归并。
6.从种子点开始追踪张量场的流线。
7.给定主要路网和希望生成的村庄类型,迭代的生成村庄,每次根据地形、斜坡、方位等,选择权重最大的位置生成房子。

Building

大多数采用形式重写方法,如L系统,split grammer,shape grammer等,作为从2D图片生成3D建筑的方法。也有一些用真实世界数据建立语法的,如建筑表面的照片。
过程式建筑表面生成:2D split grammer,在建筑平面图上添加简单图形或分形,生成建筑。split grammer可以生成连续的较真实的表面,可以控制同一个建筑不同的层不一样,如底商。 CGA shape grammer是专门用于3D建模,并生成屋顶和旋转的形状的。它根据平面图挤出一个建筑。但是这样没有考虑每个建筑的角色,遗失了一些语义学信息,因此将这些信息提炼成一个图。

Building interiors

建筑内表面的生成与通常的基于语法生成表面的方法很不相同。
1.实时生成办公楼,只有处在视点中时才分割楼层,进一步生成走廊和独立的房间,根据几种模板对家具进行生成。
2.基于正方化树图。开始先有一个2D的建筑轮廓和所需要的房间类型,然后递归的将轮廓划分为更小的区域,最后生成走廊连接不连通的区域。
3.首先构造一个图表达房间之间的关系,图节点代表房间,边代表房间之间的连接(门或墙)。根据图生成建筑空间,根据某种权重决定房间的大小。
Some available systems
工具介绍和选择

Discussion

一些方法是完全基于随机算法的,如用噪声生成器布朗分形等。另外一些基于ai方法如path finding or planning algorithm。模拟的方法可能融合了物理,城市建模,生物等学科,很成功的应用在地形腐蚀等模拟。基于语法的方法可以被认为是纯粹的过程式生成方法。
少数的pm技术是被现实世界数据提取出的例子或模式所驱动的。很多其他算法应用了分割算法 ,space fill methods,图像处理,生长算法和最优化算法。
也可以从数据的角度观察PM方法,如噪声生成器可以搭配arbitrary的虚拟数据集使用,地形生成器通常用DEM、网格或体积表示法。
现在的PM算法成果还不尽如人意主要是基于两个原因:
1.不直观不好控制,对使用有很多限制。
2.多种过程式生成方法不能协同工作。
PM最重要的一个问题之一就是设计者对输入的控制,及后续修改,最糟糕的情况是只有几个参数来进行生成,好一些的可能需要一个非常冗长的定义过程,改进的有可视化节点编辑器、基于草图绘制的生成、inverse PM等。

Conclusion
  • PM发展的关键节点:
    1、允许实时全局编辑的过程式生成方案
    2、多种过程式生成方法的结合和融合
    3、灵活结合过程式生成模型和手工编辑模型的能力
    4、PM工具与现有内容生成管线的无缝结合
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值