国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity DOTS《群體戰(zhàn)斗彈幕游戲》核心技術(shù)分析之3D角色動(dòng)畫

這篇具有很好參考價(jià)值的文章主要介紹了Unity DOTS《群體戰(zhàn)斗彈幕游戲》核心技術(shù)分析之3D角色動(dòng)畫。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

最近DOTS發(fā)布了正式的版本, 我們來分享現(xiàn)在流行基于群體戰(zhàn)斗的彈幕類游戲,實(shí)現(xiàn)的核心原理。今天給大家介紹大規(guī)模戰(zhàn)斗群體3D角色的動(dòng)畫如何來實(shí)現(xiàn)。

DOTS 對(duì)角色動(dòng)畫支持的局限性

截止到Unity DOTS發(fā)布的版本1.0.16,目前還是無(wú)法很好的支持3D角色動(dòng)畫。在DOTS 的baker過程種,不支持常見的動(dòng)畫組件,包括: Animation組件,基于狀態(tài)機(jī)的Animator, 以及人形動(dòng)畫。同時(shí)DOTS在節(jié)點(diǎn)Baker成Entity的過程種只支持MeshRenderer組件,不支持SkinnedMeshRenderer組件(SkinnedMeshRenderer組件很多轉(zhuǎn)換過來后顯示效果不正確)。所以DOTS要支持3D角色動(dòng)畫就變得非常的麻煩。目前主流的方案就兩個(gè):

Unity DOTS《群體戰(zhàn)斗彈幕游戲》核心技術(shù)分析之3D角色動(dòng)畫,unity,游戲,3d

總之,如果要用DOTS基于ECS來播放3D角色動(dòng)畫,目前Unity DOTS版本(1.0.16)是不直接支持的。

對(duì)啦!這里有個(gè)游戲開發(fā)交流小組里面聚集了一幫熱愛學(xué)習(xí)游戲的零基礎(chǔ)小白,也有一些正在從事游戲開發(fā)的技術(shù)大佬,歡迎你來交流學(xué)習(xí)。

《群體戰(zhàn)斗彈幕游戲》應(yīng)該使用哪種動(dòng)畫系統(tǒng)

《群體戰(zhàn)斗彈幕游戲》這類游戲應(yīng)該使用哪種動(dòng)畫系統(tǒng)會(huì)比較好呢?我們來分析一下項(xiàng)目需求,群體戰(zhàn)斗有大量的戰(zhàn)斗單元在一個(gè)屏幕,這些戰(zhàn)斗單元對(duì)單個(gè)的渲染質(zhì)量要求不高,但是數(shù)量巨大導(dǎo)致非常消耗性能。渲染質(zhì)量要求不高,這樣我們的戰(zhàn)斗單元的模型的面數(shù)可以盡量的低,這樣頂點(diǎn)數(shù)不會(huì)特別多,同時(shí)動(dòng)畫也不會(huì)很復(fù)雜,幀數(shù)也可以比較少??偨Y(jié)一下需求:?jiǎn)蝹€(gè)模型頂點(diǎn)面數(shù)少,動(dòng)畫簡(jiǎn)單不復(fù)雜,節(jié)點(diǎn)的數(shù)目很多。

Unity DOTS《群體戰(zhàn)斗彈幕游戲》核心技術(shù)分析之3D角色動(dòng)畫,unity,游戲,3d

基于幀動(dòng)畫的3D角色動(dòng)畫如何實(shí)現(xiàn)

