【Unity万人同屏插件】使用手册 保姆级教程 GPU动画 GPU Spine 10万人同屏 渲染 移动/导航/寻路 索敌/目标查找/碰撞检测/射线检测 全能方案

 插件简介

【Unity万人同屏插件】是Unity通用性能优化插件,超大规模渲染、寻路移动、索敌碰撞检测等全方位性能瓶颈解决方案,支持Animator、Animation、Spine转为GPU动画prefab,并支持多线程合批渲染大幅提升性能, 兼容Unity全平台(含微信/抖音小游戏)

新手友好简单易用无ECS技术门槛传统开发方式,也适用于旧项目免重构性能提升。

插件用法

插件包含三大模块:

模块名称功能
GPUAnimation把Animator、Animation、Spine Skeleton资源直接转换成 100%纯GPU计算的GPU动画。支持平滑过渡、事件、挂载点记录、武器挂载、切换皮肤,支持Mesh / Material以及贴图合并、一键自动生成LOD简化Mesh 直接使用GPU动画prefab 以GameObject传统方式使用,相比直接使用Animator、Skeleton可提升10倍以上性能。
ECSGraphics基于Entities Graphics(DOTS) API高度封装简化的高性能渲染接口,无需用户写ECS代码。支持把静态模型或GPUAnimation 通过DOTS技术高性能合批渲染,进一步大幅提升性能,是实现10万级同屏渲染的最佳方案。 同时提供了目标搜索/索敌/碰撞检测、Raycast / SphereCast检测 接口。内置两套Jobs多线程实现的空间划分算法,支持10w+单位高性能目标查找。
RVO纯数据驱动、Jobs多线程计算,支持超大规模 避让移动、寻路/导航、支持Terrain 3D地形、目标搜索/索敌/碰撞检测、Raycast / SphereCast检测,全面覆盖游戏业务中常见性能热点。 动态避让移动支持精确控制哪些单位之间不碰撞、避让权重(boss不给小兵让路),Targeting索敌系统支持根据视野、攻击范围、阵营、标签、优先级等参数,精准筛选所需目标。

GPUAnimation

GPU动画是万人同屏插件的基石,把Animator/Animation 和 Spine 动画从CPU计算 完全 转变成GPU计算,从而完美支持合批渲染。

把Animator、Animation、Spine Skeleton资源直接转换成 100%纯GPU计算的GPU动画。支持平滑过渡、事件、挂载点记录、武器挂载、切换皮肤,支持Mesh / Material以及贴图合并、一键自动生成LOD简化Mesh

直接使用GPU动画prefab 以GameObject传统方式使用,相比直接使用Animator、Skeleton可提升10倍以上性能。

一. 创建GPU动画Builder

在Unity 资源管理界面 选中[Animator/Animation预制体] 或 [SkeletonDataAsset 资源] 鼠标右键 Create -> GPUAnim -> Create Builders From Selection 创建GPUAnim 或 GPUSpine转换文件:

创建GPU Spine构建配置

编辑

创建3D GPU动画构建配置

编辑

二. GPU动画Builder配置

创建完GPU动画配置文件后,可在配置文件中设置各项转换参数以满足GPU动画不同需求。

1. GPU Spine (2D)

直接解析SkeletonDataAsset 精准还原动画、特效。除基本骨骼动画帧外,还额外支持 颜色/透明度 、Deform网格变形、Active显隐关键帧。

GPUSpine完美还原Spine动画、特效

编辑

如下图所示,配置文件会自动根据Skeleton文件初始化,每项配置都有中 / 英 双语展示:

合并材质:支持把Spine的材质、贴图合并成一个材质/图集,优化成一个DrawCall,并且单材质支持Normal 和 Addictive两种常用Blend混合模式,既优化DrawCall 又兼顾混合效果。 

动画/Clips:默认会把Spine文件所有动画添加进列表,根据也许需求 拖拽 排放动画索引顺序即可。支持为每个动画设置 速度、是否循环播放。

记录挂载点:点击 ‘+’ 添加挂点Slots,在下拉列表中选择Skeleton的挂点,列表中的挂点会记录到GPU动画数据,用于把武器挂载到挂点上 或 运行时实时获取挂点位置/旋转。

构建按钮: ‘构建当前Skin’ 会只把当前选中的皮肤名称 构建成GPU Spine;‘构建全部Skins’ 会把Skeleton所有皮肤构建成GPU Spine.

GPUSpine配置界面

编辑

2. GPU Anim (3D)

如下图所示,对于3D GPU动画,工具提供了全方位的功能需求

GPUAnim配置界面

编辑

进阶用法:

  • 启用分组构建功能,精确控制Mesh / Material,按组合并

第一步:点 ‘+’ 添加Mesh Group 组,这些组是用于把模型分成多个Sub Mesh块,每个Sub Mesh块就可以单独用一个Material渲染。

第二步:在Render 分配栏,通过下拉框选择每个Mesh对应的组。

Mesh Group的应用场景(举个例子):

例子1:角色身体、头发、衣服都需要用不同的材质(shader)才能渲染出对应的质感,就可以用Mesh Group分组进行合并。最终生成的GPU动画资源就是 单 Mesh + 多Materials,以解决不同部位用不同材质的需求。

例子2:换装,对于换装需求,角色身上的衣服是需要动态切换的,不能直接合并到Mesh里。就可以把 ‘衣服’ 建组,同时勾选 【作为挂载物单独导出】,‘衣服’就会独立作为GPU动画资源导出。

GPUAnim 分组合并Mesh、Material

编辑

  • 记录挂载点

GPUAnim / GPUSpine 都支持记录挂载点,挂载点可用于挂载GPU动画武器、皮肤等挂载物。

支持运行时 实时获取挂点position / rotation / scale 数据。例如: GPU动画 坦克,炮弹需要从炮管端点创建并发出,就可以在炮管端点处添加一个挂载点,就能在GPU动画播放的任意时刻拿到准确的炮管端点位置。

点‘+’添加 【挂点】,直接拖拽挂点GameObject添加。

编辑

  • 静态 / 动态武器(挂载物)

对于静态模型挂载物,直接把prefab配置到静态挂载物列表。

对于GPU动画挂载物(也就是武器自己也有GPU动画),可以把其它GPU动画构建文件直接配置到列表,支持嵌套。构建GPU动画时会自动构建出 静态 / 动态 挂载物。

编辑

3. GPU动画资源

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部