一种符合人体关节作用力模拟方法与流程
本发明涉及人体关节模拟技术领域,具体是一种符合人体关节作用力模拟方法。
背景技术:
当前国内2d环境下人物模型模拟技术不太成熟,符合人体关节作用力原理的拟真作用力模拟技术资料较为稀缺,此系统为自主研发的符合人体结构和力学特征,可以应用于2d环境下人物碰撞模拟,交通模拟,武器模拟等各个场景,并且具有不错的运行效率和可以执性。现有技术一般采用物理关节模拟实现,例如unity的2d铰链关节(hingejoint2d)允许由2d刚体物理组件控制的游戏对象连接到空间中的一个点,使游戏对象可围绕该点旋转。可以让旋转被动发生(例如,对碰撞做出反应),也可通过2d关节本身提供的电机扭矩来主动为旋转提供动力。此外,还可以设置限制来防止铰链完全旋转或进行多次旋转。
技术实现要素:
本发明的目的在于提供一种符合人体关节作用力模拟方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
一种符合人体关节作用力模拟方法,该方法包括以下步骤:
设定重力模拟状态;
在手臂处设置两块第一脊椎模拟块,在腿部处设置两块第二脊椎模拟块,肘部和膝部处分别设置肘关节和膝关节;
关节的活动范围为15°-180°;
每颗子弹发射的速度为v,角度为g,则水平方向的速度为vh=v*cos(π*g/180°),垂直方向的速度为vv=v*sin(π*g/-180°);
子弹的质量为m,则子弹水平方向的动量为:ph=vh*m,子弹垂直方向的动量:pv=vv*m;
人体所受的水平冲量为ih=-(ph-0kg*px/v);人体所受的垂直冲量为iv=-(pv-0kg*px/v),其中px为像素;
计算各关节之间冲量的传导;
根据各关节之间角度与阻力计算弯曲程度。
作为本发明进一步的方案:每1/60秒会重新刷新屏幕显示,刷新屏幕显示的方法是利用opengl框架,实现渲染图片的效果。
作为本发明进一步的方案:设定重力模拟状态具体为:
地球的重力加速度为9.8m/s2,而系统中2d人物模型的高度为400像素(px)。根据一般人站立高度为170cm。因此在系统中模拟的重力加速度为2305px/s2。
作为本发明进一步的方案:系统中帧率为60帧/秒,即可以算出每两帧之间的间隔δt,即可每帧刷新出此关节弯曲程度。
附图说明
图1为预先设置关节反冲量的一套数据表;
图2为系统中垂直方向膝关节反冲量的变化曲线;
图3为射击模拟的逻辑流程图;
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-3,本发明实施例中,一种符合人体关节作用力模拟方法,,该方法包括以下步骤:
设定重力模拟状态;
在手臂处设置两块第一脊椎模拟块,在腿部处设置两块第二脊椎模拟块,肘部和膝部处分别设置肘关节和膝关节;
关节的活动范围为15°-180°;
每颗子弹发射的速度为v,角度为g,则水平方向的速度为vh=v*cos(π*g/180°),垂直方向的速度为vv=v*sin(π*g/-180°);
子弹的质量为m,则子弹水平方向的动量为:ph=vh*m,子弹垂直方向的动量:pv=vv*m;
人体所受的水平冲量为ih=-(ph-0kg*px/v);人体所受的垂直冲量为iv=-(pv-0kg*px/v),其中px为像素;
计算各关节之间冲量的传导;
根据各关节之间角度与阻力计算弯曲程度。
每1/60秒会重新刷新屏幕显示,刷新屏幕显示的方法是利用opengl框架,实现渲染图片的效果。
设定重力模拟状态具体为:
地球的重力加速度为9.8m/s2,而系统中2d人物模型的高度为400像素(px)。根据一般人站立高度为170cm。因此在系统中模拟的重力加速度为2305px/s2。
系统中帧率为60帧/秒,即可以算出每两帧之间的间隔δt,即可每帧刷新出此关节弯曲程度。
1:刷新频率:每1/60秒我们算法会重新刷新屏幕显示
刷新屏幕显示的方法是利用opengl框架,实现渲染图片的效果。
2.重力加速度的实现原理:
首先我们需要实现一个有重力的世界,来模拟地球的环境,地球的重力加速度为9.8m/s2,而系统中2d人物模型的高度约为400像素(px)。根据一般人站立高度约为170cm。因此在系统中模拟的重力加速度为2305px/s2。
3.关节模拟
特点:尽量用最少的关节来实现模拟效果
人体有206块骨骼,78个关节,以及639块骨骼肌。考虑到改系统的性能问题和可移植性,我们需要用到最少的关节来尽可能的模拟人体的形态。我们系统的关节点设计如下:
身体:
我们用4块拼接成人物的身体。
4块可以模拟脊椎的形态,可以更好的模拟人物躯干的形变。
第三和第四块之间由两个关节之间固定。
手臂:
手臂由两块组成,肘部有一关节固定。
腿部:
腿部由两块组成,膝部有一关节固定。
关节结构:
为了模拟关节的受力构造我们对人体关节的构造进行了分析。
人体关节的运动是有一定规律的,关节只能朝特定的方向运动,不能反关节运动,因此系统中人物的各个关节的运动范围都是固定的。
这里是阐述人体关节活动范围是固定的,人物关节模拟要逼真也需要达到这种效果,下面会详细描述如何做到活动范围固定。
膝关节的活动范围为180°-15°之间。
我们的算法中会有一个变量,这个变量就是关节反冲量,关节反冲量指的是在当前关节每弯曲1°所消耗的动量,关节反冲量是一个矢量,因此是由水平方向的分量和垂直方向的分量的合量。我们在刷新每帧时就可以根据关节缓冲量的多少来设置坐标和角度。
关节反冲量的值我们是预先设置好的一套数据表,数据表如图1所示:
可以看到关节在180°时,弯曲1°能缓冲的动量为0。
所以在关节伸直的状态下不受力,由于身体会受到重力影响,因此关节初始状态会受到人体的压力,重力可以换算成重力冲量,而每帧刷新时间为1/60s因此重力冲量为2305px/s2*m/1/60s。
因此膝关节初始状态是会有一定弯曲角度的。
保护机制:
由于关节反冲量在180°时最小,在15°时最大。为了防止算法不被破坏,在关节弯曲度已经到15°时,我们给其设置的反冲量设置为无穷大因此关节的活动范围为15°-180°之间。
泄力过程:
以模拟子弹反作用力为例:
我们建立了一个模拟实验场景,以此来说明后坐力对膝关节系统模拟的影响;
模拟实验中每颗子弹发射时的速度为2500px/s,角度为g。
水平方向的速度为:vh=2500px/s*cos(π*g/180°);
垂直方向的速度为:vv=2500px/s*sin(π*g/-180°);
子弹质量为0.015kg,因此子弹水平方向动量ph=vh*0.015kg:
子弹垂直方向动量pv=vv*0.015kg;人体所受的水平冲量为ih=-(ph-0kg*px/v):
人体所受的垂直冲量为iv=-(pv-0kg*px/v)。
系统中垂直方向膝关节反冲量的变化曲线如图2所示。
由冲量的方向可以计算出在水平方向和垂直方向的分量。
系统中帧率为60帧/秒,因此可以算出每两帧之间的间隔δt。
即可每帧刷新出此关节弯曲程度。
射击角度不同和子弹数量不同将影响身体的状态,各个关节的状态在此不做赘述。
虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
故以上所述仅为本申请的较佳实施例,并非用来限定本申请的实施范围;即凡依本申请的权利要求范围所做的各种等同变换,均为本申请权利要求的保护范围。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除