首页 > 其他分享 >Unity DOTS《群体战斗弹幕游戏》核心技术分析之3D角色动画 鲨鱼辣椒 鲨鱼辣椒

Unity DOTS《群体战斗弹幕游戏》核心技术分析之3D角色动画 鲨鱼辣椒 鲨鱼辣椒

时间:2023-12-06 16:47:16浏览次数:26  
标签:DOTS 动画 游戏 鲨鱼 角色 float4 辣椒 弹幕 3D

最近DOTS发布了正式的版本, 我们来分享现在流行基于群体战斗的弹幕类游戏,实现的核心原理。今天给大家介绍大规模战斗群体3D角色的动画如何来实现。

DOTS 对角色动画支持的局限性

截止到Unity DOTS发布的版本1.0.16,目前还是无法很好的支持3D角色动画。在DOTS 的baker过程种,不支持常见的动画组件,包括: Animation组件,基于状态机的Animator, 以及人形动画。同时DOTS在节点Baker成Entity的过程种只支持MeshRenderer组件,不支持SkinnedMeshRenderer组件(SkinnedMeshRenderer组件很多转换过来后显示效果不正确)。所以DOTS要支持3D角色动画就变得非常的麻烦。目前主流的方案就两个:

对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。

总之,如果要用DOTS基于ECS来播放3D角色动画,目前Unity DOTS版本(1.0.16)是不直接支持的。

对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。

《群体战斗弹幕游戏》应该使用哪种动画系统

《群体战斗弹幕游戏》这类游戏应该使用哪种动画系统会比较好呢?我们来分析一下项目需求,群体战斗有大量的战斗单元在一个屏幕,这些战斗单元对单个的渲染质量要求不高,但是数量巨大导致非常消耗性能。渲染质量要求不高,这样我们的战斗单元的模型的面数可以尽量的低,这样顶点数不会特别多,同时动画也不会很复杂,帧数也可以比较少。总结一下需求:单个模型顶点面数少,动画简单不复杂,节点的数目很多。

基于帧动画的3D角色动画如何实现

基于帧动画的3D角色动画如何实现呢?结合弹幕游戏的3D角色动画简单的特点,分成以下步骤来具体实现:

  1. 基于URP来编写一个最简单的Diffuse Shader,渲染没有光照计算,阴影计算,直接将模型纹理贴到模型表面;
    HLSLPROGRAM
    #pragma vertex vert
    #pragma fragment frag
    // Includes
    #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl"
    #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
    #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
    #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
    #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl"
    struct appdata
    {
    float2 uv : TEXCOORD0;
    float4 pos : POSITION;
    UNITY_VERTEX_INPUT_INSTANCE_ID
    };
    struct v2f
    {
    float2 uv : TEXCOORD0;
    float4 vertex : SV_POSITION;
    UNITY_VERTEX_INPUT_INSTANCE_ID
    };
    CBUFFER_START(UnityPerMaterial)
    sampler2D _MainTex;
    float4 _MainTex_ST;
    // float _AnimLen;
    // sampler2D _AnimMap;
    // float4 _AnimMap_TexelSize;//x == 1/width
    CBUFFER_END
    float4 ObjectToClipPos(float3 pos)
    {
    return mul(UNITY_MATRIX_VP, mul(UNITY_MATRIX_M, float4 (pos,1)));
    }
    v2f vert(appdata v, uint vid : SV_VertexID)
    {
    UNITY_SETUP_INSTANCE_ID(v);
    v2f o;
    o.uv = TRANSFORM_TEX(v.uv, _MainTex);
    o.vertex = ObjectToClipPos(v.pos);
    return o;
    }
    float4 frag(v2f i) : SV_Target
    {
    float4 col = tex2D(_MainTex, i.uv);
    return col;
    }
    ENDHLSL
  2. 扩展Diffuse Shader,添加anim功能,增加uniform 来接受动画纹理,包括动画纹理对象(sampler2D),动画的时间长度(float);
    v2f vert(appdata v, uint vid : SV_VertexID)
    {
    UNITY_SETUP_INSTANCE_ID(v);
    float f = _Time.y / _AnimLen;
    fmod(f, 1.0);
    float animMap_x = (vid + 0.5) * _AnimMap_TexelSize.x;
    float animMap_y = f;
    float4 pos = tex2Dlod(_AnimMap, float4(animMap_x, animMap_y, 0, 0));
    v2f o;
    o.uv = TRANSFORM_TEX(v.uv, _MainTex);
    o.vertex = ObjectToClipPos(pos);
    return o;
    }
  3. 基于简单的Diffuse Shader+传统的Animation组件做好普通的预制体节点给AnimBaker工具来使用

