CN113127945B - 一种基于Compute Shader的实时布料仿真的方法及其系统 - Google Patents
一种基于Compute Shader的实时布料仿真的方法及其系统 Download PDFInfo
- Publication number
- CN113127945B CN113127945B CN202110540559.3A CN202110540559A CN113127945B CN 113127945 B CN113127945 B CN 113127945B CN 202110540559 A CN202110540559 A CN 202110540559A CN 113127945 B CN113127945 B CN 113127945B
- Authority
- CN
- China
- Prior art keywords
- data
- vertex
- startindex
- vertices
- cloth
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Geometry (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Image Generation (AREA)
Abstract
本发明提供了一种基于Compute Shader的实时布料仿真的方法,所述方法包括如下步骤:步骤S1、创建布料的网格数据,即布料由一张二维平面组成,且二维平面由若干个正方形组成,每个正方形由四个顶点组成,正方形内部包含两个三角形数据,对顶点和三角形数据进行设置;步骤S2、建立顶点的约束数据,将约束数据储存在一设定的数据结构体中;步骤S3、将数据结构体中的约束数据传入到图形处理器GPU中;步骤S4、图形处理器GPU端进行约束数据求解,通过渲染管线,实现最终的布料绘制;通过利用GPU的高并行性,解决CPU仿真的算力限制。
Description
技术领域
本发明涉及,特别是一种基于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的计算公式如下:
其中wstartIndex和wendIndex为invMass对应索引为startIndex和endIndex的值,n为verticesendIndex-verticesstartIndex,L为n的模长,restLength表示顶点数据创建时索引为startIndex和endIndex两个顶点的距离,stiffness为实验调整参数,调整范围为0~1;
步骤S43、计算每个顶点最终位移量:即当所有上述步骤计算完毕后,更新所有顶点的最终位移如下
其中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的计算公式如下:
其中wstartIndex和wendIndex为invMass对应索引为startIndex和endIndex的值,n为verticesendIndex-verticesstartIndex,L为n的模长,restLength表示顶点数据创建时索引为startIndex和endIndex两个顶点的距离,stiffness为实验调整参数,调整范围为0~1;计算每个顶点最终位移量:即当所有上述计算完毕后,更新所有顶点的最终位移如下
其中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的计算公式如下:
其中wstartIndex和wendIndex为invMass对应索引为startIndex和endIndex的值,n为verticesendIndex-verticesstartIndex,L为n的模长,restLength表示顶点数据创建时索引为startIndex和endIndex两个顶点的距离,stiffness为实验调整参数,调整范围为0~1;
其中,这两个公式中,负号就是从负数开始的索引startIndex的值。
4.3计算每个顶点最终位移量
当所有上述步骤计算完毕后,更新所有顶点的最终位移如下
其中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的计算公式如下:
其中wstartIndex和wendIndex为invMass对应索引为startIndex和endIndex的值,n为verticesendIndex-verticesstartIndex,L为n的模长,restLength表示顶点数据创建时索引为startIndex和endIndex两个顶点的距离,stiffness为实验调整参数,调整范围为0~1;计算每个顶点最终位移量:即当所有上述计算完毕后,更新所有顶点的最终位移如下
其中i的取值为0~numParticles-1,最终将PredictedPositions的取值应用到最终的顶点数据之中,通过渲染管线,实现最终的布料绘制。
本发明的应用场景如下:
例如:游戏场景中的衣服布料、随风飘扬的旗帜。
1、在游戏场景中运用本专利方案创建布料顶点以及对应三角形数据,对应数据传入GPU显存。
2、当检测到布料附近有其余物体,或环境中有全局作用力后,将外界影响施加到布料顶点上,并计算对应位移。
3、在外界作用力计算完毕后,进行布料顶点之间的约束求解,并更新到最终位移,使布料能与环境其余物体正常交互,极大的提升了场景真实性。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (4)
1.一种基于Compute Shader的实时布料仿真的方法,其特征在于:所述方法包括如下步骤:步骤S1、创建布料的网格数据,即布料由一张二维平面组成,且二维平面由若干个正方形组成,每个正方形由四个顶点组成,正方形内部包含两个三角形数据,对顶点和三角形数据进行设置;
步骤S2、建立顶点的约束数据,将约束数据储存在一设定的数据结构体中;所述步骤S2进一步具体为:布料模拟仿真的核心思想是获得每个顶点的位移量,每个顶点受到邻域顶点的约束,即三角形包含的三个顶点相互之间有影响,需要存储这些信息,在后续的约束数据求解中使用;设置约束数据储存的数据结构体distanceConstraintStruct,其长度为numTriangles*3,numTriangles是数组triangles的数组长度,其中distanceConstraintStruct储存以下信息:startIndex:相互影响顶点的最小索引值,
endIndex:相互影响顶点的最大索引值;restLength:表示顶点数据创建时索引为startIndex和endIndex两个顶点的距离;
步骤S3、将数据结构体中的约束数据传入到图形处理器GPU中;所述步骤S3中需要传入图形处理器GPU的数组如下:
distanceConstraintStruct,
vertices,
deltaCount,
predictedPositions,
invMass,
deltaPos;
其中,vertices是存储当前顶点位置信息的数组,deltaCount为对当前顶点有影响的邻域顶点个数,predictedPositions为受到约束作用后的预测位置,invMass为每个顶点对应质量的倒数,deltaPos为每个约束对顶点施加的位移量;distanceConstraintStruct的数组长度为numTriangles*3,其余数组的长度均为numParticles;
设置好数据后,开辟numTriangles*3个线程,每个线程处理数组中一个元素的数据,在图形处理器GPU中进行处理;
步骤S4、图形处理器GPU端进行约束数据求解,通过渲染管线,实现最终的布料绘制;所述步骤S4进一步具体包括:步骤S41、记录影响当前顶点的其余顶点:即每个线程读取数据结构体distanceConstraintStruct中的数据,获取startIndex和endIndex,将deltaCountstartIndex和deltaCountendIndex中的数据加1;
步骤S42、计算当前数据结构体distanceConstraintStruct中每个顶点的位移量:即获取startIndex和endIndex,对应取到verticesstartIndex和verticesendIndex的顶点坐标,deltaPosstartIndex和deltaPosendIndex的计算公式如下:
其中wstartIndex和wendIndex为invMass对应索引为startIndex和endIndex的值,n为verticesendIndex-verticesstartIndex,L为n的模长,restLength表示顶点数据创建时索引为startIndex和endIndex两个顶点的距离,stiffness为实验调整参数,调整范围为0~1;
步骤S43、计算每个顶点最终位移量:即当所有上述步骤计算完毕后,更新所有顶点的最终位移如下
其中i的取值为0~numParticles-1,最终将PredictedPositions的取值应用到最终的顶点数据之中,通过渲染管线,实现最终的布料绘制。
2.根据权利要求1所述的一种基于Compute Shader的实时布料仿真的方法,其特征在于:所述步骤S1进一步具体包括:步骤S11、初始化顶点及对应三角形数据,即给定一个m*n的行列范围,表示共有m行n列个正方形,为了组成这些正方形数据,需要(m+1)*(n+1)个顶点,存储在数组vertices中,数组长度为numParticles,这些顶点共组成m*n*2个三角形,存储在数组triangles中,数组长度为numTriangles,这些顶点和对应三角形数据共同组成布料的网格数据;
步骤S12、设置顶点坐标及三角形数据,即按照从左往右、自下而上,间隔固定距离创建顶点数据,为数组vertices中顶点数据赋值,并基于创建好的顶点数据设置三角形数据,每个三角形存储自身三个点所对应的顶点索引。
3.一种基于Compute Shader的实时布料仿真的系统,其特征在于:所述系统包括布料网格数据创建模块、约束数据建立模块、传送模块、以及布料绘制模块;
所述布料网格数据创建模块,用于创建布料的网格数据,即布料由一张二维平面组成,且二维平面由若干个正方形组成,每个正方形由四个顶点组成,正方形内部包含两个三角形数据,对顶点和三角形数据进行设置;
所述约束数据建立模块,用于建立顶点的约束数据,将约束数据储存在一设定的数据结构体中;所述约束数据建立模块的实现方式进一步具体为:布料模拟仿真的核心思想是获得每个顶点的位移量,每个顶点受到邻域顶点的约束,即三角形包含的三个顶点相互之间有影响,需要存储这些信息,在后续的约束数据求解中使用;设置约束数据储存的数据结构体distanceConstraintStruct,其长度为numTriangles*3,numTriangles是数组triangles的数组长度,其中distanceConstraintStruct储存以下信息:startIndex:相互影响顶点的最小索引值,
endIndex:相互影响顶点的最大索引值;restLength:表示顶点数据创建时索引为startIndex和endIndex两个顶点的距离;
所述传送模块,用于将数据结构体中的约束数据传入到图形处理器GPU中;所述传送模块中需要传入图形处理器GPU的数组如下:
distanceConstraintStruct,
vertices,
deltaCount,
predictedPositions,
invMass,
deltaPos;
其中,vertices是顶点数据存储的数组,deltaCount为对当前顶点有影响的邻域顶点个数,predictedPositions为受到约束作用后的预测位置,invMass为每个顶点对应质量的倒数,deltaPos为每个约束对顶点施加的位移量;distanceConstraintStruct的数组长度为numTriangles*3,其余数组的长度均为numParticles;
设置好数据后,开辟numTriangles*3个线程,每个线程处理数组中一个元素的数据,在图形处理器GPU中进行处理;
所述布料绘制模块,通过图形处理器GPU端进行约束数据求解,通过渲染管线,实现最终的布料绘制;
所述布料绘制模块的实现方式进一步具体包括:
记录影响当前顶点的其余顶点:即每个线程读取数据结构体distanceConstraintStruct中的数据,获取startIndex和endIndex,将deltaCountstartIndex和deltaCountendIndex中的数据加1;
计算当前数据结构体distanceConstraintStruct中每个顶点的位移量:即获取startIndex和endIndex,对应取到verticesstartIndex和verticesendIndex的顶点坐标,deltaPosstartIndex和deltaPosendIndex的计算公式如下:
其中wstartIndex和wendIndex为invMass对应索引为startIndex和endIndex的值,n为verticesendIndex-verticesstartIndex,L为n的模长,restLength表示顶点数据创建时索引为startIndex和endIndex两个顶点的距离,stiffness为实验调整参数,调整范围为0~1;
计算每个顶点最终位移量:即当所有上述计算完毕后,更新所有顶点的最终位移如下
其中i的取值为0~numParticles-1,最终将PredictedPositions的取值应用到最终的顶点数据之中,通过渲染管线,实现最终的布料绘制。
4.根据权利要求3所述的一种基于Compute Shader的实时布料仿真的系统,其特征在于:所述布料网格数据创建模块的实现方式进一步具体包括:
初始化顶点及对应三角形数据,即给定一个m*n的行列范围,表示共有m行n列个正方形,为了组成这些正方形数据,需要(m+1)*(n+1)个顶点,存储在数组vertices中,数组长度为numParticles,这些顶点共组成m*n*2个三角形,存储在数组triangles中,数组长度为numTriangles,这些顶点和对应三角形数据共同组成布料的网格数据;
设置顶点坐标及三角形数据,即按照从左往右、自下而上,间隔固定距离创建顶点数据,为数组vertices中顶点数据赋值,并基于创建好的顶点数据设置三角形数据,每个三角形存储自身三个点所对应的顶点索引。
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 CN113127945A (zh) | 2021-07-16 |
CN113127945B true 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) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115512074B (zh) * | 2022-09-21 | 2024-02-23 | 中冶南方工程技术有限公司 | 一种高炉渣皮分布可视化方法、终端设备及存储介质 |
Citations (4)
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 | 苹果电脑有限公司 | 用图形处理单元处理图形操作的系统和方法 |
CN105354879A (zh) * | 2015-10-12 | 2016-02-24 | 北京服装学院 | 基于质点弹簧结构的通用服装三维模型仿真方法及系统 |
CN112100939A (zh) * | 2020-09-14 | 2020-12-18 | 福建天晴在线互动科技有限公司 | 一种基于Compute Shader的实时流体仿真方法及其系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102810212A (zh) * | 2012-06-04 | 2012-12-05 | 天津大学 | 基于cuda架构的针织布料仿真方法 |
CN103268626A (zh) * | 2013-04-11 | 2013-08-28 | 江苏省在这里数字科技有限公司 | 基于gpu的地图线形符号绘制方法及系统 |
-
2021
- 2021-05-18 CN CN202110540559.3A patent/CN113127945B/zh active Active
Patent Citations (4)
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 | 苹果电脑有限公司 | 用图形处理单元处理图形操作的系统和方法 |
CN105354879A (zh) * | 2015-10-12 | 2016-02-24 | 北京服装学院 | 基于质点弹簧结构的通用服装三维模型仿真方法及系统 |
CN112100939A (zh) * | 2020-09-14 | 2020-12-18 | 福建天晴在线互动科技有限公司 | 一种基于Compute Shader的实时流体仿真方法及其系统 |
Non-Patent Citations (1)
Title |
---|
"基于GPU的布料实时运动仿真研究";文静;《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》;20091115;摘要,5、21-42、50-59页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113127945A (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9934602B2 (en) | System, method and device for three-dimensional modeling | |
ES2907861T3 (es) | Ejecución especulativa de sombreadores de choque e intersección en arquitecturas programables de trazado de rayos | |
US10482650B2 (en) | Methods, computer program and apparatus for an ordered traversal of a subset of nodes of a tree structure and for determining an occlusion of a point along a ray in a raytracing scene | |
US11747766B2 (en) | System and method for near-eye light field rendering for wide field of view interactive three-dimensional computer graphics | |
CN113808241B (zh) | 共享顶点的射线追踪图元的硬件加速 | |
EP3933779A1 (en) | Intersection testing in a ray tracing system | |
CN110807827B (zh) | 系统生成稳定的重心坐标和直接平面方程访问 | |
CN102157008A (zh) | 一种大规模虚拟人群实时绘制方法 | |
Livny et al. | A GPU persistent grid mapping for terrain rendering | |
CN103440660A (zh) | 一种基于gpu的集成成像微图像阵列快速生成方法 | |
US11010963B2 (en) | Realism of scenes involving water surfaces during rendering | |
CN112288619A (zh) | 用于在渲染图形时预加载纹理的技术 | |
CN113127945B (zh) | 一种基于Compute Shader的实时布料仿真的方法及其系统 | |
CN112258378A (zh) | 基于gpu加速的实时三维测量系统及方法 | |
CN110555234B (zh) | 一种Web端实时交互洪水演进仿真可视化方法 | |
Rahman et al. | Towards accelerated agent-based crowd simulation for Hajj and Umrah | |
WO2023169002A1 (zh) | 软光栅化的方法、装置、设备、介质及程序产品 | |
US20220301255A1 (en) | Intersection Testing in Ray Tracing Systems Using Hierarchical Acceleration Structures With Implicitly Represented Nodes | |
CN112100939A (zh) | 一种基于Compute Shader的实时流体仿真方法及其系统 | |
EP3929879A1 (en) | Hierarchical acceleration structures for use in ray tracing systems | |
US11756257B2 (en) | Intersection testing in ray tracing systems with skipping of nodes in sub-trees of hierarchical acceleration structures | |
EP3933781A1 (en) | Intersection testing in a ray tracing system | |
US20220327771A1 (en) | Temporal denoiser quality in dynamic scenes | |
Bender et al. | HW3D: A tool for interactive real-time 3D visualization in GIS supported flood modelling | |
Milet et al. | Fast Robust and Precise Shadow Algorithm for WebGL 1.0 Platform. |
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 |