Games104现代游戏引擎学习笔记08

news2024/11/25 4:29:29

渲染那部分看的云里雾里的,等学完其他图形学的内容再回头开吧

游戏动画的三个挑战:
1.根据交互实时的反应各种变化
2.一帧时间里的庞大计算
3.更真实自然的表现

2D动画
sprite animation
把每一帧精灵循环绘制出来

2D技术实现3D效果
在各个视角采了一系列的动作。根据摄像机的位置,播放不同的sprite动画
在这里插入图片描述
粒子系统也是sprite animation

live2d
讲一个图片分成多个小图元
通过对每个小图元的旋转,缩放和变形(对图套以一个框架,对框架的拉伸,会使里面的三角形/正方形进行反射变换)
对每个图片元素生存控制网格,在网格中可以随机的加入控制点。
在每一帧中k出想要的画面效果

DOF:自由度,即可变换的维度
一个刚体通常6个自由的:平移的x,y,z。以及围绕三个轴的旋转
在这里插入图片描述
Rigid Hierarchical animation
将物体分成一个个能动的关节。每个mesh和关节绑定。
关节处的mesh会穿插

Per-vertex animation 顶点动画
存下每帧每个顶点的数据,顶点的变化会导致法向的变化。通常是用物理引擎模拟好,然后存储成vertext-animation的texture
如旗子动画,水流动画等,难以区分骨骼

Morph Target animation
也是一种顶点动画。在顶点间插值,设置不同的权重。通常用于人脸

3D Skinned animation 蒙皮动画
每个顶点受多根骨骼的作用

2D skinned animation与3D原理相同

Physics-based animation:用于布娃娃系统,物理的模拟,IK(反向动力学)

在这里插入图片描述
不同的坐标系:
世界坐标系world
模型坐标系model
局部坐标系local

基础结构:
类人型模型:root一般在脊椎尾椎骨
四足动物是另一套模型

游戏中存储的实际是关节数据(joint),两个关节间形成一个骨骼(bone)

root骨骼一般定义在两脚中间。用来表达模型的位置,计算位移,高度、

Bind animation
连接两个骨骼模型间的绑定点。人骑马,人开车等。不是简单点的两个模型绑定点位置设成一样。而是整个坐标系一个attach到另一个

做出来的骨骼模型:初始是一个Bind Pose
动画有9个自由度:平移,旋转,缩放

二维空间旋转矩阵
在这里插入图片描述
欧拉角
在这里插入图片描述
欧拉角需要严格顺序依赖
万向节

四元数
在这里插入图片描述
在这里插入图片描述
四元数还是别纠结原理,直接用吧

求局部坐标。相对绑定模型坐标的恒等式
在这里插入图片描述
矩阵的逆通常会直接在关节存下来

受两个关节影响的坐标插值计算,需要将两个关节局部坐标转换为模型坐标,再计算权重插值
在这里插入图片描述

平移和缩放通常用线性插值就能解决
在这里插入图片描述
旋转的插值
在这里插入图片描述
旋转插值,通常会旋转最小角度。即大于180度的角会反向旋转

NLERP插值的问题是:旋转速度是两头快,中间慢

在这里插入图片描述
SLERP计算消耗更大,因为反三角函数的运算。以及旋转角较小时会不稳

通常旋转角较小时用NIERP,较大时用SLERP

在这里插入图片描述

CLIP是会存储各个pose
寻找当前帧和下一帧
算出当前pose,根据插值算法
转化成model坐标

动画压缩
不变的track都抛弃
大多情况缩放不变,可以抛弃
平移只需存一个值,不用存整个时间轴
旋转则是在关键帧之间插值,当插值计算出来的值与实际值的误差大于一定范围时,把前一帧设为关键帧

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

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

相关文章

shell脚本——流编辑器“三剑客”之awk命令

shell脚本——流编辑器“三剑客”之awk命令 一、awk1、工作原理2、命令格式3、awk常见的内建变量(可直接用)4、按行输出文本5、按字段输出文本’:’6、通过管道、双引号调用shell命令 一、awk 1、工作原理 逐行读取文本,默认以空格或TAB键为…

射频放大器的原理和作用(射频放大器和功率放大器的区别)

射频放大器是一种电子电路,用于将输入信号增强到足够高的电平以驱动射频输出负载。其原理和作用如下: 射频放大器的工作原理是利用晶体管的三极管效应,将输入信号放大到足够的电平以驱动输出负载。在射频放大器中,输入信号经过输入…

深入理解 python 虚拟机:破解核心魔法——反序列化 pyc 文件

深入理解 python 虚拟机:破解核心魔法——反序列化 pyc 文件 在前面的文章当中我们详细的对于 pyc 文件的结构进行了分析,pyc 文件主要有下面的四个部分组成:魔术、 Bite Filed 、修改日期和 Code Object 组成。在前面的文章当中我们已经对前…

Android NDK: 使用Python生成下载地址

文章目录 1. 目的2. NDK下载链接3. 生成链接的 Python 脚本4. Bonus: 生成表格的 Python 脚本 1. 目的 Android NDK 的 github wiki 中给出了部分历史版本 NDK 的下载地址,有些版本的下载地址并没有在网页中给出。实际上这些下载地址很有规律。本文给出具体的链接&…