;

  1. 编写一个工具,将普通3D角色动画的预制体节点中的动画进行采样,把数据保存到动画纹理,并创建角色Mesh+材质(Difuse Anim Shader + Anim纹理+Anim时间)的预制体;
  1. 将生成好的预制体放到DOTS中的subscene来进行Bake,Bake成Entity,这样角色就可以带动画了。

今天的分享就到这里,需要本篇文章完整的项目工具与源码的同学可以关注我

标签:DOTS,动画,游戏,鲨鱼,角色,float4,辣椒,弹幕,3D
From: https://www.cnblogs.com/bycw/p/17879863.html

相关文章

  • js获取抖音弹幕
    functiondom(){   //创建一个MutationObserver实例   letmutationObserver=newMutationObserver(function(mutationsList,observer){     for(varmutationofmutationsList){       console.log("用户:",mutation.target.las......
  • 抖音直播间弹幕采集软件,可提取UID抖音号安全码礼物评论,易语言源码分享
    用精易浏览器的接口开发的,易语言源码,但是支持匿名数据采集,比较稳定,源码下面会分享,包括接口,需要具备一定的技术才能整合哈。下面是采集效果图:【我只是把功能做出来了,但是界面比较丑】下面是核心代码易语言【程序集】:================================================.版本2.支持库......
  • 快手弹幕助手
    快手弹幕语言版本,主播场控帮手;直播互动语音答谢,自动发弹幕,快手无人直播 点击输入图片描述(最多30字)弹幕保存;发送自定义弹幕 软件介绍:快手弹幕助手是一款快手直播助手软件,快手弹幕助手为广大快手直播的主播们打造的在线直播辅助工具。支持弹幕语音播报......
  • 弹幕游戏小程序系统软件开发
      一、游戏背景  弹幕游戏之前是在直播间出现的,玩的人多了,知道的人多了,就有部分人开始参与进来了。正受到越来越多游戏玩家的喜爱,通过在游戏中引入实时弹幕系统,能增加游戏的互动性和社交性。  二、主要功能设计  1.弹幕发送与接收:玩家在直播间发送字幕参与游戏,......
  • 弹幕游戏开发软件开发
      直播间弹幕游戏好多的经常刷短视频的人都看到过,它是结合短视频直播间玩的,用户回复一定的数字或者文字参与到直播间来。弹幕游戏的开发技术需要一些游戏变成,硬件结合的,还有直播间的互动等功能。  弹幕游戏软件的开发选择的是游戏引擎开发技术,游戏引擎的开发是以基础技术......
  • 直播间弹幕游戏定制开发
      最近直播间弹幕游戏比较的火爆,不少的公司就纷纷的加入该行业进行直播,让进来的用户在直播间互动,感兴趣的用户就会在直播间刷礼物达到游戏的参战的目的。现在就重点分析下关于游戏软件的开发技术,游戏设计特效,提高用户体验等,来看看弹幕游戏开发的重点方面吧。  软件开发的......
  • 弹幕游戏小程序软件开发
      弹幕游戏小程序和结合直播间进行玩的,玩家可以在游戏直播间发字幕,直播间的游戏画面就实时的同步了,也可以与其他玩家进行互动。  该小程序的主要功能包括:  1.直播间房间:玩家开始游戏时,所有的用户都可以进来,然后游戏规则、难度、人数等参数。  2.加入直播间:玩家......
  • 弹幕游戏小程序功能定制需求
      弹幕游戏小程序是一款非常有趣的直播间在线互动游戏,通过小程序平台定制开发,可以实现更多的功能需求。下面是一份弹幕游戏小程序的功能定制需求,供您参考。  1.用户注册登录  用户注册直播间账号,进入游戏,参与游戏,通过刷礼物和发送字幕实现互动。  2.弹幕游戏界......
  • 弹幕互动小游戏软件小程序
      直播间弹幕小游戏软件,是一种直播间实时互动游戏。它于其他的小程序不同,它是以直播间为依托的互动游戏,让用户通过字幕实现控制游戏,让其他用户在观看时也能参与其中,从而达到互动的效果。  直播间弹幕小游戏的小程序优势就是,操作简单,互动人数多,占用空间少,对战模式,都是可以......
  • 弹幕游戏直播新玩法疯狂吸金
      弹幕游戏直播新玩法:疯狂吸金方法  一、弹幕互动玩法  在直播间互动过程中,所有的用户都是其中的一员,只要在直播间发出一个字就可以参与其中,加入阵营。一旦成为一方阵营,只需轻点屏幕、点个赞或打出一个666,就可以成功招募出一个基础兵种,而你的大名也会在屏幕上显示出......