基于幀動(dòng)畫的3D角色動(dòng)畫如何實(shí)現(xiàn)呢?結(jié)合彈幕游戲的3D角色動(dòng)畫簡(jiǎn)單的特點(diǎn),分成以下步驟來具體實(shí)現(xiàn):

  1. 基于URP來編寫一個(gè)最簡(jiǎn)單的Diffuse Shader,渲染沒有光照計(jì)算,陰影計(jì)算,直接將模型紋理貼到模型表面;
    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. 擴(kuò)展Diffuse Shader,添加anim功能,增加uniform 來接受動(dòng)畫紋理,包括動(dòng)畫紋理對(duì)象(sampler2D),動(dòng)畫的時(shí)間長(zhǎng)度(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. 基于簡(jiǎn)單的Diffuse Shader+傳統(tǒng)的Animation組件做好普通的預(yù)制體節(jié)點(diǎn)給AnimBaker工具來使用

Unity DOTS《群體戰(zhàn)斗彈幕游戲》核心技術(shù)分析之3D角色動(dòng)畫,unity,游戲,3d

;

  1. 編寫一個(gè)工具,將普通3D角色動(dòng)畫的預(yù)制體節(jié)點(diǎn)中的動(dòng)畫進(jìn)行采樣,把數(shù)據(jù)保存到動(dòng)畫紋理,并創(chuàng)建角色Mesh+材質(zhì)(Difuse Anim Shader + Anim紋理+Anim時(shí)間)的預(yù)制體;

Unity DOTS《群體戰(zhàn)斗彈幕游戲》核心技術(shù)分析之3D角色動(dòng)畫,unity,游戲,3d

  1. 將生成好的預(yù)制體放到DOTS中的subscene來進(jìn)行Bake,Bake成Entity,這樣角色就可以帶動(dòng)畫了。

Unity DOTS《群體戰(zhàn)斗彈幕游戲》核心技術(shù)分析之3D角色動(dòng)畫,unity,游戲,3d

今天的分享就到這里,需要本篇文章完整的項(xiàng)目工具與源碼的同學(xué)可以關(guān)注我文章來源地址http://www.zghlxwxcb.cn/news/detail-757216.html

到了這里,關(guān)于Unity DOTS《群體戰(zhàn)斗彈幕游戲》核心技術(shù)分析之3D角色動(dòng)畫的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • DOTS介紹+Unity DOTS-MAN小游戲項(xiàng)目實(shí)戰(zhàn)

    DOTS介紹+Unity DOTS-MAN小游戲項(xiàng)目實(shí)戰(zhàn)

    DOTS是Unity在17年左右提出的一個(gè)概念,其核心是ECS。 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 全稱:(Multi-Thread)Data-Oriented-Tech-Stack (多線程式)數(shù)據(jù)導(dǎo)向型技術(shù)堆棧 實(shí)體組件系統(tǒng)(ECS) - 提供使用面向數(shù)據(jù)的方法進(jìn)行編碼的框架。在Unity中它通過Entities軟件包進(jìn)行分發(fā),

    2023年04月13日
    瀏覽(27)
  • Unity DOTS技術(shù)

    Unity DOTS技術(shù)

    目錄 一.概述 二.DOTS詳解 1.開發(fā)環(huán)境搭建 2.簡(jiǎn)單ECS程序 ?2.調(diào)試功能 3.常用API ?4.系統(tǒng)之間的互相干擾 5.實(shí)體Entity的創(chuàng)建查找刪除 6.使用批處理Gpu Instancing優(yōu)化性能 7.World,System,Group 1)World 2)System 3)Group 8.組件Component介紹 1)組件Component的添加修改刪除 2)ShareComponent 3)狀態(tài)

    2024年02月05日
    瀏覽(14)
  • Unity項(xiàng)目技術(shù)方案Dots架構(gòu)方案簡(jiǎn)介

    Unity項(xiàng)目技術(shù)方案Dots架構(gòu)方案簡(jiǎn)介

    DOTS全稱是Data-Oriented Tech Stack,翻譯過來就是多線程式數(shù)據(jù)導(dǎo)向型技術(shù)堆棧(DOTS),它由任務(wù)系統(tǒng)(Job System)、實(shí)體組件系統(tǒng)(ECS)、Burst Compiler編譯器三部分組成。 ECS + JobSystem + BurstCompile = 高性能 + 多線程 + ?編譯層面優(yōu)化 DOTS保證相同類型組件在內(nèi)存中都是順序排列,極大

    2023年04月09日
    瀏覽(21)
  • 【Unity】十萬(wàn)人同屏尋路? 基于Dots技術(shù)的多線程RVO2避障

    博文介紹了最基本的實(shí)現(xiàn)原理,有些老板懶得折騰,所以特意熬了幾個(gè)禿頭的夜把RVO、BRG、GPU動(dòng)畫、海量物體目標(biāo)搜索等高度封裝成了開箱即用的插件。 劃重點(diǎn)!!此方案是繞開Entities(ECS),不用寫一行ECS代碼,現(xiàn)有MonoBehavior開發(fā)工作流享受Entities渲染的性能。已有項(xiàng)目也能使

    2024年02月08日
    瀏覽(23)
  • Unity 回合制戰(zhàn)斗

    ???????? 回合制戰(zhàn)斗游戲是一種流行的游戲類型,它的基本玩法是讓玩家控制角色在回合制系統(tǒng)下進(jìn)行戰(zhàn)斗。本文將介紹如何使用Unity引擎實(shí)現(xiàn)一個(gè)基于回合制系統(tǒng)的3D戰(zhàn)斗游戲,并提供完整的代碼和注釋。 游戲設(shè)計(jì) ???????? 我們的回合制戰(zhàn)斗游戲?qū)ㄒ粋€(gè)主菜單場(chǎng)

    2024年02月16日
    瀏覽(23)
  • Unity相撲戰(zhàn)斗球

    Unity相撲戰(zhàn)斗球

    介紹 玩家球通過上下鍵控制,相機(jī)依靠左右鍵控制,有加力量的東西,玩家球碰到力量吸收后,可以更大力碰撞敵人,當(dāng)一波球碰掉后,還會(huì)生成新一波球。 物理材質(zhì)的彈力限制數(shù)0-1 為玩家和敵人分別加上物理材質(zhì) 玩家碰撞鉆石添加能量,并且鉆石消失,這里應(yīng)該把鉆石的

    2024年01月16日
    瀏覽(19)
  • Unity如何設(shè)計(jì)一個(gè)戰(zhàn)斗系統(tǒng)

    戰(zhàn)斗系統(tǒng)的基本原理 在游戲中,戰(zhàn)斗系統(tǒng)的基本原理是通過計(jì)算雙方的屬性和技能等信息,來模擬雙方的戰(zhàn)斗過程。在戰(zhàn)斗過程中,玩家需要根據(jù)自己的策略和技能來進(jìn)行操作,以便戰(zhàn)勝對(duì)手。在戰(zhàn)斗過程中,需要考慮到雙方的攻擊、防御、血量、狀態(tài)效果等因素,以便更加

    2024年02月12日
    瀏覽(18)
  • Unity Dots學(xué)習(xí)內(nèi)容記錄

    Unity Dots學(xué)習(xí)內(nèi)容記錄

    DOTS未來的潛力還是挺多的,目前已經(jīng)陸續(xù)有項(xiàng)目局部投入該技術(shù),追求硬件到軟件的極致性能。 主要是記錄下學(xué)習(xí)unity dots技術(shù)的過程吧。 DOTS全稱Data Oriented Tech Stack,面向數(shù)據(jù)的技術(shù)堆棧。 是由Unity的下面幾個(gè)技術(shù)棧組成 1.Entities(ECS,Entity-Component Data-System) 2.JobSytem(多線程作

    2024年04月15日
    瀏覽(28)
  • Unity 萬(wàn)人尋路(dots版本)

    Unity 萬(wàn)人尋路(dots版本)

    時(shí)間:2023-7-29 北京下雨,公司停電,回家早了,更新一下。 尋路模塊,還是前前后后,打磨了2個(gè)月,中間穿插著搞很多其他的功能,有些螺旋迭代的味道。 進(jìn)入正題: 設(shè)計(jì)團(tuán)隊(duì),會(huì)從游戲性角度考慮,提出很多需求。 1,單位之間的規(guī)避,模型不能穿插 2,建筑物規(guī)避,模

    2024年02月08日
    瀏覽(19)
  • Unity DOTS從原理到應(yīng)用

    什么是DOTS? Unity的DOTS(Data-Oriented Technology Stack)是一種數(shù)據(jù)驅(qū)動(dòng)的技術(shù)堆棧,旨在提高Unity游戲引擎的性能和可伸縮性。它使用C# Job System,Burst Compiler和Entity Component System(ECS)來組合和處理數(shù)據(jù),讓游戲運(yùn)行更高效率。DOTS使開發(fā)人員可以使用最新技術(shù)來開發(fā)游戲,并在追求

    2024年02月11日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包