无人水面艇声呐装备现状与发展趋势(水声功率放大器)

无人水面艇声呐装备是目前海洋探测和水下情报收集的重要工具,其发展趋势受到了国防、军事、海洋资源勘探等领域的广泛关注。本文将介绍当前无人水面艇声呐装备的现状以及未来的发展趋势。 一、现状 无人水面艇声呐装备主要应用于水下物体的探测和测量,其…

NDK OpenGL仿抖音极快极慢录制特效视频

NDK​系列之OpenGL仿抖音极快极慢录制特效视频,本节主要是在上一节OpenGL代码架构上增加极快极慢等特效的视频录制功能。 实现效果: 实现逻辑: 在上一节的特效效果的基础上,使用MediaCodec和自定义EGL,将效果视频录制…

CountDownLatch与Binder连接池

CountDownLatch与Binder连接池 CountDownLatch 如果现在有一个题,有5个数,这时候我想让这5个数同时都乘2,然后算出结果后再算它们的平均数 这时候就可以用CountDownLatch import java.util.concurrent.CountDownLatch; public class Example {public static void main(Stri…

总结853

学习目标: 月目标:5月(张宇强化前10讲,背诵15篇短文,熟词僻义300词基础词) 周目标:张宇强化前3讲并完成相应的习题并记录,英语背3篇文章并回诵 每日必复习(5分钟&#…

leetcode(力扣)刷题笔记(c++)【下】

文章预览: 单调栈739. 每日温度496.下一个更大元素 I503. 下一个更大元素 II42. 接雨水84.柱状图中最大的矩形 额外题目1365.有多少小于当前数字的数字941. 有效的山脉数组1207. 独一无二的出现次数189. 轮转数组724. 寻找数组的中心下标922. 按奇偶排序数组 II 后续…

软考高级架构师笔记-3数据库

目录 1. 前言 & 更新2. 数据库基本概念3. E-R图与二维表4. 约束、范式5. 数据库新技术1. 前言 & 更新 前文回顾: 软考高级架构师笔记-1计算机硬件软考高级架构师笔记-2计算机软件(操作系统)本章考情: 数据库章节都会考3-5分左右,第二版教材上对应2.3.3和6,主要考…

软考A计划-真题-分类精讲汇总-第十四章(数据流图)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

Python每日一练(20230517) 最大连续1的个数 I\II\III

目录 1. 最大连续1的个数 I Max Consecutive Ones 🌟 2. 最大连续1的个数 II Max Consecutive Ones 🌟🌟 3. 最大连续1的个数 III Max Consecutive Ones 🌟🌟 🌟 每日一练刷题专栏 🌟 G…

RabbitMQ养成记 (5. MQ的topics模式)

主题模式 Topic类型的Exchange与Direct相比,都是可以根据RoutingKey把消息路由到不同的队列。只不过Topic类型Exchange可以让队列在绑定Routing key 的时候使用通配符! Routingkey 一般都是有一个或多个单词组成,多个单词之间以”.”分割&a…

【夜莺(Flashcat)V6监控】2.夜莺告警相关: 多服务器多业务配置

介绍 本章侧重点是应用,根据大家不同业务、服务器部署众多等等;根据不同团队,不同业务进行划分;方便不同的团队负责自己职责内的工作; 比如我们场景如下: 三块业务:人工智能、医药、团购&…

分层强化学习 学习笔记

分层强化学习代码汇总 0.综述 《The Promise of Hierarchical Reinforcement Learning》分层强化学习的前景 强化学习 强化学习问题的设置: 有两个主角:一个代理和一个环境。环境是代理所生活和交互的地方。在每一次交互中,代理都能看到世…

深度解析:5G与未来天线技术 5G通信到底需要什么样的天线?

过去二十年,我们见证了移动通信从1G到4G LTE的转变。在这期间,通信的关键技术在发生变化,处理的信息量成倍增长。而天线,是实现这一跨越式提升不可或缺的组件。 按照业界的定义,天线是一种变换器,它把传输…

一图看懂 et_xmlfile 模块:一个用于创建大型XML文件的低内存库,资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 et_xmlfile 模块:一个用于创建大型XML文件的低内存库,资料整理笔记(大全) 🧊摘要🧊解释&#x1f9ca…

网络进阶学习:子网掩码及VLAN划分

网络进阶学习:子网掩码及VLAN划分 什么是子网?什么是子网掩码?什么是VLAN子网掩码和VLAN的关系小结 什么是子网? ⭐子网是将一个大的IP地址段划分成若干个小的IP地址段的网络。子网可以帮助网络管理员更好地管理网络,…

reids学习--redis常用命令

字符串string操作命令 Redis中字符串类型常用命令: 操作描述set key value设置指定key的值get key获取指定key的值setex key seconds value设置指定key的值,并将key的过期时间设为seconds秒(可用于验证码登录)setnx key value只有在key不存在时设置key…

玩转SAM语义分割之(2)显示特定的图片

文章目录 1. 使用matplotlib显示出完整彩色的掩码,并将其保存下来 2. 使用matplotlib显示出单张掩码,只保存面积大于一个阈值的掩码图片3. 对一整个文件夹中的图片进行处理,只保存面积大于一定阈值的掩码图片4. 查看特定坐标点处是否有mask掩…