CN113127945A - 一种基于Compute Shader的实时布料仿真的方法及其系统 - Google Patents

一种基于Compute Shader的实时布料仿真的方法及其系统 Download PDF

Info

Publication number
CN113127945A
CN113127945A CN202110540559.3A CN202110540559A CN113127945A CN 113127945 A CN113127945 A CN 113127945A CN 202110540559 A CN202110540559 A CN 202110540559A CN 113127945 A CN113127945 A CN 113127945A
Authority
CN
China
Prior art keywords
data
vertex
cloth
vertices
startindex
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
CN202110540559.3A
Other languages
English (en)
Other versions
CN113127945B (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.)
Fujian Tianqing Online Interactive Technology Co Ltd
Original Assignee
Fujian Tianqing Online Interactive Technology Co Ltd
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 Fujian Tianqing Online Interactive Technology Co Ltd filed Critical Fujian Tianqing Online Interactive Technology Co Ltd
Priority to CN202110540559.3A priority Critical patent/CN113127945B/zh
Publication of CN113127945A publication Critical patent/CN113127945A/zh
Application granted granted Critical
Publication of CN113127945B publication Critical patent/CN113127945B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/10Geometric CAD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Abstract

本发明提供了一种基于Compute Shader的实时布料仿真的方法,所述方法包括如下步骤:步骤S1、创建布料的网格数据,即布料由一张二维平面组成,且二维平面由若干个正方形组成,每个正方形由四个顶点组成,正方形内部包含两个三角形数据,对顶点和三角形数据进行设置;步骤S2、建立顶点的约束数据,将约束数据储存在一设定的数据结构体中;步骤S3、将数据结构体中的约束数据传入到图形处理器GPU中;步骤S4、图形处理器GPU端进行约束数据求解,通过渲染管线,实现最终的布料绘制;通过利用GPU的高并行性,解决CPU仿真的算力限制。

Description

