CN102157008A - 一种大规模虚拟人群实时绘制方法 - Google Patents

一种大规模虚拟人群实时绘制方法 Download PDF

Info

Publication number
CN102157008A
CN102157008A CN2011100907759A CN201110090775A CN102157008A CN 102157008 A CN102157008 A CN 102157008A CN 2011100907759 A CN2011100907759 A CN 2011100907759A CN 201110090775 A CN201110090775 A CN 201110090775A CN 102157008 A CN102157008 A CN 102157008A
Authority
CN
China
Prior art keywords
model
rendering
node
lod
detail
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011100907759A
Other languages
English (en)
Other versions
CN102157008B (zh
Inventor
蔡洪斌
卢光辉
张颖
陈雷霆
何明耘
曹跃
邱航
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of Electronic Science and Technology of China
Original Assignee
University of Electronic Science and Technology of China
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by University of Electronic Science and Technology of China filed Critical University of Electronic Science and Technology of China
Priority to CN201110090775.9A priority Critical patent/CN102157008B/zh
Publication of CN102157008A publication Critical patent/CN102157008A/zh
Application granted granted Critical
Publication of CN102157008B publication Critical patent/CN102157008B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)

Abstract

本发明涉及了一种大规模虚拟人群实时绘制方法。包括以下步骤:步骤1,导入传统网格模型,提取模型几何信息与动画信息。步骤2,对模型进行八叉树(Octree)空间划分,其中每一个结点都保存了与结点几何大小相关的部分模型的近似描述。步骤3,对每一个结点所包含的部分模型表面进行点采样。步骤4,样本点的处理与建模,包括插值计算样本点信息,样本点动画信息选取和过采样去冗余等。步骤5,根据指定参数建立三层LOD(LevelsofDetail)等级的模型采样数据。步骤6,在实时渲染时,对大规模场景中的虚拟人群进行GPU加速的视锥体裁剪。步骤7,对裁剪结果实行GPU加速的LOD策略,包括角色LOD选择与LOD排序。步骤8,根据上述步骤的输出,依次对每一层LOD等级的角色进行基于GPU蒙皮骨骼动画的实例化渲染。本发明能够实现大规模虚拟人群的快速实时绘制。

Description

一种大规模虚拟人群实时绘制方法
技术领域
本发明涉及一种大规模虚拟人群实时绘制方法,特别涉及一种结合了基于点采样的模型简化生成技术、基于GPU视锥体裁剪与LOD策略的实时绘制加速技术与基于GPU蒙皮骨骼动画的实例化渲染技术的快速绘制方法。
背景技术
作为虚拟现实技术(Virtual Reality)研究的一个热点与难点,大规模群体动画能实时地把密集人群的虚拟环境形象化。目前,它已经被广泛应用于商业、军事、娱乐、建筑、公共安全等众多领域。大规模虚拟人群实时绘制技术的主要应用领域是动态场景的绘制。与静态场景不同的是,动态场景在处理由海量数据所构成的大规模复杂场景的同时,还需要对场景中的人物角色所处的周围环境进行实时计算与动态处理,并根据特定的情况做出及时判断和反应。尤其是在角色数量不断增多的情况下,其所需的计算开销更是呈几何级数增长。
大规模虚拟人群实时绘制技术从开始受到关注到现在成为前沿方向,其发展并未经历一个很长的过程。但是,这没有影响人们对于它的研究热情。国内外的相关关键技术层出不穷,研究学者们从简化绘制、加速绘制以及快速绘制等多方面进行了研究与分析,提出了一系列用于群体实时绘制的技术。
在简化绘制方面,典型的方法包括基于点的绘制技术(Point-based Rendering Technique)与基于图像的绘制技术(Image-based Rendering Technique)。这两种技术都舍弃了传统的多边形渲染方法,通过新的渲染途径来达到简化的目的。前者是将点作为基本渲染图元,而后者则通过使用图像来代替多边形渲染。
在加速绘制方面,最常用的方法包括隐藏面移除(Hidden Surface Removal)技术与几何细节层次(Levels of Detail)技术。引入它们的目的在于将大规模场景中的物体分策略进行渲染,以有效利用硬件资源,提高绘制速度。对于场景中不可见的物体,需要将其剔除掉;对于距离视点较近的物体,需要使用高分辨率进行精细渲染;对于场景中难以分辨的物体,则需要采用低分辨率进行模糊渲染。但是,上述技术都是通过CPU(中央处理器:Central Processing Unit的缩写)对待绘制对象在场景中的相关信息进行采集以及计算处理,并将处理后的结果传入GPU(GPU英文全称Graphic Processing Unit,中文翻译为“图形处理器”),再利用GPU来进行角色的实时绘制。在GPU得到迅猛发展的今天,现代图形处理单元已经从早期功能单一的图形芯片进化为可以媲美过去超级计算机处理性能的强大处理器,其运算能力与处理速度俨然已经远远超过了普通CPU。人们提出了基于可编程图像硬件的绘制加速技术,将过去CPU应该负责的某些计算处理工作交由可编程硬件GPU来承担,既利用了GPU超强的运算处理能力,提高了数据吞吐量,又最大程度地解放了CPU,使CPU能腾出更多的精力来进行群体模拟运算。
而在大规模群体绘制技术方面,典型的方法包括实例化(Instancing)技术。在群体真实模拟中,每一个虚拟角色都应该具有一定的个性特征,例如外观、位置、动作等。因此,计算机需要对每一个角色进行单独处理,然后使用一次渲染调用进行绘制。但是,一次渲染调用只绘制一个角色,这种做法不仅费时费力,而且还严重限制着群体规模的大小。考虑到群体角色的几何相似性,人们提出了实例化技术,使用一次渲染调用就能绘制出多个实例。
发明内容
为了提高大规模虚拟人群实时绘制的效率与质量,实现大量人群快速逼真的绘制,本发明从简化绘制、加速绘制以及快速绘制方面出发,提供了一种结合基于点采样的模型简化生成技术、基于GPU视锥体裁剪与LOD策略的实时绘制加速技术与基于GPU蒙皮骨骼动画的实例化渲染技术的快速绘制方法。
本发明所采用的技术方案是:一种大规模虚拟人群实时绘制方法,该方法使用点采样技术生成对应等级的层次细节模型,并通过基于图形处理器的视锥体裁剪与多细节层次策略来加速实时绘制,最后通过基于图形处理器蒙皮骨骼动画的实例化渲染来达到快速绘制大规模虚拟人群的目的;其具体步骤包括:步骤1,导入网格模型,提取模型几何信息与动画信息;步骤2,对模型进行八叉树空间划分;步骤3,对每一个结点所包含的模型表面进行点采样;步骤4,样本点的处理与建模;步骤5,根据指定参数建立多细节层次等级的模型采样数据;步骤6,在实时渲染时,对大规模场景中的虚拟人群进行图形处理器加速的视锥体裁剪;步骤7,对裁剪结果实行图形处理器加速的多细节层次策略,包括角色多细节层次选择与多细节层次排序;步骤8,根据上述步骤的输出,依次对每一层多细节层次等级的角色进行基于图形处理器蒙皮骨骼动画的实例化渲染。
优选地,上述多细节层次等级的模型为三层。
优选地,上述优选地,上述步骤2中具体包含以下步骤:步骤2.1, 判断当前结点是否满足划分终止条件,结点的边长小于给定阀值或者结点中包含的三角形面片数小于给定阀值;步骤2.2, 八叉树创建完毕后,将模型中的所有三角形面片进行判断并添加保存到各个结点中。
优选地,上述步骤3中对结点所包含的模型表面进行点采样时有效采样区间小于结点的区间。
优选地,上述步骤4具体包括如下步骤:步骤4.1,通过线性插值法计算样本点的位置坐标与纹理坐标;步骤4.2,选择与相交点距离最近的顶点的骨骼索引与权重信息作为样本点的动画控制信息;步骤4.3,进行采样去冗余。
优选地,上述步骤6具体包含以下步骤:步骤6.1,为场景中的每一种角色计算轴对齐的矩形包围盒,并使用该矩形包围盒的中心来替代角色;步骤6.2,利用视图-投影矩阵构造视锥体六个裁剪平面信息,并传入渲染管线;步骤6.3,将简化顶点集合作为输入传入图形处理器进行渲染。
优选地,上述步骤7具体包含以下步骤:步骤7.1,创建缓存,分别用于接受多细节层次选择输出与多细节层次排序输出;步骤7.2,计算出每一个可见角色与视点的距离,并将其依次与多细节层次阀值进行比较,从而得到对应的多细节层次等级;步骤7.3 ,以多细节层次选择的输出缓存作为输入,分别对其使用渲染调用来进行多细节层次排序。
优选地,上述步骤8具体包含以下步骤:步骤8.1,依次对每一层多细节层次排序渲染从图形处理器中下载排序结果;步骤8.2,对每一层多细节层次等级以对应的多细节层次缓存与采样点数据作为输入进行实例化渲染。
本发明的有益效果是:提出了一种新的快速绘制方法。该方法引入并结合了基于点采样的模型简化生成技术、基于GPU视锥体裁剪与LOD策略的实时绘制加速技术以及基于GPU蒙皮骨骼动画的实例化渲染技术,来实现对大规模虚拟人群的实时绘制过程中的各个阶段进行简化与加速处理,达到最大程度地提升渲染性能的目的;同时,为了使得这三种技术在各自的处理阶段表现的更加出色,以及尽量减少它们在相互之间的过渡过程中的性能损耗,本发明还特别针对方法中的每一种技术做出了相应的优化与修改。包括:在基于点采样的模型简化生成技术中:通过判断有效采样区间来增加采样命中率,选择线性插值方法来重建样本点信息,采用样本点去冗余来简化采样结果,以保留更多的有效细节信息;通过一次采样数据能够建立多层LOD简化模型,减少了预处理时间;使用基于调色板蒙皮动画技术的样本点动画驱动方法,降低了计算开销,实现了群体动画的多样性以及对单个角色的交互控制,满足大规模虚拟人群实时动画的要求;在GS中对样本点进行分裂处理,生成摄像机朝向的布告板来替代样本点进行最终的绘制,利用了GS对几何单元快速处理的优点,提高了渲染速度。在基于GPU视锥体裁剪与LOD策略的实时绘制加速技术中:通过可编程渲染管线来实现视锥体裁剪与LOD策略,利用GPU强大的运算处理能力提高了数据吞吐量,最大程度地解放了CPU,使CPU能更专注于群体模拟运算;引入了LOD排序处理,实现了从加速系统到渲染系统的过渡。在基于GPU蒙皮骨骼动画的实例化渲染技术中:在对样本点进行绘制时引入了GS阶段,实现了从模型简化阶段到渲染阶段的过渡;通过GPU来完成样本点的蒙皮骨骼动画,并对相同LOD等级的角色进行实例化渲染,减少了绘制调用与模型切换次数,降低了内存需求,提高了大规模虚拟群体渲染的实时帧率。
附图说明
图1显示出了本方法的流程图。
图2 显示出了动画纹理示意图。
图3显示出了线性插值样本点计算方法。
图4显示出了“扩展后的视锥体”裁剪方法。
图5显示出了LOD选择的输出结果。
图6显示出了LOD排序的输出结果。
图7显示出了实例化的基本原理。
具体实施方式
该实时绘制方法首先通过基于点采样的模型简化技术生成三层LOD等级的简化模型,在渲染时使用基于GPU的视锥体裁剪与LOD策略技术来实现绘制加速,最后通过基于GPU蒙皮骨骼动画的实例化渲染技术来完成相同LOD等级角色的批次渲染。下面结合附图和实施为例对本方法进行进一步说明(图1所示的流程图给出了整个实施的具体过程)。
步骤1:导入传统网格模型,提取模型几何信息与动画信息。本实施例选用以x为文件扩展名的.x模型文件作为输入,将几何模型数据填入顶点缓存(Vertex Buffer)与索引缓存(Index Buffer)。并使用如下方法进行模型动画信息的传输与使用:将模型中全部动作的所有关键帧的每块骨骼变换矩阵都压缩到一张纹理数据中,即动画纹理。其中,每块骨骼的变换矩阵都被压缩成了                                                
Figure 2011100907759100002DEST_PATH_IMAGE001
的矩阵,并以行为单位被线性地存储到纹理中的一个纹理像素中,排列方式如图2所示。其中,每行数据的个数必须是4的倍数。在可编程渲染管线的顶点着色器阶段,可以通过对动画纹理解码得到所需的骨骼变换矩阵。
压缩方法如下:
Figure 929821DEST_PATH_IMAGE002
其中,
Figure 2011100907759100002DEST_PATH_IMAGE003
表示一个待压缩的骨骼变换矩阵,
Figure 246270DEST_PATH_IMAGE004
为该矩阵第
Figure 2011100907759100002DEST_PATH_IMAGE005
行第列的元素。
在使用时,根据群体模拟更新,可使用其它的群体行为仿真算法,这里将其简化为随机生成的结果,得到实例动画信息即动画解码索引:动作索引(标志动作在动作集里的起始位置)以及骨骼变换矩阵索引(每个动作中一个骨骼变换矩阵的起始位置)。将上述两者相加计算得出该骨骼变换矩阵在纹理中的线性偏移量
Figure 2011100907759100002DEST_PATH_IMAGE007
,以
Figure 917871DEST_PATH_IMAGE007
为索引在动画纹理中查找所需骨骼变换矩阵的各行,再解码得到
Figure 844237DEST_PATH_IMAGE008
的完整矩阵。
解码方法如下:
Figure 2011100907759100002DEST_PATH_IMAGE009
其中,
Figure 895370DEST_PATH_IMAGE010
表示解码后的矩阵,为该矩阵第
Figure 695967DEST_PATH_IMAGE005
行第列的元素。
步骤2:对模型进行八叉树空间划分。划分的具体步骤如下:
步骤2.1 计算模型的AABB(全称:Axis-aligned Bounding Box,意为轴对齐的矩形包围盒,该包围盒刚好能包含模型的所有顶点并且包围盒的每一条边都平行于一个坐标轴。),并以该AABB为根结点开始构建八叉树:
步骤2.1.1 计算该结点AABB的中心与边的半长,作为初始划分参数。
步骤2.1.2 创建结点,并计算结点的边界点:
Figure 2011100907759100002DEST_PATH_IMAGE013
Figure 577707DEST_PATH_IMAGE014
Figure 927917DEST_PATH_IMAGE013
为结点区间的最小下界点, 为结点区间的最大上界点,则
Figure 2011100907759100002DEST_PATH_IMAGE015
构成了结点AABB的范围区间)。
步骤2.1.3 遍历模型中的所有三角形,并记录包含在该结点中面片数。
步骤2.1.4 判断当前结点是否满足划分终止条件:结点边的半长小于给定阀值或者结点中包含的三角形面片数小于给定阀值:
其中
Figure 2011100907759100002DEST_PATH_IMAGE017
为结点边的半长;
Figure 12657DEST_PATH_IMAGE018
的给定阀值;
Figure 2011100907759100002DEST_PATH_IMAGE019
为结点中包含的三角形面片数;
Figure 353957DEST_PATH_IMAGE020
Figure 593308DEST_PATH_IMAGE019
的给定阀值。
步骤2.1.5 如果不满足终止条件,则将该结点按照
Figure 2011100907759100002DEST_PATH_IMAGE021
划分为八个子结点并添加到八叉树中。步骤2.1.6 对每个子结点按照步骤2.1.1至步骤2.1.5继续处理,直到再无结点能够继续划分。
步骤2.2 八叉树创建完毕后,遍历模型中所有三角形面片(由步骤1所得),并对其进行判断,添加并保存到各个结点中。
步骤3:对每一个结点所包含的部分模型表面进行点采样。该步骤是伴随着步骤2进行的,当模型中所有的三角形面片都被添加到了八叉树的结点中之后,开始依次对每个结点进行采样处理。具体步骤如下:
步骤3.1 考虑到结点中的模型网格大多都是连续的,因此可以选用这一段连续网格的
Figure 333643DEST_PATH_IMAGE022
区间来作为采样区间。通过设定有效采样区间大小严格不大于结点的区间大小以保证其最大采样距离为结点边长的一定比例。确定结点有效采样区间的方法如下:
步骤3.1.1 遍历结点包含的所有三角形面片的各个顶点,确定模型网格的连续区间
Figure 658445DEST_PATH_IMAGE024
,并使
Figure 2011100907759100002DEST_PATH_IMAGE025
步骤3.1.2 对该区间进行限制,以使其不超过结点区间大小:
步骤3.1.3 根据采样密度(用以表示采样射线组的密集程度,需手动设置,如
Figure 2011100907759100002DEST_PATH_IMAGE027
)计算得到采样射线数:
Figure 168110DEST_PATH_IMAGE028
根据采样密度与有效区间计算得到各方向上的采样距离即射线间距:
Figure 2011100907759100002DEST_PATH_IMAGE029
步骤3.2 根据采样射线数
Figure 902848DEST_PATH_IMAGE030
与射线间距
Figure 2011100907759100002DEST_PATH_IMAGE031
,构建结点相关的分别与X、Y、Z三个坐标轴平行的采样射线组。其中,每条射线包含一个顶点
Figure 885585DEST_PATH_IMAGE032
及射线方向
Figure 2011100907759100002DEST_PATH_IMAGE033
。计算公式如下:
Figure 2011100907759100002DEST_PATH_IMAGE035
表示第
Figure 381343DEST_PATH_IMAGE035
条射线)
步骤3.3 采样射线组与结点中模型表面相交得到样本点信息:样本点所在三角形的索引、
Figure 320797DEST_PATH_IMAGE007
方向上的偏移量与方向上的偏移量。
步骤3.4 遍历该结点的子结点,对每个子结点按照步骤3.1至步骤3.3继续进行采样处理,直到八叉树划分完毕。
步骤4:样本点的处理与建模,包括插值计算样本点信息,样本点动画信息选取和过采样去冗余等。当对结点采样完成后,需立即根据得到的采样信息对样本点进行处理与建模,并将结果保存在八叉树结构中。具体步骤如下:
步骤4.1 根据步骤3中得到样本点信息(所在三角形的索引、
Figure 970084DEST_PATH_IMAGE007
方向上的偏移量与
Figure 265631DEST_PATH_IMAGE037
方向上的偏移量)对样本点进行几何信息重建,并保存在八叉树结点中。通过三角形顶点线性插值的方法来计算样本点的位置坐标与纹理坐标。插值方法如图3所示。公式如下:
Figure 342172DEST_PATH_IMAGE038
其中,
Figure 2011100907759100002DEST_PATH_IMAGE039
为采样点相应坐标,
Figure 800966DEST_PATH_IMAGE040
Figure 2011100907759100002DEST_PATH_IMAGE041
Figure 486900DEST_PATH_IMAGE042
分别为样本点所在三角形的三个顶点对应坐标。
而样本点的法向坐标公式如下:
Figure 2011100907759100002DEST_PATH_IMAGE043
其中,
Figure 846075DEST_PATH_IMAGE044
为采样点的法向坐标,
Figure 93516DEST_PATH_IMAGE040
Figure 606318DEST_PATH_IMAGE041
Figure 597408DEST_PATH_IMAGE042
分别为样本点所在三角形的三个顶点对应位置坐标。
步骤4.2 选择与相交点距离最近的三角形顶点的骨骼索引与权重信息作为样本点的动画控制信息。
步骤4.3 使用如下方式进行过采样去冗余:依次遍历结点中的所有采样点,删除与之相隔距离低于
Figure 2011100907759100002DEST_PATH_IMAGE045
的其它样本点。其中,
Figure 374871DEST_PATH_IMAGE046
为最大采样距离,计算方法为
Figure 2011100907759100002DEST_PATH_IMAGE047
步骤5:根据设置用户参数
Figure 229432DEST_PATH_IMAGE048
建立三层LOD等级的模型采样数据:递归遍历八叉树,将最大采样距离与
Figure 459557DEST_PATH_IMAGE048
进行比较,直到第一次出现最大采样距离小于时停止遍历。此时,该层样本数据的分辨率已经满足所需的显示要求,记录这层结点中所有的样本点数据作为一个LOD等级。而要实现三层LOD等级的样本数据的收集,则需要通过设置三次
Figure 886307DEST_PATH_IMAGE048
参数,并重复三次上述方法来完成。
步骤6:在实时渲染时,对经过模拟更新后的大规模场景中的虚拟人群进行GPU加速的视锥体裁剪。具体步骤如下:
步骤6.1 为每一种角色类型预先计算其AABB,该AABB是刚好能够容纳该类角色所有动作的最小包围盒。将最大的AABB的体对角线长度记为
Figure 2011100907759100002DEST_PATH_IMAGE049
,用
Figure 974086DEST_PATH_IMAGE050
的长度向外扩展视锥体的各个裁剪平面。这样,如果有AABB与视锥体边界相交,则“扩展后的视锥体”也能够将其AABB中心包含进去,如图4所示。如此就能将每一个角色简化为单个顶点,该顶点的位置就是角色AABB的中心坐标。
步骤6.2 利用视图-投影(View-Projection)矩阵(由摄像机更新得到)使用标准平面方程快速构造视锥体的六个裁剪平面信息,并传入渲染管线,方法如下:
Figure 2011100907759A00800081
其中,
Figure 176081DEST_PATH_IMAGE058
为视图-投影矩阵第
Figure 380797DEST_PATH_IMAGE005
行第列的元素。
步骤6.3 使用群体模拟更新每个虚拟角色的渲染相关信息(包括世界位置信息与动画解码索引等),并传入GPU常量缓存器。
实例属性数据结构如下,其中世界矩阵采用与骨骼变换矩阵相同的方式压缩:
Figure DEST_PATH_IMAGE059
常量缓存器数据结构如下:
步骤6.4 将简化顶点写入顶点缓存作为输入,并以顶点列表模式
Figure DEST_PATH_IMAGE061
进行渲染。同时在其顶点结构中设置
Figure 508785DEST_PATH_IMAGE062
,作为查询角色实例信息的索引。其中
Figure 699333DEST_PATH_IMAGE062
是由渲染管线自动生成,为每一个顶点标示一个索引值。
步骤6.5 使用可编程渲染管线对其进行视锥体裁剪,方法如下:
步骤6.5.1 在VS阶段,根据从IA处得到的顶点
Figure 374028DEST_PATH_IMAGE062
值查找常量缓存器中的实例数据
Figure DEST_PATH_IMAGE063
得到对应实例的渲染属性
Figure 772779DEST_PATH_IMAGE064
,将得到的数据进行解码(解码方法如步骤1所示)得到世界矩阵,并计算顶点所替代角色的AABB中心的世界坐标位置。
步骤6.5.2 在GS阶段,对世界变换后的顶点进行视锥体裁剪,依次测试每一个顶点是否位于“扩展后的视锥体”的内部。方法如下:依次计算视锥体的每一个裁剪面与顶点的有向距离,如果有向距离
Figure DEST_PATH_IMAGE065
小于
Figure 638842DEST_PATH_IMAGE066
,则该角色位于视锥体的外部。其中,有向距离计算公式为:
Figure DEST_PATH_IMAGE067
步骤6.5.3 将裁剪得到的顶点作为步骤7的输入。
步骤7:对裁剪结果实行GPU加速的LOD策略,包括角色LOD选择与LOD排序。
步骤7.1 在资源初始化阶段创建四个Stream-Out缓存,分别用于接受LOD选择输出与三次LOD排序输出。
步骤7.2 在渲染时,每一帧实时更新虚拟摄像机的世界坐标,并将其传入GPU渲染管线中的常量缓存器。
步骤7.3在GPU视锥体裁剪的GS阶段,根据裁剪得到的结果即可见角色的简化顶点集合计算出每一个可见角色与视点的距离,并将其依次与LOD层次阀值进行比较,从而得到角色对应的LOD等级。其中LOD1的阀值为
Figure 490254DEST_PATH_IMAGE068
,距离小于它的所有角色都被设置为等级1;LOD2的阀值为,距离小于它的所有角色都被设置为等级2;大于它的所有角色都被设置为等级3。
步骤7.4 在SO阶段,将LOD选择后的结果输出到一个LOD缓存中。输出的结果为包含有角色ID与LOD值的顶点数据集合,如图5所示。
步骤7.5 以步骤四的输出缓存作为输入,分别对其使用三次渲染调用来进行LOD排序。每一遍渲染管线都会输出填写一个LOD缓存,将拥有对应LOD等级的角色顶点数据写入到该LOD缓存中。在具体的渲染管线中,VS只是简单的传递数据而不做任何操作。主要的工作在GS中完成:它检测当前顶点的LOD等级,并写入到对应的LOD 缓存中,这样就完成了收集拥有相同LOD等级的顶点的任务。输出结果如图6所示。
步骤8:根据上述步骤的输出,依次对每一层LOD等级的角色进行基于GPU蒙皮骨骼动画的实例化渲染。实例化的基本原理如图7所示。具体步骤如下:
步骤8.1 将从模型中提取的动画数据经过编码压缩成动画纹理(编码方法如步骤1所示),传入GPU渲染管线。
步骤8.2 依次对每一层LOD排序渲染从GPU中下载排序结果,得到每一层LOD等级的角色实例数。
步骤8.3 对每一层LOD等级以对应的LOD缓存和步骤5中得到的样本点信息作为输入进行一次实例化渲染:在VS阶段,将LOD缓存中的每一个元素(即该LOD等级下可见角色的ID)作为实例缓存数据的一个索引,查找实例对应的渲染信息
Figure 404859DEST_PATH_IMAGE064
(包括世界位置信息与动画解码索引等)。然后对数据进行解码得到能够使用的世界矩阵与骨骼变换矩阵。并根据LOD等级选择适当的模型采样数据,利用从动画纹理中提取的动作数据对其进行蒙皮动画,最后再对其进行世界坐标转换;在GS阶段,对每一个样本点以
Figure 986013DEST_PATH_IMAGE070
进行分裂操作,得到由四个顶点组成的摄像机朝向的布告板面片。
其中,布告板顶点的坐标为:
Figure DEST_PATH_IMAGE071
构造摄像机朝向的世界变换矩阵
Figure 196545DEST_PATH_IMAGE072
为:
Figure DEST_PATH_IMAGE073
其中,摄像机为
Figure 305228DEST_PATH_IMAGE074
布告板顶点坐标将被变换到其次裁剪空间,而法向及纹理坐标均与样本点保持一致。在PS阶段,进行纹理与光照计算,得到该顶点的像素显示。最后将各布告板面片使用
Figure DEST_PATH_IMAGE075
值按照
Figure 321725DEST_PATH_IMAGE076
的方式进行透明混合渲染。
Figure 757386DEST_PATH_IMAGE075
混合方式如下所示:
其中,
Figure 637355DEST_PATH_IMAGE078
为最终的像素显示,
Figure DEST_PATH_IMAGE079
Figure 791256DEST_PATH_IMAGE080
Figure DEST_PATH_IMAGE081
Figure 47662DEST_PATH_IMAGE082
Figure DEST_PATH_IMAGE083
为源像素显示,为源
Figure 218061DEST_PATH_IMAGE075
值,
Figure DEST_PATH_IMAGE085
为目标像素显示。
本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。

