[Unity]GPU Instance 如何将人形Animator动画保存到图片里

参考:

  1. GitHub - tkonexhh/RenderHugeByGPUInstance
  2. Creating shaders that support GPU instancing - Unity 手册
  3. Animator-Play - Unity 脚本 API
  4. Unity-Animator深入系列---API详解-CSDN博客
  5. Unity 获取当前动画播放的帧_unity获取当前动画播放到第几帧-CSDN博客
  6. https://www.cnblogs.com/WalkingSnail/p/15656780.html
  7. GPU Skinning 加速骨骼动画 - 知乎
  8. UnityShader 基础(8)-图像-Shader自定义函数与随机颜色 - 知乎

方案:

  1. 准备资源:
    1. 符合Humanoid标准的模型;
    2. 带有完整动画的 AnimatorController;
  2. 编写生成脚本:
    1. 获取Animator里的所有clip;
    2. 按帧播放Animator,将顶点数据保存到Texture里,一行像素表示一帧动画的所有顶点数据,每个像素表示一个顶点的坐标;
    3. 保存所有动画数据(行数,起使行,clip长度,clip名字);
  3. 编写播放shader:
    1. 添加 UNITY_INSTANCING 相关宏;
    2. 在 v2f vert(appdata v, uint vid: SV_VertexID) 里读取动画数据的图片像素数据,转换成顶点数据,动画当前第几帧作为参数传入,对应图片的行,vid 计算列,使用 tex2Dlod 方法读取颜色值 = 顶点坐标;
    3. 在 fixed4 frag(v2f i): SV_Target 中处理顶点颜色(用于处理抖色,可以生成不同配色的模型,方便做队伍颜色或等级等颜色区分,不需要改颜色的可以不加处理)。
  4. 编写播放控制脚本:
    1. 需要结合shader,控制传入参数(当前帧数)
  5. 注意:
    1. Animator.Play方法的 normalizedTime 参数表示 介于零到一之间的时间偏移。
    2. 执行生成脚本的对象需要在场景里,因为需要调用 Animator.Play 来播放帧动画。
    3. shader中 tex2Dlod 参数2的分量取值范围为 0~1,利用好 _TexelSize。
  6. 代码:
    1. https://gitee.com/grimraider/gpu-instance

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/96345.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言练习百题之排序算法

题目:C语言实现排序算法 冒泡排序 思路&#xff1a; 依次比较相邻的元素&#xff0c;如果顺序不对则交换&#xff0c;直到整个数组有序。 实现代码&#xff1a; #include <stdio.h>void bubbleSort(int arr[], int n) {for (int i 0; i < n - 1; i) {for (int j…

FFmpeg 基础模块:AVIO、AVDictionary 与 AVOption

目录 AVIO AVDictionary 与 AVOption 小结 思考 我们了解了 AVFormat 中的 API 接口的功能&#xff0c;从实际操作经验看&#xff0c;这些接口是可以满足大多数音视频的 mux 与 demux&#xff0c;或者说 remux 场景的。但是除此之外&#xff0c;在日常使用 API 开发应用的时…

低代码平台如何借助Nginx实现网关服务

摘要&#xff1a;本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 前言 在典型的系统部署架构中&#xff0c;应用服务器是一种软件或硬件系统&#xff0c…

在VS Code中优雅地编辑csv文件

文章目录 Rainbow csv转表格CSV to Tablecsv2tableCSV to Markdown Table Edit csv 下面这些插件对csv/tsv/psv都有着不错的支持&#xff0c;这几种格式的主要区别是分隔符不同。 功能入口/使用方法Rainbow csv按列赋色右键菜单CSV to Table转为ASCII表格指令CSV to Markdown …

C++(反向迭代器)

前言&#xff1a; 上一章我们介绍了适配器&#xff0c;也提了一下迭代器适配器&#xff0c;今天我们就从反向迭代器把迭代器适配器给解释一下。 既然 都叫迭代器容器了 就说名只要接口合适他可以封装实现各种容器需求包括vector list 。 目录 1.反向迭代器设计 1.1反向迭代…

模型压缩部署概述

模型压缩部署概述 一&#xff0c;模型在线部署 1.1&#xff0c;深度学习项目开发流程 1.2&#xff0c;模型训练和推理的不同 二&#xff0c;手机端CPU推理框架的优化 三&#xff0c;不同硬件平台量化方式总结 参考资料 一&#xff0c;模型在线部署 深度学习和计算机视觉…

windows 任务计划自动提交 笔记到github 、gitee

一、必须有个git仓库托管到git上。 这个就不用说了&#xff0c;自己在github或者码云上新建一个仓库就行了。 二、创建自动提交脚本 这个bat脚本是在windows环境下使用的。 注意&#xff1a;windows定时任务下 调用自动提交git前&#xff0c;必须先进入该git仓库目录&#x…

R语言实现竞争风险模型(1)

