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

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

Info

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
Application number
CN202110540559.3A
Other languages
English (en)
Other versions
CN113127945A (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

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的实时布料仿真的方法及其系统
技术领域
本发明涉及,特别是一种基于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 (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的计算公式如下:
Figure FDA0003673963970000021
Figure FDA0003673963970000022
其中wstartIndex和wendIndex为invMass对应索引为startIndex和endIndex的值,n为verticesendIndex-verticesstartIndex,L为n的模长,restLength表示顶点数据创建时索引为startIndex和endIndex两个顶点的距离,stiffness为实验调整参数,调整范围为0~1;
步骤S43、计算每个顶点最终位移量:即当所有上述步骤计算完毕后,更新所有顶点的最终位移如下
Figure FDA0003673963970000023
其中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的计算公式如下:
Figure FDA0003673963970000041
Figure FDA0003673963970000042
其中wstartIndex和wendIndex为invMass对应索引为startIndex和endIndex的值,n为verticesendIndex-verticesstartIndex,L为n的模长,restLength表示顶点数据创建时索引为startIndex和endIndex两个顶点的距离,stiffness为实验调整参数,调整范围为0~1;
计算每个顶点最终位移量:即当所有上述计算完毕后,更新所有顶点的最终位移如下
Figure FDA0003673963970000051
其中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中顶点数据赋值,并基于创建好的顶点数据设置三角形数据,每个三角形存储自身三个点所对应的顶点索引。
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 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)

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

Citations (4)

* 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 苹果电脑有限公司 用图形处理单元处理图形操作的系统和方法
CN105354879A (zh) * 2015-10-12 2016-02-24 北京服装学院 基于质点弹簧结构的通用服装三维模型仿真方法及系统
CN112100939A (zh) * 2020-09-14 2020-12-18 福建天晴在线互动科技有限公司 一种基于Compute Shader的实时流体仿真方法及其系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
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的地图线形符号绘制方法及系统

Patent Citations (4)

* 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 苹果电脑有限公司 用图形处理单元处理图形操作的系统和方法
CN105354879A (zh) * 2015-10-12 2016-02-24 北京服装学院 基于质点弹簧结构的通用服装三维模型仿真方法及系统
CN112100939A (zh) * 2020-09-14 2020-12-18 福建天晴在线互动科技有限公司 一种基于Compute Shader的实时流体仿真方法及其系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
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