一种基于Compute Shader的实时布料仿真的方法及其系统
技术领域
本发明涉及,特别是一种基于Compute Shader的实时布料仿真的方法及其系统。
背景技术
布料模拟通过改变网格顶点的位置,使布料表现出运动状态。实时布料仿真的核心是设计一套计算每帧网格顶点位移量的算法,使布料表现出自然运动状态,并能够与场景中物体发生交互。
在利用CPU进行布料模拟时,每个顶点的数据计算复杂度较高,无法同时进行较多顶点的仿真计算,表现效果欠佳,存在进一步的提升空间。
Compute Shader是一种技术,是微软DirectX 11API新加入的特性,在ComputeShader的帮助下,程序员可直接将GPU作为并行处理器加以利用,GPU将不仅具有3D渲染能力,也具有其他的运算能力,也就是我们说的GPGPU的概念和物理加速运算。多线程处理技术使游戏更好地利用系统的多个核心。
Compute Shader主要特性包括线程间数据通信、一整套随机访问和流式I/O操作基本单元等,能加快和简化图像和后期处理效果等已有技术,也为DX11级硬件的新技术做好了准备,对于游戏和应用程序开发有着很重大的意义。
发明内容
为克服上述问题,本发明的目的是提供一种基于Compute Shader的实时布料仿真的方法,具有实时模拟布料运动的能力,解决CPU仿真的算力限制。
本发明采用以下方案实现:一种基于Compute Shader的实时布料仿真的方法,所述方法包括如下步骤:步骤S1、创建布料的网格数据,即布料由一张二维平面组成,且二维平面由若干个正方形组成,每个正方形由四个顶点组成,正方形内部包含两个三角形数据,对顶点和三角形数据进行设置;
步骤S2、建立顶点的约束数据,将约束数据储存在一设定的数据结构体中;
步骤S3、将数据结构体中的约束数据传入到图形处理器GPU中;
步骤S4、图形处理器GPU端进行约束数据求解,通过渲染管线,实现最终的布料绘制。
进一步的,所述步骤S1进一步具体包括:步骤S11、初始化顶点及对应三角形数据,即给定一个m*n的行列范围,表示共有m行n列个正方形,为了组成这些正方形数据,需要(m+1)*(n+1)个顶点,存储在数组vertices中,数组长度为numParticles,这些顶点共组成m*n*2个三角形,存储在数组triangles中,数组长度为numTriangles,这些顶点和对应三角形数据共同组成布料的网格数据;
步骤S12、设置顶点坐标及三角形数据,即按照从左往右、自下而上,间隔固定距离创建顶点数据,为数组vertices中顶点数据赋值,并基于创建好的顶点数据设置三角形数据,每个三角形存储自身三个点所对应的顶点索引。
进一步的,所述步骤S2进一步具体为:布料模拟仿真的核心思想是获得每个顶点的位移量,每个顶点受到邻域顶点的约束,即三角形包含的三个顶点相互之间有影响,需要存储这些信息,在后续的约束数据求解中使用;设置约束数据储存的数据结构体distanceConstraintStruct,其长度为numTriangles*3,其中distanceConstraintStruct储存以下信息:startIndex:相互影响顶点的最小索引值,
endIndex:相互影响顶点的最大索引值;restLength:两个顶点间的距离。
进一步的,所述步骤S3中需要传入图形处理器GPU的数组如下:
distanceConstraintStruct,
vertices,
deltaCount,
predictedPositions,
invMass,
deltaPos;
其中,vertices是顶点数据存储的数组,deltaCount为对当前顶点有影响的邻域顶点个数,predictedPositions为受到约束作用后的预测位置,invMass为每个顶点对应质量的倒数,deltaPos为每个约束对顶点施加的位移量;distanceConstraintStruct的数组长度为numTriangles*3,其余数组的长度均为numParticles;
设置好数据后,开辟numTriangles*3个线程,每个线程处理数组中一个元素的数据,在图形处理器GPU中进行处理。
进一步的,所述步骤S4进一步具体包括:所述步骤S41、记录影响当前顶点的其余顶点:即每个线程读取数据结构体DistanceConstraintStruct中的数据,获取startIndex和endIndex,将deltaCountstartIndex和deltaCountendIndex中的数据加1;
步骤S42、计算当前数据结构体DistanceConstraintStruct中每个顶点的位移量:即获取startIndex和endIndex,对应取到verticesstartIndex和verticesendIndex的顶点坐标,deltaPosstartIndex和deltaPosendIndex的计算公式如下:
Figure BDA0003071618250000031
Figure BDA0003071618250000032
其中wstartIndex和wendIndex为invMass对应索引为startIndex和endIndex的值,n为verticesendIndex-verticesstartIndex,L为n的模长,restLength表示顶点数据创建时索引为startIndex和endIndex两个顶点的距离,stiffness为实验调整参数,调整范围为0~1;
步骤S43、计算每个顶点最终位移量:即当所有上述步骤计算完毕后,更新所有顶点的最终位移如下
Figure BDA0003071618250000033
其中i的取值为0~numParticles-1,最终将PredictedPositions的取值应用到最终的顶点数据之中,通过渲染管线,实现最终的布料绘制。
本发明还提供了一种基于Compute Shader的实时布料仿真的系统,所述系统包括布料网格数据创建模块、约束数据建立模块、传送模块、以及布料绘制模块;
所述布料网格数据创建模块,用于创建布料的网格数据,即布料由一张二维平面组成,且二维平面由若干个正方形组成,每个正方形由四个顶点组成,正方形内部包含两个三角形数据,对顶点和三角形数据进行设置;
所述约束数据建立模块,用于建立顶点的约束数据,将约束数据储存在一设定的数据结构体中;
所述传送模块,用于将数据结构体中的约束数据传入到图形处理器GPU中;
所述布料绘制模块,通过图形处理器GPU端进行约束数据求解,通过渲染管线,实现最终的布料绘制。
进一步的,所述布料网格数据创建模块的实现方式进一步具体包括:
初始化顶点及对应三角形数据,即给定一个m*n的行列范围,表示共有m行n列个正方形,为了组成这些正方形数据,需要(m+1)*(n+1)个顶点,存储在数组vertices中,数组长度为numParticles,这些顶点共组成m*n*2个三角形,存储在数组triangles中,数组长度为numTriangles,这些顶点和对应三角形数据共同组成布料的网格数据;
设置顶点坐标及三角形数据,即按照从左往右、自下而上,间隔固定距离创建顶点数据,为数组vertices中顶点数据赋值,并基于创建好的顶点数据设置三角形数据,每个三角形存储自身三个点所对应的顶点索引。
进一步的,所述约束数据建立模块的实现方式进一步具体为:布料模拟仿真的核心思想是获得每个顶点的位移量,每个顶点受到邻域顶点的约束,即三角形包含的三个顶点相互之间有影响,需要存储这些信息,在后续的约束数据求解中使用;设置约束数据储存的数据结构体distanceConstraintStruct,其长度为numTriangles*3,其中distanceConstraintStruct储存以下信息:startIndex:相互影响顶点的最小索引值,endIndex:相互影响顶点的最大索引值;restLength:两个顶点间的距离。
进一步的,所述传送模块中需要传入图形处理器GPU的数组如下:
distanceConstraintStruct,
vertices,
deltaCount,
predictedPositions,
invMass,
deltaPos;
其中,vertices是顶点数据存储的数组,deltaCount为对当前顶点有影响的邻域顶点个数,predictedPositions为受到约束作用后的预测位置,invMass为每个顶点对应质量的倒数,deltaPos为每个约束对顶点施加的位移量;distanceConstraintStruct的数组长度为numTriangles*3,其余数组的长度均为numParticles;
设置好数据后,开辟numTriangles*3个线程,每个线程处理数组中一个元素的数据,在图形处理器GPU中进行处理。
进一步的,所述布料绘制模块的实现方式进一步具体包括:
记录影响当前顶点的其余顶点:即每个线程读取数据结构体DistanceConstraintStruct中的数据,获取startIndex和endIndex,将deltaCountstartIndex和deltaCountendIndex中的数据加1;
计算当前数据结构体DistanceConstraintStruct中每个顶点的位移量:即获取startIndex和endIndex,对应取到verticesstartIndex和verticesendIndex的顶点坐标,deltaPosstartIndex和deltaPosendIndex的计算公式如下:
Figure BDA0003071618250000051
Figure BDA0003071618250000052
其中wstartIndex和wendIndex为invMass对应索引为startIndex和endIndex的值,n为verticesendIndex-verticesstartIndex,L为n的模长,restLength表示顶点数据创建时索引为startIndex和endIndex两个顶点的距离,stiffness为实验调整参数,调整范围为0~1;计算每个顶点最终位移量:即当所有上述计算完毕后,更新所有顶点的最终位移如下
Figure BDA0003071618250000061
其中i的取值为0~numParticles-1,最终将PredictedPositions的取值应用到最终的顶点数据之中,通过渲染管线,实现最终的布料绘制。
本发明的有益效果在于:1、通过利用GPU的高并行性,解决CPU仿真的算力限制。2、通过GPU的原子操作,可以优化仿真流程中用到的算法,提高开发人员的开发效率。
附图说明
图1是本发明的方法流程示意图。
图2是本发明的系统原理框图。
具体实施方式
下面结合附图对本发明做进一步说明。
请参阅图1所示,本发明的一种基于Compute Shader的实时布料仿真的方法,所述方法包括如下步骤:步骤S1、创建布料的网格数据,即布料由一张二维平面组成,且二维平面由若干个正方形组成,每个正方形由四个顶点组成,正方形内部包含两个三角形数据,对顶点和三角形数据进行设置;
步骤S2、建立顶点的约束数据,将约束数据储存在一设定的数据结构体中;
步骤S3、将数据结构体中的约束数据传入到图形处理器GPU中;
步骤S4、图形处理器GPU端进行约束数据求解,通过渲染管线,实现最终的布料绘制。
下面结合一具体实施例对本发明做进一步说明:
本发明的一种基于Compute Shader的实时布料仿真的方法,即利用GPU并行计算能力进行布料仿真;
布料模拟分为以下4个步骤:
1、创建布料的网格数据
在大多数应用中,布料由一张二维平面组成,且二维平面由若干个正方形组成,每个正方形由四个顶点组成,正方形内部包含两个三角形数据。三角形组成最基础的渲染单元。因此正确设置顶点及三角形数据,是进行布料仿真及对应渲染的前提。
1.1初始化顶点及对应三角形数据
给定一个m*n的行列范围,表示共有m行n列个正方形,为了组成这些正方形数据,需要(m+1)*(n+1)个顶点,顶点数据存储在数组vertices中,数组长度为numParticles。这些顶点共组成m*n*2个三角形,三角形数据存储在数组triangles中,数组长度为numTriangles,这些顶点和对应三角形数据共同组成布料的网格数据。
1.2设置顶点坐标及三角形数据
按照从左往右、自下而上,间隔固定距离创建顶点数据,为vertices数组中顶点数据赋值,并基于创建好的顶点数据设置三角形数据,每个三角形存储自身三个点所对应的顶点索引。
2、建立顶点约束数据
布料模拟的核心思想是计算每个顶点的位移量,每个顶点受到邻域顶点的约束,可以认为三角形包含的三个顶点相互之间有影响,需要存储这些信息,在后续的约束求解中使用。
约束数据储存在数据结构体distanceConstraintStruct,其长度为numTriangles*3,其中distanceConstraintStruct储存以下信息:
startIndex:相互影响顶点的最小索引值。
endIndex:相互影响顶点的最大索引值。
restLength:两个顶点间的距离。
3、传入图形处理器GPU的ComputeBuffer数据设置
需要传入图形处理器GPU的数组如下:
distanceConstraintStruct,
vertices,
deltaCount,
predictedPositions,
invMass,
deltaPos;
其中,deltaCount为对当前顶点有影响的邻域顶点个数,predictedPositions为受到约束作用后的预测位置,invMass为每个顶点对应质量的倒数,根据需要进行调整,在本专利中设置为1,deltaPos为每个约束对顶点施加的位移量。distanceConstraintStruct的数组长度为numTriangles*3,其余数组的长度均为numParticles。
设置好数据后,开辟numTriangles*3个线程,每个线程处理数组中一个元素的数据,在图形处理器GPU中进行计算。
4、图形处理器GPU端约束求解
4.1记录影响当前顶点的其余顶点
每个线程读取DistanceConstraintStruct中的数据,获取startIndex和endIndex,将deltaCountstartIndex和deltaCountendIndex中的数据加1;即deltaCountstartIndex中的数据加1,deltaCountendIndex中的数据加1;
4.2计算当前DistanceConstraintStruct中每个顶点的位移量
获取startIndex和endIndex,对应取到verticesstartIndex和verticesendIndex的顶点坐标,deltaPosstartIndex和deltaPosendIndex的计算公式如下:
Figure BDA0003071618250000081
Figure BDA0003071618250000082
其中wstartIndex和wendIndex为invMass对应索引为startIndex和endIndex的值,n为verticesendIndex-verticesstartIndex,L为n的模长,restLength表示顶点数据创建时索引为startIndex和endIndex两个顶点的距离,stiffness为实验调整参数,调整范围为0~1;
其中,这两个公式中,负号就是从负数开始的索引startIndex的值。
4.3计算每个顶点最终位移量
当所有上述步骤计算完毕后,更新所有顶点的最终位移如下
Figure BDA0003071618250000091
其中i的取值为0~numParticles-1,最终将PredictedPositions的取值应用到最终的顶点数据之中,通过渲染管线,实现最终的布料绘制。
请参阅图2所示,本发明还提供了一种基于Compute Shader的实时布料仿真的系统,所述系统包括布料网格数据创建模块、约束数据建立模块、传送模块、以及布料绘制模块;
所述布料网格数据创建模块,用于创建布料的网格数据,即布料由一张二维平面组成,且二维平面由若干个正方形组成,每个正方形由四个顶点组成,正方形内部包含两个三角形数据,对顶点和三角形数据进行设置;
所述约束数据建立模块,用于建立顶点的约束数据,将约束数据储存在一设定的数据结构体中;
所述传送模块,用于将数据结构体中的约束数据传入到图形处理器GPU中;
所述布料绘制模块,通过图形处理器GPU端进行约束数据求解,通过渲染管线,实现最终的布料绘制。
其中,所述布料网格数据创建模块的实现方式进一步具体包括:
初始化顶点及对应三角形数据,即给定一个m*n的行列范围,表示共有m行n列个正方形,为了组成这些正方形数据,需要(m+1)*(n+1)个顶点,存储在数组vertices中,数组长度为numParticles,这些顶点共组成m*n*2个三角形,存储在数组triangles中,数组长度为numTriangles,这些顶点和对应三角形数据共同组成布料的网格数据;
设置顶点坐标及三角形数据,即按照从左往右、自下而上,间隔固定距离创建顶点数据,为数组vertices中顶点数据赋值,并基于创建好的顶点数据设置三角形数据,每个三角形存储自身三个点所对应的顶点索引。
所述约束数据建立模块的实现方式进一步具体为:布料模拟仿真的核心思想是获得每个顶点的位移量,每个顶点受到邻域顶点的约束,即三角形包含的三个顶点相互之间有影响,需要存储这些信息,在后续的约束数据求解中使用;设置约束数据储存的数据结构体distanceConstraintStruct,其长度为numTriangles*3,其中distanceConstraintStruct储存以下信息:startIndex:相互影响顶点的最小索引值,endIndex:相互影响顶点的最大索引值;restLength:两个顶点间的距离。
在本发明中,所述传送模块中需要传入图形处理器GPU的数组如下:
distanceConstraintStruct,
vertices,
deltaCount,
predictedPositions,
invMass,
deltaPos;
其中,vertices是顶点数据存储的数组,deltaCount为对当前顶点有影响的邻域顶点个数,predictedPositions为受到约束作用后的预测位置,invMass为每个顶点对应质量的倒数,deltaPos为每个约束对顶点施加的位移量;distanceConstraintStruct的数组长度为numTriangles*3,其余数组的长度均为numParticles;
设置好数据后,开辟numTriangles*3个线程,每个线程处理数组中一个元素的数据,在图形处理器GPU中进行处理。
所述布料绘制模块的实现方式进一步具体包括:
记录影响当前顶点的其余顶点:即每个线程读取数据结构体DistanceConstraintStruct中的数据,获取startIndex和endIndex,将deltaCountstartIndex和deltaCountendIndex中的数据加1;即deltaCountstartIndex中的数据加1,deltaCountendIndex中的数据加1;
计算当前数据结构体DistanceConstraintStruct中每个顶点的位移量:即获取startIndex和endIndex,对应取到verticesstartIndex和verticesendIndex的顶点坐标,deltaPosstartIndex和deltaPosendIndex的计算公式如下:
Figure BDA0003071618250000111
Figure BDA0003071618250000112
其中wstartIndex和wendIndex为invMass对应索引为startIndex和endIndex的值,n为verticesendIndex-verticesstartIndex,L为n的模长,restLength表示顶点数据创建时索引为startIndex和endIndex两个顶点的距离,stiffness为实验调整参数,调整范围为0~1;计算每个顶点最终位移量:即当所有上述计算完毕后,更新所有顶点的最终位移如下
Figure BDA0003071618250000113
其中i的取值为0~numParticles-1,最终将PredictedPositions的取值应用到最终的顶点数据之中,通过渲染管线,实现最终的布料绘制。
本发明的应用场景如下:
例如:游戏场景中的衣服布料、随风飘扬的旗帜。
1、在游戏场景中运用本专利方案创建布料顶点以及对应三角形数据,对应数据传入GPU显存。
2、当检测到布料附近有其余物体,或环境中有全局作用力后,将外界影响施加到布料顶点上,并计算对应位移。
3、在外界作用力计算完毕后,进行布料顶点之间的约束求解,并更新到最终位移,使布料能与环境其余物体正常交互,极大的提升了场景真实性。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