#竞争风险模型 tmp <- data.frame(gene tiaoxuan[,5:6],OS.Time Train[,"Survival_months"], OS Train[,"CSS"],stringsAsFactors F) colnames(tmp) #方法1&#xff1a;riskregression library(riskRegression) fgr1<-FGR(Hist(OS.Time,OS)~gen…

分页处理 - 若依cloud -【 129 】

129 分页功能实现详解 | RuoYi 前端采用基于bootstrap的轻量级表格插件bootstrap-table(opens new window)后端采用基于mybatis的轻量级分页插件pageHelper(opens new window) 提示&#xff1a; 前后端分页实现流程 一 前端 1 element-ui提供了el-pagination&#xff0c;可以…

法国乐天下单支付流程,自养号测评技术环境揭秘。

Rakuten的前身是PriceMinister一家法国公司&#xff0c;经营电子商务网站PriceMinister&#xff0c;按访问量计算&#xff0c;该网站是法国第五大电子商务网站。2010年&#xff0c;它被乐天公司收购&#xff0c;2018年&#xff0c;它更名为Rakuten。乐天法国Rakuten France&…

小谈设计模式(17)—状态模式

小谈设计模式&#xff08;17&#xff09;—状态模式 专栏介绍专栏地址专栏介绍 状态模式关键角色上下文(Context)抽象状态(State)具体状态(Concrete State) 核心思想Java程序实现首先&#xff0c;我们定义一个抽象状态类 State&#xff0c;其中包含一个处理请求的方法 handleRe…

【开发篇】十七、消息:模拟订单短信通知

文章目录 1、消息2、JMS3、AMQP4、案例&#xff1a;模拟订单短信通知 相关文章&#xff1a; 【同步通讯与异步通讯】 1、消息 消息的发送方&#xff0c;即生产者。消息的接收方&#xff0c;即消费者。同步通信就行打视频&#xff0c;等着对方接电话才能继续往下&#xff0c;而…

Go通过reflect.Value修改值

到目前为止&#xff0c;反射还只是程序中变量的另一种读取方式。然而&#xff0c;在本节中我们将重点讨论如何通过反射机制来修改变量。 回想一下&#xff0c;Go语言中类似x、x.f[1]和*p形式的表达式都可以表示变量&#xff0c;但是其它如x 1和f(2)则不是变量。一个变量就是一…

间隔分区 Interval Partition partition_name, interva

分区(Partition)一直是Oracle数据库引以为傲的一项技术&#xff0c;正是分区的存在让Oracle高效的处理海量数据成为可能&#xff0c;在Oracle 11g中&#xff0c;分区技术在易用性和可扩展性上再次得到了增强。在10g的Oracle版本中&#xff0c;要对分区表做调整&#xff0c;尤其…

QSqlTableModel使用简介

QSqlTableModel可以和QTableView共同使用&#xff0c;只需对QSqlTableModel类操作就可以实现读写数据库&#xff0c; 同时将数据显示在tableview中&#xff0c;相同的更改tableview中的值也可以直接同步到数据库中。QSqlTableModel类使用注意&#xff1a; QSqlTableModel::setH…

微服务moleculer03

1. Moleculer 目前支持SQLite&#xff0c;MySQL&#xff0c;MariaDB&#xff0c;PostgreSQL&#xff0c;MSSQL等数据库&#xff0c;这里以mysql为例 2. package.json 增加mysql依赖 "mysql2": "^2.3.3", "sequelize": "^6.21.3", &q…

Dijkstra 邻接表表示算法 | 贪心算法实现--附C++/JAVA实现源码

以下是详细步骤。 创建大小为 V 的最小堆,其中 V 是给定图中的顶点数。最小堆的每个节点包含顶点编号和顶点的距离值。 以源顶点为根初始化最小堆(分配给源顶点的距离值为0)。分配给所有其他顶点的距离值为 INF(无限)。 当最小堆不为空时,执行以下操作: 从最小堆中提取…

MIPI接口协议及规范理解

什么是MIPI接口 MIPI&#xff0c;英文全称为Mobile Industry Processor Interface&#xff0c;即移动行业处理器接口。它是MIPI联盟发起的为移动应用处理器制定的开放标准。MIPI接口是一种专为移动设备和嵌入式系统设计的串行通信接口&#xff0c;定义了一系列的接口标准&…

微服务学习--1入门

写在前面&#xff1a; 最近摆了几天&#xff0c;现在重新开始学习。《本文没啥用》。 文章目录 概念概括优劣势特征 SpringCloud 概念 概括 微服务技术是分布式架构的一种&#xff0c;因为一个机器的能力有限&#xff0c;需要集群来进行同时解决&#xff0c;但是分布式也就…

docker swarm安装指导

SWARM部署DOCKER集群 1. 简介............................................................................................................................ 3 2. 部署准备.........................................................................................…