Claims (8)

1.一种大规模虚拟人群实时绘制方法,该方法使用点采样技术生成对应等级的层次细节模型,并通过基于图形处理器的视锥体裁剪与多细节层次策略来加速实时绘制,最后通过基于图形处理器蒙皮骨骼动画的实例化渲染来达到快速绘制大规模虚拟人群的目的;其具体步骤包括:
步骤1,导入网格模型,提取模型几何信息与动画信息;
步骤2,对模型进行八叉树空间划分;
步骤3,对每一个结点所包含的模型表面进行点采样;
步骤4,样本点的处理与建模;
步骤5,根据指定参数建立多细节层次等级的模型采样数据;
步骤6,在实时渲染时,对大规模场景中的虚拟人群进行图形处理器加速的视锥体裁剪;
步骤7,对裁剪结果实行图形处理器加速的多细节层次策略,包括角色多细节层次选择与多细节层次排序;
步骤8,根据上述步骤的输出,依次对每一层多细节层次等级的角色进行基于图形处理器蒙皮骨骼动画的实例化渲染。
2.根据权利要求1所述的方法,其特征在于,所述多细节层次等级的模型为三层。
3.根据权利要求1所述的方法,其特征在于,所述步骤2中具体包含以下步骤:
步骤2.1, 判断当前结点是否满足划分终止条件,结点的边长小于给定阀值或者结点中包含的三角形面片数小于给定阀值; 
步骤2.2, 八叉树创建完毕后,将模型中的所有三角形面片进行判断并添加保存到各个结点中。
4.根据权利要求1所述的方法,其特征在于,所述步骤3中对结点所包含的模型表面进行点采样时有效采样区间小于结点的区间。
5.根据权利要求1所述方法,其特征在于,所述步骤4具体包括如下步骤:
步骤4.1,通过线性插值法计算样本点的位置坐标与纹理坐标;
步骤4.2,选择与相交点距离最近的顶点的骨骼索引与权重信息作为样本点的动画控制信息;
步骤4.3,进行采样去冗余。
6.根据权利要求1所述方法,其特征在于,所述步骤6具体包含以下步骤:
步骤6.1,为场景中的每一种角色计算轴对齐的矩形包围盒,并使用该矩形包围盒的中心来替代角色;
步骤6.2,利用视图-投影矩阵构造视锥体六个裁剪平面信息,并传入渲染管线;步骤6.3,将简化顶点集合作为输入传入图形处理器进行渲染。
7.根据权利要求1所述方法,其特征在于,所述步骤7具体包含以下步骤:
步骤7.1,创建缓存,分别用于接受多细节层次选择输出与多细节层次排序输出;步骤7.2,计算出每一个可见角色与视点的距离,并将其依次与多细节层次阀值进行比较,从而得到对应的多细节层次等级;
步骤7.3 ,以多细节层次选择的输出缓存作为输入,分别对其使用渲染调用来进行多细节层次排序。
8.根据权利要求1所述方法,其特征在于,所述步骤8具体包含以下步骤:
步骤8.1,依次对每一层多细节层次排序渲染从图形处理器中下载排序结果;
步骤8.2,对每一层多细节层次等级以对应的多细节层次缓存与采样点数据作为输入进行实例化渲染。
CN201110090775.9A 2011-04-12 2011-04-12 一种大规模虚拟人群实时绘制方法 Expired - Fee Related CN102157008B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110090775.9A CN102157008B (zh) 2011-04-12 2011-04-12 一种大规模虚拟人群实时绘制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110090775.9A CN102157008B (zh) 2011-04-12 2011-04-12 一种大规模虚拟人群实时绘制方法

Publications (2)

Publication Number Publication Date
CN102157008A true CN102157008A (zh) 2011-08-17
CN102157008B CN102157008B (zh) 2014-08-06

Family

ID=44438486

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110090775.9A Expired - Fee Related CN102157008B (zh) 2011-04-12 2011-04-12 一种大规模虚拟人群实时绘制方法

Country Status (1)

Country Link
CN (1) CN102157008B (zh)

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102663805A (zh) * 2012-04-18 2012-09-12 东华大学 一种基于投影的视锥体裁剪的方法
CN102768766A (zh) * 2012-06-11 2012-11-07 天津大学 一种三维群体动画建模
CN102800116A (zh) * 2012-06-18 2012-11-28 浙江大学 一种快速创建大规模虚拟人群的方法
CN103310478A (zh) * 2013-06-04 2013-09-18 合肥工业大学 一种多样化虚拟人群生成的方法
CN103617643A (zh) * 2013-11-29 2014-03-05 广州菲动软件科技有限公司 骨骼动画的渲染方法和系统
CN103914868A (zh) * 2013-12-20 2014-07-09 柳州腾龙煤电科技股份有限公司 虚拟现实下的海量模型数据动态调度与实时异步加载方法
CN105488841A (zh) * 2015-12-28 2016-04-13 北京像素软件科技股份有限公司 一种公告板的渲染方法和装置
CN105513099A (zh) * 2015-11-27 2016-04-20 北京像素软件科技股份有限公司 一种骨骼动画数据的压缩方法及装置
CN105574934A (zh) * 2015-12-29 2016-05-11 珠海金山网络游戏科技有限公司 一种基于lod绘制树模型实例的方法和装置
CN105817031A (zh) * 2016-03-16 2016-08-03 小天才科技有限公司 游戏地图的物体绘制方法及装置
CN107038737A (zh) * 2016-02-03 2017-08-11 博雅网络游戏开发(深圳)有限公司 立体棋牌绘制方法和装置
CN104268920B (zh) * 2014-09-05 2017-08-18 无锡梵天信息技术股份有限公司 一种利用布娃娃物理系统模拟人物角色死亡的方法
CN107341846A (zh) * 2017-06-21 2017-11-10 华中科技大学 一种实时显示大规模三维重建场景的方法及设备
CN108597015A (zh) * 2018-01-08 2018-09-28 江苏辰锐网络科技有限公司 三维生物模型骨骼自动绑定系统、方法、设备及计算机程序产品
CN108711182A (zh) * 2018-05-03 2018-10-26 广州爱九游信息技术有限公司 渲染处理方法、装置及移动终端设备
CN109345615A (zh) * 2018-10-25 2019-02-15 网易(杭州)网络有限公司 蒙皮数据生成方法以及装置、电子设备及存储介质
CN109523618A (zh) * 2018-11-15 2019-03-26 广东趣炫网络股份有限公司 一种3d场景的优化方法、装置、设备及介质
CN110544291A (zh) * 2019-09-11 2019-12-06 珠海金山网络游戏科技有限公司 一种图像渲染方法及装置
CN110570507A (zh) * 2019-09-11 2019-12-13 珠海金山网络游戏科技有限公司 一种图像渲染方法及装置
CN111417988A (zh) * 2017-07-28 2020-07-14 北奥拜勃工作室有限公司 用于实时复杂角色动画和交互性的系统和方法
CN111598976A (zh) * 2019-02-01 2020-08-28 华为技术有限公司 场景识别方法及装置、终端、存储介质
CN112215935A (zh) * 2020-12-02 2021-01-12 江西博微新技术有限公司 Lod模型自动切换方法、装置、电子设备及存储介质
CN112233217A (zh) * 2020-12-18 2021-01-15 完美世界(北京)软件科技发展有限公司 一种虚拟场景的渲染方法和装置
CN113516768A (zh) * 2021-07-15 2021-10-19 国网山东省电力公司电力科学研究院 一种变电站可视化智慧物联管理系统
CN113744123A (zh) * 2021-11-05 2021-12-03 四川见山科技有限责任公司 一种基于全局实例化的大规模动态对象绘制方法及系统
CN114419228A (zh) * 2022-01-20 2022-04-29 北京中航双兴科技有限公司 用于地形渲染的数据处理方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1612167A (zh) * 2003-10-29 2005-05-04 Snecma发动机公司 在虚拟环境中移动虚拟链接对象同时避免链接对象的链接元件之间的内部碰撞
JP2005327125A (ja) * 2004-05-14 2005-11-24 Mitsubishi Precision Co Ltd 衝突検知方法及び衝突検知装置
JP2005342360A (ja) * 2004-06-07 2005-12-15 Hitachi Ltd 集団キャラクタ移動制御方法,記録媒体,シミュレーション装置及びゲーム装置
CN1949274A (zh) * 2006-10-27 2007-04-18 中国科学院计算技术研究所 一种虚拟人群运动的三维可视化方法
CN101739711A (zh) * 2010-01-15 2010-06-16 上海视金石动画有限公司 三维动画制作中大规模群体的产生方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1612167A (zh) * 2003-10-29 2005-05-04 Snecma发动机公司 在虚拟环境中移动虚拟链接对象同时避免链接对象的链接元件之间的内部碰撞
JP2005327125A (ja) * 2004-05-14 2005-11-24 Mitsubishi Precision Co Ltd 衝突検知方法及び衝突検知装置
JP2005342360A (ja) * 2004-06-07 2005-12-15 Hitachi Ltd 集団キャラクタ移動制御方法,記録媒体,シミュレーション装置及びゲーム装置
CN1949274A (zh) * 2006-10-27 2007-04-18 中国科学院计算技术研究所 一种虚拟人群运动的三维可视化方法
CN101739711A (zh) * 2010-01-15 2010-06-16 上海视金石动画有限公司 三维动画制作中大规模群体的产生方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
张姮: "大规模虚拟人群运动绘制技术研究", 《中国优秀硕士学位论文全文数据库信息科技辑》, no. 03, 15 March 2011 (2011-03-15) *
徐文彬: "大规模虚拟人实时绘制技术研究及其实现", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》, no. 10, 15 October 2006 (2006-10-15) *

Cited By (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102663805A (zh) * 2012-04-18 2012-09-12 东华大学 一种基于投影的视锥体裁剪的方法
CN102768766A (zh) * 2012-06-11 2012-11-07 天津大学 一种三维群体动画建模
CN102800116A (zh) * 2012-06-18 2012-11-28 浙江大学 一种快速创建大规模虚拟人群的方法
CN103310478A (zh) * 2013-06-04 2013-09-18 合肥工业大学 一种多样化虚拟人群生成的方法
CN103310478B (zh) * 2013-06-04 2016-02-03 合肥工业大学 一种多样化虚拟人群生成的方法
CN103617643A (zh) * 2013-11-29 2014-03-05 广州菲动软件科技有限公司 骨骼动画的渲染方法和系统
CN103914868B (zh) * 2013-12-20 2017-02-22 柳州腾龙煤电科技股份有限公司 虚拟现实下的海量模型数据动态调度与实时异步加载方法
CN103914868A (zh) * 2013-12-20 2014-07-09 柳州腾龙煤电科技股份有限公司 虚拟现实下的海量模型数据动态调度与实时异步加载方法
CN104268920B (zh) * 2014-09-05 2017-08-18 无锡梵天信息技术股份有限公司 一种利用布娃娃物理系统模拟人物角色死亡的方法
CN105513099B (zh) * 2015-11-27 2019-01-22 北京像素软件科技股份有限公司 一种骨骼动画数据的压缩方法及装置
CN105513099A (zh) * 2015-11-27 2016-04-20 北京像素软件科技股份有限公司 一种骨骼动画数据的压缩方法及装置
CN105488841B (zh) * 2015-12-28 2018-02-23 北京像素软件科技股份有限公司 一种公告板的渲染方法和装置
CN105488841A (zh) * 2015-12-28 2016-04-13 北京像素软件科技股份有限公司 一种公告板的渲染方法和装置
CN105574934A (zh) * 2015-12-29 2016-05-11 珠海金山网络游戏科技有限公司 一种基于lod绘制树模型实例的方法和装置
CN107038737A (zh) * 2016-02-03 2017-08-11 博雅网络游戏开发(深圳)有限公司 立体棋牌绘制方法和装置
CN107038737B (zh) * 2016-02-03 2021-05-28 博雅网络游戏开发(深圳)有限公司 立体棋牌绘制方法和装置
CN105817031A (zh) * 2016-03-16 2016-08-03 小天才科技有限公司 游戏地图的物体绘制方法及装置
CN107341846A (zh) * 2017-06-21 2017-11-10 华中科技大学 一种实时显示大规模三维重建场景的方法及设备
US12094042B2 (en) 2017-07-28 2024-09-17 Baobab Studios Inc. Systems and methods for real-time complex character animations and interactivity
CN111417988A (zh) * 2017-07-28 2020-07-14 北奥拜勃工作室有限公司 用于实时复杂角色动画和交互性的系统和方法
US12086917B2 (en) 2017-07-28 2024-09-10 Baobab Studios, Inc. Systems and methods for real-time complex character animations and interactivity
CN108597015A (zh) * 2018-01-08 2018-09-28 江苏辰锐网络科技有限公司 三维生物模型骨骼自动绑定系统、方法、设备及计算机程序产品
CN108711182A (zh) * 2018-05-03 2018-10-26 广州爱九游信息技术有限公司 渲染处理方法、装置及移动终端设备
CN109345615A (zh) * 2018-10-25 2019-02-15 网易(杭州)网络有限公司 蒙皮数据生成方法以及装置、电子设备及存储介质
CN109523618A (zh) * 2018-11-15 2019-03-26 广东趣炫网络股份有限公司 一种3d场景的优化方法、装置、设备及介质
CN109523618B (zh) * 2018-11-15 2022-02-22 广东趣炫网络股份有限公司 一种3d场景的优化方法、装置、设备及介质
US11918900B2 (en) 2019-02-01 2024-03-05 Huawei Technologies Co., Ltd. Scene recognition method and apparatus, terminal, and storage medium
CN111598976A (zh) * 2019-02-01 2020-08-28 华为技术有限公司 场景识别方法及装置、终端、存储介质
CN111598976B (zh) * 2019-02-01 2023-08-22 华为技术有限公司 场景识别方法及装置、终端、存储介质
CN110544291B (zh) * 2019-09-11 2023-05-09 珠海金山数字网络科技有限公司 一种图像渲染方法及装置
CN110544291A (zh) * 2019-09-11 2019-12-06 珠海金山网络游戏科技有限公司 一种图像渲染方法及装置
CN110570507A (zh) * 2019-09-11 2019-12-13 珠海金山网络游戏科技有限公司 一种图像渲染方法及装置
CN110570507B (zh) * 2019-09-11 2023-09-19 珠海金山数字网络科技有限公司 一种图像渲染方法及装置
CN112215935B (zh) * 2020-12-02 2021-04-16 江西博微新技术有限公司 Lod模型自动切换方法、装置、电子设备及存储介质
CN112215935A (zh) * 2020-12-02 2021-01-12 江西博微新技术有限公司 Lod模型自动切换方法、装置、电子设备及存储介质
CN112233217B (zh) * 2020-12-18 2021-04-02 完美世界(北京)软件科技发展有限公司 一种虚拟场景的渲染方法和装置
CN112233217A (zh) * 2020-12-18 2021-01-15 完美世界(北京)软件科技发展有限公司 一种虚拟场景的渲染方法和装置
CN113516768A (zh) * 2021-07-15 2021-10-19 国网山东省电力公司电力科学研究院 一种变电站可视化智慧物联管理系统
CN113744123A (zh) * 2021-11-05 2021-12-03 四川见山科技有限责任公司 一种基于全局实例化的大规模动态对象绘制方法及系统
CN114419228A (zh) * 2022-01-20 2022-04-29 北京中航双兴科技有限公司 用于地形渲染的数据处理方法和装置

Also Published As

Publication number Publication date
CN102157008B (zh) 2014-08-06

Similar Documents

Publication Publication Date Title
CN102157008B (zh) 一种大规模虚拟人群实时绘制方法
CN110738721B (zh) 基于视频几何分析的三维场景渲染加速方法及系统
CN113034656B (zh) 游戏场景中光照信息的渲染方法、装置及设备
CN113034657B (zh) 游戏场景中光照信息的渲染方法、装置及设备
Livnat et al. Interactive point-based isosurface extraction
Beacco et al. A survey of real‐time crowd rendering
KR20080018404A (ko) 게임 제작을 위한 배경 제작 프로그램을 저장한 컴퓨터에서읽을 수 있는 기록매체
CN105205861A (zh) 基于Sphere-Board的树木三维可视化模型实现方法
Jevans Object space temporal coherence for ray tracing
Xue et al. Efficient GPU out-of-core visualization of large-scale CAD models with voxel representations
Beacco et al. Efficient rendering of animated characters through optimized per‐joint impostors
Zhang et al. A survey of modeling and rendering trees
Bao et al. Billboards for tree simplification and real-time forest rendering
Menzel et al. City Reconstruction and Visualization from Public Data Sources.
Bittner Hierarchical techniques for visibility determination
CN117671110B (zh) 基于人工智能的实时渲染系统及方法
de Carvalho Jr et al. An improved view frustum culling method using octrees for 3D real-time rendering
Sunar et al. Crowd rendering optimization for virtual heritage system
近藤生也 et al. 3D Physical State Prediction and Visualization using Deep Billboard
Sahibgareeva Skeletal Animation of Three-Dimensional Models Using Nanite Technology
Zhou et al. Graphics-Image Mixed Method for Large-Scale Buildings Rendering
He et al. A point-based rendering approach for mobile devices
Li et al. Real-time rendering and animating of grass
CN117576290A (zh) 一种生成式超大规模森林景观的轻量级实时渲染方法
Barczak et al. GPU-based scene management for rendering large crowds

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140806

Termination date: 20180412

CF01 Termination of patent right due to non-payment of annual fee