Claims (10)

1.一种基于Compute Shader的实时布料仿真的方法,其特征在于:所述方法包括如下步骤:步骤S1、创建布料的网格数据,即布料由一张二维平面组成,且二维平面由若干个正方形组成,每个正方形由四个顶点组成,正方形内部包含两个三角形数据,对顶点和三角形数据进行设置;
步骤S2、建立顶点的约束数据,将约束数据储存在一设定的数据结构体中;
步骤S3、将数据结构体中的约束数据传入到图形处理器GPU中;
步骤S4、图形处理器GPU端进行约束数据求解,通过渲染管线,实现最终的布料绘制。
2.根据权利要求1所述的一种基于Compute Shader的实时布料仿真的方法,其特征在于:所述步骤S1进一步具体包括:步骤S11、初始化顶点及对应三角形数据,即给定一个m*n的行列范围,表示共有m行n列个正方形,为了组成这些正方形数据,需要(m+1)*(n+1)个顶点,存储在数组vertices中,数组长度为numParticles,这些顶点共组成m*n*2个三角形,存储在数组triangles中,数组长度为numTriangles,这些顶点和对应三角形数据共同组成布料的网格数据;
步骤S12、设置顶点坐标及三角形数据,即按照从左往右、自下而上,间隔固定距离创建顶点数据,为数组vertices中顶点数据赋值,并基于创建好的顶点数据设置三角形数据,每个三角形存储自身三个点所对应的顶点索引。
3.根据权利要求2所述的一种基于Compute Shader的实时布料仿真的方法,其特征在于:所述步骤S2进一步具体为:布料模拟仿真的核心思想是获得每个顶点的位移量,每个顶点受到邻域顶点的约束,即三角形包含的三个顶点相互之间有影响,需要存储这些信息,在后续的约束数据求解中使用;设置约束数据储存的数据结构体distanceConstraintStruct,其长度为numTriangles*3,其中distanceConstraintStruct储存以下信息:startIndex:相互影响顶点的最小索引值,endIndex:相互影响顶点的最大索引值;restLength:两个顶点间的距离。
4.根据权利要求3所述的一种基于Compute Shader的实时布料仿真的方法,其特征在于:所述步骤S3中需要传入图形处理器GPU的数组如下:
distanceConstraintStruct,
vertices,
deltaCount,
predictedPositions,
invMass,
deltaPos;
其中,vertices是存储当前顶点位置信息的数组,deltaCount为对当前顶点有影响的邻域顶点个数,predictedPositions为受到约束作用后的预测位置,invMass为每个顶点对应质量的倒数,deltaPos为每个约束对顶点施加的位移量;distanceConstraintStruct的数组长度为numTriangles*3,其余数组的长度均为numParticles;
设置好数据后,开辟numTriangles*3个线程,每个线程处理数组中一个元素的数据,在图形处理器GPU中进行处理。
5.根据权利要求4所述的一种基于Compute Shader的实时布料仿真的方法,其特征在于:所述步骤S4进一步具体包括:所述步骤S41、记录影响当前顶点的其余顶点:即每个线程读取数据结构体DistanceConstraintStruct中的数据,获取startIndex和endIndex,将deltaCountstartIndex和deltaCountendIndex中的数据加1;
步骤S42、计算当前数据结构体DistanceConstraintStruct中每个顶点的位移量:即获取startIndex和endIndex,对应取到verticesstartIndex和verticesendIndex的顶点坐标,deltaPosstartIndex和deltaPosendIndex的计算公式如下:
Figure FDA0003071618240000021
Figure FDA0003071618240000022
其中wstartIndex和wendIndex为invMass对应索引为startIndex和endIndex的值,n为verticesendIndex-verticesstartIndex,L为n的模长,restLength表示顶点数据创建时索引为startIndex和endIndex两个顶点的距离,stiffness为实验调整参数,调整范围为0~1;
步骤S43、计算每个顶点最终位移量:即当所有上述步骤计算完毕后,更新所有顶点的最终位移如下
Figure FDA0003071618240000031
其中i的取值为0~numParticles-1,最终将PredictedPositions的取值应用到最终的顶点数据之中,通过渲染管线,实现最终的布料绘制。
6.一种基于Compute Shader的实时布料仿真的系统,其特征在于:所述系统包括布料网格数据创建模块、约束数据建立模块、传送模块、以及布料绘制模块;
所述布料网格数据创建模块,用于创建布料的网格数据,即布料由一张二维平面组成,且二维平面由若干个正方形组成,每个正方形由四个顶点组成,正方形内部包含两个三角形数据,对顶点和三角形数据进行设置;
所述约束数据建立模块,用于建立顶点的约束数据,将约束数据储存在一设定的数据结构体中;
所述传送模块,用于将数据结构体中的约束数据传入到图形处理器GPU中;
所述布料绘制模块,通过图形处理器GPU端进行约束数据求解,通过渲染管线,实现最终的布料绘制。
7.根据权利要求6所述的一种基于Compute Shader的实时布料仿真的系统,其特征在于:所述布料网格数据创建模块的实现方式进一步具体包括:
初始化顶点及对应三角形数据,即给定一个m*n的行列范围,表示共有m行n列个正方形,为了组成这些正方形数据,需要(m+1)*(n+1)个顶点,存储在数组vertices中,数组长度为numParticles,这些顶点共组成m*n*2个三角形,存储在数组triangles中,数组长度为numTriangles,这些顶点和对应三角形数据共同组成布料的网格数据;
设置顶点坐标及三角形数据,即按照从左往右、自下而上,间隔固定距离创建顶点数据,为数组vertices中顶点数据赋值,并基于创建好的顶点数据设置三角形数据,每个三角形存储自身三个点所对应的顶点索引。
8.根据权利要求7所述的一种基于Compute Shader的实时布料仿真的系统,其特征在于:所述约束数据建立模块的实现方式进一步具体为:布料模拟仿真的核心思想是获得每个顶点的位移量,每个顶点受到邻域顶点的约束,即三角形包含的三个顶点相互之间有影响,需要存储这些信息,在后续的约束数据求解中使用;设置约束数据储存的数据结构体distanceConstraintStruct,其长度为numTriangles*3,其中distanceConstraintStruct储存以下信息:startIndex:相互影响顶点的最小索引值,endIndex:相互影响顶点的最大索引值;restLength:两个顶点间的距离。
9.根据权利要求8所述的一种基于Compute Shader的实时布料仿真的系统,其特征在于:所述传送模块中需要传入图形处理器GPU的数组如下:
distanceConstraintStruct,
vertices,
deltaCount,
predictedPositions,
invMass,
deltaPos;
其中,vertices是顶点数据存储的数组,deltaCount为对当前顶点有影响的邻域顶点个数,predictedPositions为受到约束作用后的预测位置,invMass为每个顶点对应质量的倒数,deltaPos为每个约束对顶点施加的位移量;distanceConstraintStruct的数组长度为numTriangles*3,其余数组的长度均为numParticles;
设置好数据后,开辟numTriangles*3个线程,每个线程处理数组中一个元素的数据,在图形处理器GPU中进行处理。
10.根据权利要求9所述的一种基于Compute Shader的实时布料仿真的系统,其特征在于:所述布料绘制模块的实现方式进一步具体包括:
记录影响当前顶点的其余顶点:即每个线程读取数据结构体DistanceConstraintStruct中的数据,获取startIndex和endIndex,将deltaCountstartIndex和deltaCountendIndex中的数据加1;
计算当前数据结构体DistanceConstraintStruct中每个顶点的位移量:即获取startIndex和endIndex,对应取到verticesstartIndex和verticesendIndex的顶点坐标,deltaPosstartIndex和deltaPosendIndex的计算公式如下:
Figure FDA0003071618240000051
Figure FDA0003071618240000052
其中wstartIndex和wendIndex为invMass对应索引为startIndex和endIndex的值,n为verticesendIndex-verticesstartIndex,L为n的模长,restLength表示顶点数据创建时索引为startIndex和endIndex两个顶点的距离,stiffness为实验调整参数,调整范围为0~1;计算每个顶点最终位移量:即当所有上述计算完毕后,更新所有顶点的最终位移如下
Figure FDA0003071618240000053
其中i的取值为0~numParticles-1,最终将PredictedPositions的取值应用到最终的顶点数据之中,通过渲染管线,实现最终的布料绘制。
CN202110540559.3A 2021-05-18 2021-05-18 一种基于Compute Shader的实时布料仿真的方法及其系统 Active CN113127945B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110540559.3A CN113127945B (zh) 2021-05-18 2021-05-18 一种基于Compute Shader的实时布料仿真的方法及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110540559.3A CN113127945B (zh) 2021-05-18 2021-05-18 一种基于Compute Shader的实时布料仿真的方法及其系统

