CN108648252A - 一种骨骼动画兼容处理方法 - Google Patents
一种骨骼动画兼容处理方法 Download PDFInfo
- Publication number
- CN108648252A CN108648252A CN201810476030.8A CN201810476030A CN108648252A CN 108648252 A CN108648252 A CN 108648252A CN 201810476030 A CN201810476030 A CN 201810476030A CN 108648252 A CN108648252 A CN 108648252A
- Authority
- CN
- China
- Prior art keywords
- texture
- data
- bone
- tinter
- floating
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
- G06T13/40—3D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本发明提供一种骨骼动画兼容处理方法,通过cpu运算好骨骼动画数据然后提交给gpu,当骨骼数所需要的uniform变量小于剩余着色器的uniform变量个数时,就采用uniform方式提交给着色器。当骨骼数所需要的uniform变量大于剩余着色器uniform变量个数时,通过纹理映射的方式传递给着色器。采用本发明方法能够解决大量骨骼的骨骼动画运行在gpu上,实现骨骼动画兼容性处理。
Description
技术领域
本发明涉及计算机图形技术领域,更具体地说,涉及一种骨骼动画兼容处理的实现方法。
背景技术
骨骼动画是计算机动画技术的一个重要组成部分,在计算机辅助动画电影制作和各类广告制作中一直发挥着重要的作用。
随着计算机硬件能力的提升和渲染技术的提升,计算机绘制出来的图像越来越逼真,不仅仅在传统的动画上面有进一步的发展,3D动画电影也越来越受到观众的喜爱。现在使用最广泛的关键帧动画就是骨骼动画。在骨骼动画中,动画模型由两个部分来表示:一个部分是形成层次的一系列骨胳,即骨架(skeleton),每一个骨骼数据都包含其自身的动画数据;另一个部分是蒙在骨架上的皮肤(skin),即网格模型,用于提供动画绘制所需要的几何模型和纹理材质信息。通过对骨架进行动画模拟,再利用骨胳控制皮肤变形就实现了骨骼动画。骨骼动画与关键帧动画相比占用空间较小,因为它不需要存储每一帧的各个顶点的数据,而只需存储每一帧的骨骼(骨骼数量相对较少),并且多个不同的皮肤可以通过使用相同的骨骼共享相同的动画。骨骼动画在蒙皮时通常有两种计算方式,一种是通过cpu运算好骨架动画数据,然后再通过cpu来进行顶点变换来改变顶点的位置,最后再将变换后的顶点提交给gpu来渲染。另一种是通过cpu运算好骨架动画数据后直接提交给gpu,gpu直接对原始网格的顶点缓冲对象(vbo)在着色器(shader)中进行变化位置后直接绘制在屏幕上。后者不仅有效的利用的gpu的算力来加速了蒙皮的过程,并且不用重复提交不同姿态(pose)网格顶点数据给gpu,大大降低了cpu与gpu通讯所带来的开销。然而后者也并不是没有缺点,虽然不用像前者那种每次都去提交大量顶点数据,但是要提交骨骼数据(相对较小)。虽然顶点着色器可以同过uniform标示符的变量来接收骨骼数据,但是现代gpu通常都会有uniform变量的容量限制(通常是256*4个浮点精度数)。然后骨骼数据中一个骨头的数据就需要占据16个浮点精度数,也就是说即使全部使用最多也就64根骨头数据。然而实际渲染过程中着色器中还需要接收诸如灯光,材质等等的的数据。所以真正能剩下的uniform变量少之又少(大概仅剩下1/3-1/2,依赖于材质复杂度和灯光个数,换算下来就是20-30根骨骼)。所以如何让大量骨骼的骨骼动画运行在gpu上就成了一个问题。
发明内容
为了解决上述问题,本发明提供一种骨骼动画兼容处理方法,通过cpu运算好骨骼动画数据然后提交给gpu,如下步骤:
S1、根据cpu运算好的骨骼动画数据判断骨骼数所需要的uniform变量书是否小于剩余着色器的uniform变量个数,如果是,转到步骤S2;如果否,转到步骤S3;
S2、直接采用uniform的方式将骨骼数提交给着色器;
S3、通过纹理映射的方式将骨骼数传递给着色器;
所述步骤S3中通过纹理映射的方式将骨骼数传递给着色器主要包括如下步骤:
S31、判断硬件是否支持浮点精度纹理,如果是,转到步骤S32;如果否,转到步骤S33;
S32、当硬件支持浮点精度纹理时,将骨骼数进行更新,并将更新后的骨骼数据依次填充进纹理当中,然后和着色器中的纹理采样器绑定,顶点着色器通过顶点缓冲对象中的骨骼id数映射成纹理的坐标,纹理采样器再根据纹理坐标依次往后采样4个像素(一个像素有rgba4个浮点精度通道),总共所采样处理的16像素通道值就是一个骨骼所需的16个浮点精度数据;
S33、当硬件不支持浮点精度纹理时,纹理数据只能保存0-255之间的整型数据,将浮点数据映射成整形数据填充到纹理里。
将浮点数据映射成整形数据填充到纹理里包括如下步骤:
S33-1、将浮点精度数拆成4个byte即4个纹理像素保存;
S33-2、把所有数据用byte方式存到纹理中,然后和着色器中的纹理采样器绑定,顶点着色器通过顶点缓冲对象中的骨骼id映射成纹理坐标,纹理采样器根据纹理坐标依次向后采样16个像素;
S33-3、步骤S33-2中采样到的16个像素包含64个byte值,即未解码的64个0-255的整型数据,以4个整型数据组装成一个浮点数的方式将64个byte值解码成16个浮点数,解码后的16个浮点数对应骨骼的骨骼数据。
采用本发明方法能够解决大量骨骼的骨骼动画运行在gpu上,实现骨骼动画兼容性处理。
具体实施方式
为了更好的理解本发明,下面详细说明本发明。
本发明提供一种骨骼动画兼容处理方法,通过cpu运算好骨骼动画数据然后提交给gpu,如下步骤:
S1、根据cpu运算好的骨骼动画数据判断骨骼数所需要的uniform变量书是否小于剩余着色器的uniform变量个数,如果是,转到步骤S2;如果否,转到步骤S3;
S2、直接采用uniform的方式将骨骼数提交给着色器;
S3、通过纹理映射的方式将骨骼数传递给着色器;
所述步骤S3中通过纹理映射的方式将骨骼数传递给着色器主要包括如下步骤:
S31、判断硬件是否支持浮点精度纹理,如果是,转到步骤S32;如果否,转到步骤S33;
S32、当硬件支持浮点精度纹理时,将骨骼数进行更新,并将更新后的骨骼数据依次填充进纹理当中,然后和着色器中的纹理采样器绑定,顶点着色器通过顶点缓冲对象中的骨骼id数映射成纹理的坐标,纹理采样器再根据纹理坐标依次往后采样4个像素(一个像素有rgba4个浮点精度通道),总共所采样处理的16像素通道值就是一个骨骼所需的16个浮点精度数据;
S33、当硬件不支持浮点精度纹理时,纹理数据只能保存0-255之间的整型数据,将浮点数据映射成整形数据填充到纹理里。
将浮点数据映射成整形数据填充到纹理里包括如下步骤:
S33-1、将浮点精度数拆成4个byte即4个纹理像素保存;
S33-2、把所有数据用byte方式存到纹理中,然后和着色器中的纹理采样器绑定,顶点着色器通过顶点缓冲对象中的骨骼id映射成纹理坐标,纹理采样器根据纹理坐标依次向后采样16个像素;
S33-3、步骤S33-2中采样到的16个像素包含64个byte值,即未解码的64个0-255的整型数据,以4个整型数据组装成一个浮点数的方式将64个byte值解码成16个浮点数,解码后的16个浮点数对应骨骼的骨骼数据。
具体地说,当骨骼数所需要的uniform变量小于剩余着色器的uniform变量个数时,就采用uniform方式提交给着色器。
当骨骼数所需要的uniform变量大于剩余着色器uniform变量个数时,通过纹理映射的方式传递给着色器。由于有些硬件不支持浮点精度的纹理,所以这里会根据具体情况作如下处理:
当硬件支持浮点精度纹理时,把更新后的骨骼数据依次填充进纹理当中,然后和着色器中的纹理采样器绑定,顶点着色器通过顶点缓冲对象中的骨骼id数映射成纹理的坐标,纹理采样器在根据纹理坐标依次往后采样4个像素(一个像素有rgba 4个浮点精度通道),所采样出来的16像素通道值就是一个骨骼所需的16个浮点精度数据。
当硬件不支持浮点精度纹理时,纹理数据只能保存0-255之间的整型数据。所以我们需要把浮点数据映射成整型数据填充到纹理里,在内存中一个byte就是表示0-255之间的数,而一个浮点精度数由4个byte组成,所以我们需要把浮点精度数拆成4个byte(也就是需要4个纹理像素来保存),这里就涉及到浮点精度数在内存中如何存放。当把所有数据用byte方式存放到纹理中后,和着色器中的纹理采样器绑定,顶点着色器通过顶点缓冲对象中的骨骼id映射成纹理坐标,纹理采样器在根据纹理坐标依次向后采样16个像素,这里所采样出来的64个byte值(一个像素有rgba 4个byte)是还未进行解码的64个0-255的整型数据。然后再进行4个整型数组装成一个浮点数的方式解码成16个浮点数,解码后的16个浮点数就是对应骨骼的骨骼数据。
采用本发明方法能够解决大量骨骼的骨骼动画运行在gpu上,实现骨骼动画兼容性处理。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (2)
1.一种骨骼动画兼容处理方法,通过cpu运算好骨骼动画数据然后提交给gpu,其特征在于,所述骨骼动画兼容处理方法还包括如下步骤:
S1、根据cpu运算好的骨骼动画数据判断骨骼数所需要的uniform变量书是否小于剩余着色器的uniform变量个数,如果是,转到步骤S2;如果否,转到步骤S3;
S2、直接采用uniform的方式将骨骼数提交给着色器;
S3、通过纹理映射的方式将骨骼数传递给着色器;
所述步骤S3中通过纹理映射的方式将骨骼数传递给着色器主要包括如下步骤:
S31、判断硬件是否支持浮点精度纹理,如果是,转到步骤S32;如果否,转到步骤S33;
S32、当硬件支持浮点精度纹理时,将骨骼数进行更新,并将更新后的骨骼数据依次填充进纹理当中,然后和着色器中的纹理采样器绑定,顶点着色器通过顶点缓冲对象中的骨骼id数映射成纹理的坐标,纹理采样器再根据纹理坐标依次往后采样4个像素(一个像素有rgba4个浮点精度通道),总共所采样处理的16像素通道值就是一个骨骼所需的16个浮点精度数据;
S33、当硬件不支持浮点精度纹理时,纹理数据只能保存0-255之间的整型数据,将浮点数据映射成整形数据填充到纹理里。
2.根据权利要求1所述的一种骨骼动画兼容处理方法,所述步骤S33中,当当硬件不支持浮点精度纹理时,将浮点数据映射成整形数据填充到纹理里时,其特征在于,将浮点数据映射成整形数据填充到纹理里包括如下步骤:
S33-1、将浮点精度数拆成4个byte即4个纹理像素保存;
S33-2、把所有数据用byte方式存到纹理中,然后和着色器中的纹理采样器绑定,顶点着色器通过顶点缓冲对象中的骨骼id映射成纹理坐标,纹理采样器根据纹理坐标依次向后采样16个像素;
S33-3、步骤S33-2中采样到的16个像素包含64个byte值,即未解码的64个0-255的整型数据,以4个整型数据组装成一个浮点数的方式将64个byte值解码成16个浮点数,解码后的16个浮点数对应骨骼的骨骼数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810476030.8A CN108648252A (zh) | 2018-05-17 | 2018-05-17 | 一种骨骼动画兼容处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810476030.8A CN108648252A (zh) | 2018-05-17 | 2018-05-17 | 一种骨骼动画兼容处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108648252A true CN108648252A (zh) | 2018-10-12 |
Family
ID=63756746
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810476030.8A Pending CN108648252A (zh) | 2018-05-17 | 2018-05-17 | 一种骨骼动画兼容处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108648252A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110175061A (zh) * | 2019-05-20 | 2019-08-27 | 北京大米科技有限公司 | 基于动画的交互方法、装置和电子设备 |
CN111402369A (zh) * | 2020-03-10 | 2020-07-10 | 京东数字科技控股有限公司 | 互动广告的处理方法、装置、终端设备及存储介质 |
CN113487542A (zh) * | 2021-06-16 | 2021-10-08 | 成都唐源电气股份有限公司 | 一种接触网导线磨耗区域的提取方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040113914A1 (en) * | 2002-03-29 | 2004-06-17 | Pts Corporation | Processor efficient transformation and lighting implementation for three dimensional graphics utilizing scaled conversion instructions |
CN101937556A (zh) * | 2009-06-29 | 2011-01-05 | 英特尔公司 | 纹理采样 |
US20120280973A1 (en) * | 2011-05-02 | 2012-11-08 | Sony Computer Entertainment Inc. | Texturing in graphics hardware |
CN102968815A (zh) * | 2012-12-05 | 2013-03-13 | 上海创图网络科技发展有限公司 | 基于纹理数据的复杂骨骼动画数据传输及其实现方法 |
CN104240285A (zh) * | 2014-09-16 | 2014-12-24 | 无锡梵天信息技术股份有限公司 | 利用vtf技术处理cpu大批量数据传入gpu的方法 |
CN106710003A (zh) * | 2017-01-09 | 2017-05-24 | 成都品果科技有限公司 | 一种基于OpenGL ES的三维拍照方法和系统 |
-
2018
- 2018-05-17 CN CN201810476030.8A patent/CN108648252A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040113914A1 (en) * | 2002-03-29 | 2004-06-17 | Pts Corporation | Processor efficient transformation and lighting implementation for three dimensional graphics utilizing scaled conversion instructions |
CN101937556A (zh) * | 2009-06-29 | 2011-01-05 | 英特尔公司 | 纹理采样 |
US20120280973A1 (en) * | 2011-05-02 | 2012-11-08 | Sony Computer Entertainment Inc. | Texturing in graphics hardware |
CN102968815A (zh) * | 2012-12-05 | 2013-03-13 | 上海创图网络科技发展有限公司 | 基于纹理数据的复杂骨骼动画数据传输及其实现方法 |
CN104240285A (zh) * | 2014-09-16 | 2014-12-24 | 无锡梵天信息技术股份有限公司 | 利用vtf技术处理cpu大批量数据传入gpu的方法 |
CN106710003A (zh) * | 2017-01-09 | 2017-05-24 | 成都品果科技有限公司 | 一种基于OpenGL ES的三维拍照方法和系统 |
Non-Patent Citations (3)
Title |
---|
LOVELYLOULOU: "ShadowMap实现软阴影,使用整数纹理", 《百度,HTTPS://BLOG.CSDN.NET/LOVELYLOULOU/ARTICLE/DETAILS/2681873》 * |
ZWQXIN: "MD5模型的格式、导入与顶点蒙皮式骨骼动画I", 《百度,HTTPS://BLOG.CSDN.NET/SUMMERHUST/ARTICLE/DETAILS/17421213》 * |
陈宏川: "虚拟交通环境下的人群仿真", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110175061A (zh) * | 2019-05-20 | 2019-08-27 | 北京大米科技有限公司 | 基于动画的交互方法、装置和电子设备 |
CN111402369A (zh) * | 2020-03-10 | 2020-07-10 | 京东数字科技控股有限公司 | 互动广告的处理方法、装置、终端设备及存储介质 |
CN111402369B (zh) * | 2020-03-10 | 2023-11-03 | 京东科技控股股份有限公司 | 互动广告的处理方法、装置、终端设备及存储介质 |
CN113487542A (zh) * | 2021-06-16 | 2021-10-08 | 成都唐源电气股份有限公司 | 一种接触网导线磨耗区域的提取方法 |
CN113487542B (zh) * | 2021-06-16 | 2023-08-04 | 成都唐源电气股份有限公司 | 一种接触网导线磨耗区域的提取方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10991127B2 (en) | Index buffer block compression | |
US9202303B2 (en) | System and method for compositing path color in path rendering | |
Sen et al. | Shadow silhouette maps | |
US9177413B2 (en) | Unique primitive identifier generation | |
US8547382B2 (en) | Video graphics system and method of pixel data compression | |
US7932914B1 (en) | Storing high dynamic range data in a low dynamic range format | |
US7499051B1 (en) | GPU assisted 3D compositing | |
US10559054B2 (en) | Graphics processing systems | |
US7714858B2 (en) | Distributed rendering of interactive soft shadows | |
US10380712B2 (en) | Graphics processing | |
CN110291563A (zh) | 图形处理中的多个着色器进程 | |
CN107392988A (zh) | 利用投影几何失真用于以可变采样率渲染的系统、方法和计算机程序产品 | |
EP3012737A1 (en) | Devices and methods for generating elementary geometries | |
CN108648252A (zh) | 一种骨骼动画兼容处理方法 | |
CN101271584B (zh) | 可编程图形处理单元计算核心的常量缓冲的方法和系统 | |
JP2016510473A (ja) | デプスマップのコンテンツを強化するための方法およびデバイス | |
KR20180023856A (ko) | 그래픽 처리 시스템 및 그래픽 프로세서 | |
US10466915B2 (en) | Accessing encoded blocks of data in memory | |
Goodnight et al. | Computation on programmable graphics hardware | |
US6760032B1 (en) | Hardware-implemented cellular automata system and method | |
US20180129419A1 (en) | Updating data stored in a memory | |
US10269168B2 (en) | Graphics processing systems | |
US7268788B2 (en) | Associative processing for three-dimensional graphics | |
US20150002524A1 (en) | Methods of and apparatus for approximating a function | |
US20240169612A1 (en) | Graphics processing systems |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20181012 |
|
WD01 | Invention patent application deemed withdrawn after publication |