Publications (2)

Publication Number Publication Date
CN113127945A true CN113127945A (zh) 2021-07-16
CN113127945B CN113127945B (zh) 2022-07-19

Family

ID=76782134

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110540559.3A Active CN113127945B (zh) 2021-05-18 2021-05-18 一种基于Compute Shader的实时布料仿真的方法及其系统

Country Status (1)

Country Link
CN (1) CN113127945B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115512074A (zh) * 2022-09-21 2022-12-23 中冶南方工程技术有限公司 一种高炉渣皮分布可视化方法、终端设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004102834A (ja) * 2002-09-11 2004-04-02 Ricoh Co Ltd 三角形メッシュのデータ構造、三角形メッシュデータ圧縮方法および伸張方法、プログラム、記録媒体およびシステム
CN1942896A (zh) * 2004-04-16 2007-04-04 苹果电脑有限公司 用图形处理单元处理图形操作的系统和方法
CN102810212A (zh) * 2012-06-04 2012-12-05 天津大学 基于cuda架构的针织布料仿真方法
CN103268626A (zh) * 2013-04-11 2013-08-28 江苏省在这里数字科技有限公司 基于gpu的地图线形符号绘制方法及系统
CN105354879A (zh) * 2015-10-12 2016-02-24 北京服装学院 基于质点弹簧结构的通用服装三维模型仿真方法及系统
CN112100939A (zh) * 2020-09-14 2020-12-18 福建天晴在线互动科技有限公司 一种基于Compute Shader的实时流体仿真方法及其系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004102834A (ja) * 2002-09-11 2004-04-02 Ricoh Co Ltd 三角形メッシュのデータ構造、三角形メッシュデータ圧縮方法および伸張方法、プログラム、記録媒体およびシステム
CN1942896A (zh) * 2004-04-16 2007-04-04 苹果电脑有限公司 用图形处理单元处理图形操作的系统和方法
CN102810212A (zh) * 2012-06-04 2012-12-05 天津大学 基于cuda架构的针织布料仿真方法
CN103268626A (zh) * 2013-04-11 2013-08-28 江苏省在这里数字科技有限公司 基于gpu的地图线形符号绘制方法及系统
CN105354879A (zh) * 2015-10-12 2016-02-24 北京服装学院 基于质点弹簧结构的通用服装三维模型仿真方法及系统
CN112100939A (zh) * 2020-09-14 2020-12-18 福建天晴在线互动科技有限公司 一种基于Compute Shader的实时流体仿真方法及其系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
文静: ""基于GPU的布料实时运动仿真研究"", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》 *
文静: ""基于GPU的布料实时运动仿真研究"", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》, 15 November 2009 (2009-11-15), pages 21 - 42 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115512074A (zh) * 2022-09-21 2022-12-23 中冶南方工程技术有限公司 一种高炉渣皮分布可视化方法、终端设备及存储介质
CN115512074B (zh) * 2022-09-21 2024-02-23 中冶南方工程技术有限公司 一种高炉渣皮分布可视化方法、终端设备及存储介质

Also Published As

Publication number Publication date
CN113127945B (zh) 2022-07-19

Similar Documents

Publication Publication Date Title
ES2907861T3 (es) Ejecución especulativa de sombreadores de choque e intersección en arquitecturas programables de trazado de rayos
US9965892B2 (en) Rendering tessellated geometry with motion and defocus blur
TW202209258A (zh) 用於包含光線追蹤的有效圖形處理的設備與方法
US11790609B2 (en) Reducing level of detail of a polygon mesh to decrease a complexity of rendered geometry within a scene
CN103440660B (zh) 一种基于gpu的集成成像微图像阵列快速生成方法
EP3933779A1 (en) Intersection testing in a ray tracing system
CN113808241B (zh) 共享顶点的射线追踪图元的硬件加速
Ize et al. Real-Time Ray Tracer for Visualizing Massive Models on a Cluster.
Steinberger et al. Parallel generation of architecture on the GPU
US11379420B2 (en) Decompression techniques for processing compressed data suitable for artificial neural networks
US20200043228A1 (en) System-generated stable barycentric coordinates and direct plane equation access
Livny et al. A GPU persistent grid mapping for terrain rendering
KR20220160637A (ko) 분산형 그래픽 프로세서 유닛 아키텍처
CN113127945B (zh) 一种基于Compute Shader的实时布料仿真的方法及其系统
CN112258378A (zh) 基于gpu加速的实时三维测量系统及方法
Rahman et al. Towards accelerated agent-based crowd simulation for Hajj and Umrah
CN112100939A (zh) 一种基于Compute Shader的实时流体仿真方法及其系统
Yalçın et al. GPU algorithms for diamond-based multiresolution terrain processing
Frolov et al. Biased global illumination via irradiance caching and adaptive path tracing on GPUs
EP3929877A1 (en) Hierarchical acceleration structures for use in ray tracing systems
EP3929879A1 (en) Hierarchical acceleration structures for use in ray tracing systems
EP3929880A2 (en) Hierarchical acceleration structures for use in ray tracing systems
EP3933781A1 (en) Intersection testing in a ray tracing system
Budge et al. A hybrid CPU-GPU implementation for interactive ray-tracing of dynamic scenes
Boyapati et al. Fractal terrain generation for SIMD architectures

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant