自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(177)
  • 收藏
  • 关注

原创 动画系统里的临界阻尼与MotionModel

玩家的输入,怎么转换成人物模型的速度、转向速度、加速度等参数怎么理解Damping这个变量什么是阻尼、临界阻尼与过阻尼,什么是阻尼系数什么是惯性化插值如何根据带阻尼的弹簧运动模型,转换成对应的用于插值的Damper代码?如何理解Motion Matching代码里面Daniel Holden写的Damper函数。

2024-01-31 16:40:42 777

原创 UE5动画源码剖析

UpdateAnimation在GameThread完成,主要任务是计算当前帧动画相关的变量、收集动画Notifies、更新动画Curve等ParallelAnimationEvaluation顾名思义,是并行的动画计算,它主要会根据前面一个阶段计算得到的结果,真正的去修改Scene里骨骼的Transform,一般在工作线程内执行。不过也可以修改命令行参数。

2024-01-31 16:31:49 1054

原创 UE里的动画重定向(Retargeting)

参考:https://docs.unrealengine.com/4.27/en-US/AnimatingObjects/SkeletalMeshAnimation/AnimationRetargeting/参考:https://docs.unrealengine.com/4.27/en-US/AnimatingObjects/SkeletalMeshAnimation/AnimHowTo/Retargeting/参考:https://www.youtube.com/watch?v=FDbpHamn2e

2024-01-31 16:29:25 796

原创 UE 代码构建(BuildSystem)与源码编译相关

多的不说了,网上都有,主要是源码Attach到具体的项目的设置:

2024-01-31 14:10:16 1276

原创 UE里的反射(Reflections)机制

由于C++语言是不支持反射的,像UE这种引擎为了支持反射,就只能自己设计一套系统了,UE里这套系统叫做Unreal Header Tool (UHT),实现反射的核心思路也比较清晰明了,就是让用户在需要支持反射的类代码里加对应的宏,然后UHT在编译的时候会为其生成相关代码,比如要给一个变量加到反射系统里,就在它前面给它加一个UPROPERTY的宏(有点类似于C#里的给Property加Attribute)。

2024-01-31 14:07:29 1242

原创 Hazel引擎学习(十二)

现在的窗口其实只有Viewport,没有GameView窗口。为了完善Scene的相关功能,可以先来看看别的游戏引擎里的设计,Unity里会有SceneView和GameView两个窗口,一个负责绘制场景,一个负责代表GamePlay的实际窗口,而UE里的Viewport和GameView则共用一个窗口,按F8 eject可以切换SceneView和GameView。

2023-12-08 17:12:51 1279 2

原创 UE 简单插件制作

通过蓝图实现,创建Editor Widget蓝图(注意是Editor Widget资产,不是Widget Blueprint)通过C++创建Plugins实现第一种方式就不提了,它也不是个插件,这里研究的是使用C++创建Slate Editor Window来创建插件创建插件写一个简单的Widget类,加入到插件对应的Editor Window里,学习Slate C++的写法把这个Widget类变得复杂,让它可以绘制出所有动画资产。

2023-04-12 11:13:55 2206 3

原创 UE MotionTrajectory插件研究

对于过去的点,一直记录当前计算的模型位置即可,就是每帧存一下,没什么特殊的对于未来的点,按照当前的加速度上一个Sample点的速度,不断调用速度和位移的Update函数即可,注意这里假设的用户的Input是不变的,所以这里的加速度也是不变的(注意,角色的加速度仅仅是根据玩家的Input得到的)对于预测路径而言,应该都是这么个算法,我看Daniel Holden的文章里也是这么逻辑,

2023-03-24 21:14:16 779

原创 Hazel引擎学习(十一)

我自己维护引擎的github地址在这里,里面加了不少注释,有需要的可以看看参考视频链接在这里很高兴的是,引擎的开发终于慢慢开始往深了走了,前几章的引擎UI搭建着实是有点折磨人,根据课程,接下来的引擎开发路线是:不过由于我对某些章节比较感兴趣,所以实现模块的顺序可能跟Cherno课上的顺序略有不同之前在学Unity的时候,我就对这一块特别感兴趣,因为我在没有完全了解C#、Mono和C++之间的交互原理之前,去看Unity的源码是一件非常费劲的事情,所以把这几课的内容提前实现了。参考:Mono Embeddin

2023-03-22 13:49:57 1435

原创 Hands-on C++ Game Animation Programming阅读笔记(九)

Chapter 12: Blending between AnimationsThis fade is usually short—a quarter of a second or less. (动画之间的fade一般很快,0.5s甚至更短)本章重点:两个Pose的Blending不同Animations的CrossFading,会有一个cross fade controller来处理一个blend queueAdditive BlendingPose blending也没啥新东西,

2023-03-10 14:07:08 1097

原创 UE BlendSpace处理SyncMarker相关代码研究

参考:https://arrowinmyknee.com/2020/10/13/deep-dive-into-blendspace-in-ue4/主要是对UE的Sync相关的代码不太理解,然后BlendSpace在SyncMarker作用时出的Bug不太好查,所以写下了这篇文章。

2023-02-14 11:47:08 506

原创 UE里动画状态机节点权重研究

参考:https://forums.unrealengine.com/t/animbp-what-is-a-conduit-and-why-do-you-need-it/363568参考:https://docs.unrealengine.com/4.27/en-US/AnimatingObjects/SkeletalMeshAnimation/StateMachines/Overview/动画状态机节点里可以右键添加Conduit State,如下图所示,前面有个拉分支线的图标:Conduit翻译过来

2023-02-06 12:04:37 880

原创 UE的Blend Profile

这个概念是在UE4的动画系统里提出的feature,可以让我们设置每个Bone的blend speed。如果没有这玩意儿,正常动画Blend时,所有的Bone的Blend Speed都是相同的。这个功能可以有效解决movement动画之间的transition造成的滑步问题,同时保证上半身动画的流畅性。

2022-12-01 15:33:05 520

原创 Unity ECS记录

我之前写过文章Entity Component System与Entity Component介绍EC系统和ECS系统的区别,几年前的Unity和UE还都是用的EC框架,但这几年我看他们都开始往ECS架构调整了,Unity推出了DOTS系统,UE5里推出了Large Entities of Entities with Mass,ECS架构对内存和数据存储更友好一些,两个引擎都做出这个操作也是很合理的。

2022-10-12 14:34:12 1540

原创 Hazel引擎学习(十)

我自己维护引擎的github地址在这里,里面加了不少注释,有需要的可以看看参考视频链接在这里经过了漫长的过程,终于把无聊的UI部分结束了,接下来主要是搭建引擎的基础部分,包括:具体以下几点:Unity把场景存成了Yaml格式的文本文件,GameObject与Components之间的信息、以及每个Component在inspector上显示的内容,都会存在Scene文件里;而UE里的场景对应文件为格式,貌似并没有完全把场景存为文本文件,如下图所示:其实还可以用JSON来存储,但是这种格式在merge的时

2022-09-22 17:22:10 2005 5

原创 Unity新的Input System

新的Input系统并没有默认提供在Unity里,而是存在了对应的Package里,在。

2022-09-01 20:28:25 918

原创 decompose transformation matrix

参考:https://math.stackexchange.com/questions/237369/given-this-transformation-matrix-how-do-i-decompose-it-into-translation-rotati。

2022-08-22 15:41:45 847 1

原创 Hazel引擎学习(九)

我自己维护引擎的github地址在这里,里面加了不少注释,有需要的可以看看参考视频链接在这里Entity Component SystemEntity-Component-System (ECS) is a software architectural pattern mostly used on video game development for the storage of game world objects. An ECS follows the pattern of “entities

2022-08-08 17:58:41 2643

原创 std::bind与lambda表达式

bind-vs-lambda参考:bind-vs-lambda参考:why-use-stdbind-over-lambdas-in-c14参考:Lambdas vs. std::bind in C++11 and C++14背景介绍In C++98, such binding was accomplished via std::bind1st and std::bind2nd. TR1 added std::tr1::bind, which was promoted to std::bind

2022-07-19 19:15:54 1199

原创 C++ 使用typename来修复模板编译错误

在看Unreal Engine源码时,有一行代码我比较疑惑:下面是这些函数的定义:疑惑的点在于:因为在我之前的理解,typename是只能用于template的尖括号里的,所以写下这篇文章研究一下。参考: Why typename?先看个例子:想象的用法是,当T为MyRandomClass时,模板实例化为:然后,上面的模板直接编译会报错,报错位置为,报错信息为:Error信息很明确,这里的E,模板函数是认不出来的,因为它把E当成了变量,而不是Type。至于具体怎么改,警告其实已经告诉我了,改成

2022-07-14 14:49:25 901

原创 UE的 AimOffset

参考:https://docs.unrealengine.com/5.0/en-US/aim-offset-in-unreal-engine/参考:https://www.youtube.com/watch?v=LzDw9VhlWJs&t=441s&ab_channel=NiceShadow什么是Aim OffsetAn Aim Offset is a type of Blend Space that uses additive poses, typically for creati

2022-07-08 22:13:24 1074

翻译 Unity的APIUpdater

参考:https://docs.unity3d.com/Manual/APIUpdater.html参考:http://man.hubwiz.com/docset/Unity_3D.docset/Contents/Resources/Documents/docs.unity3d.com/Manual/APIUpdater.htmlUnity本身就是一个不断迭代和改进的软件,它的类、函数和API都可能会不断更改。当Unity进行大版本更新时,这些改变可能会带来breaking changes(毁灭性的改变)

2022-07-08 21:07:15 755

原创 UE动画节点 —— Blend Node

参考:https://docs.unrealengine.com/5.0/en-US/animation-blueprint-blend-nodes-in-unreal-engine/本文主要讲UE的AnimGraph的动画蓝图里,负责把多个动画blend到一起的Blend节点,如下图所示,Blend Node在动画蓝图里,节点标题颜色都是灰色的:BlendNode根据功能可以分为下面几类:Unreal的Blend Node是把多个Animation输出的Pose,Blend到一起。实际动画系统还有从Po

2022-07-08 21:05:00 2221

原创 Unity的[Obsolete]属性

参考:https://www.tutorialspoint.com/What-are-obsolete-attributes-in-Chash参考:https://docs.microsoft.com/en-us/dotnet/api/system.obsoleteattribute?view=net-6.0参考:https://stackoverflow.com/questions/31804260/do-unity-functions-that-are-obsolete-still-workC#自身

2022-07-07 12:09:11 2073

原创 UE里的Sync Groups

在Blend Space的源码里看到了这个东西,不太清楚是干啥的。参考链接:https://www.youtube.com/watch?v=lWRsPl_IX7c&ab_channel=MattCourtois看了下,Sync Group可以帮助更好的进行动画之间的过渡,它需要两步操作:mark your animations with sync markersmake sure your animations are synchronized using sync groups第一步

2022-07-04 21:48:42 930

原创 UE4入门(从Unity3D转学UE4)

UE4 项目文件介绍如下图所示,是我创建一个空白工程时生成的文件夹:因为创建了一个新的空工程,里面是不含C++代码的,如果在Content Browser里添加C++空类,项目结构会改变成下图所示,红色的区域是新增的内容:UE4里面的物体在Unity3D里叫GameObject,而在UE4里叫Actor或Pawn在Unity里,GameObject是所有在Hierarchy里面的物体,该类不可以被拓展和继承,而UE4里,Actor是一个C++基类,可以被拓展和继承,ComponentsUE

2022-05-03 17:05:24 3394 2

原创 Entity Component System与Entity Component

Entity Component与Entity Component System

2022-05-02 19:05:41 2008

原创 Hazel引擎学习(八)

我自己维护引擎的github地址在这里,里面加了不少注释,有需要的可以看看参考:https://www.youtube.com/watch?v=Yw7RpvmqvSE&list=PLlrATfBNZ98dC-V-N3m0Go4deliWHPFwT&index=65&t=120s&ab_channel=TheChernoTesting Hazel’s Performance这节课主要是对当前的Hazel游戏引擎进行性能测试,拿了网友的一个Demo进行测试,整体来说,性能

2022-04-18 15:19:06 3738 1

原创 Hazel引擎学习(七)

Making a GAME in ONE HOUR using MY ENGINE参考:https://www.youtube.com/watch?v=qITIvVV6BHk&ab_channel=TheCherno这个视频是看了看Unity里别人做类似Flappy Bird的视频,不过这里的Bird换成了Rocket,来看看用Hazel来实现对应的游戏,需要什么额外的功能:需要Particle System来代表火箭后面的喷射装置需要碰撞检测,判断Rocket是否撞到了墙上重力模拟一

2022-04-05 19:54:22 5306 2

原创 Hazel引擎学习(六)

# How to Build a 2D Renderer不管是3D还是2D的游戏引擎,都需要渲染2D的东西,因为一个游戏里是必须有UI的。## 渲染架构目前引擎里Render的代码是这样的:```cpp// 把Camera里的VP矩阵信息传到Renderer的SceneData里Hazel::Renderer::BeginScene(m_Camera);{ glm::mat4 scale = glm::scale(glm::mat4(1.0f), glm::vec3(0.1f));

2022-03-22 23:09:24 1169

原创 Unity的GraphView

参考链接:https://www.youtube.com/watch?v=7KHGH0fPL84&ab_channel=MertKirimgeriGraphView介绍Unity在2018.1开始加入了一个node system,它不需要在Unity里安装任何Package或者像XNode一样添加任何脚本,只需要使用Unity的default api即可。Unity里的Shader Graph,VFX Graph和Visual Scripting都是通过Graph View API实现的。相关

2022-03-03 14:30:17 10597 3

原创 Hazel引擎学习(五)

Render Flow And Submission背景在Hazel引擎学习(四),从无到有,绘制出了三角形,然后把相关的VerterBuffer、VertexArray、IndexBuffer进行了抽象化,也就是说目前Application里不会有具体的OpenGL这种平台相关的代码,不过还剩下一个DrawCall没有进行抽象化,也就是里面的glDrawElements函数。Begin Scene为了搭建一个Renderer,先要从Scene的环境搭建起,在Begin Scene阶段,会设置其周

2022-02-11 00:17:44 3251

原创 Gitlab因为push rules导致git push出错

参考:https://docs.gitlab.com/ee/push_rules/push_rules.html参考:https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks参考:https://www.atlassian.com/git/tutorials/git-hooks最近用Gitlab的时候push报错:remote: GitLab: Commit message does not follow the pattern '^(fix

2022-01-23 17:58:27 2929

原创 Unity的Reorderable List用法

关于ReorderableListUnity官方文档里完全没有提到ReorderableList类,这是因为它不在UnityEngine或UnityEditor的命名空间下,而是在UnityEditorInternal命名空间下,这个命名空间里的东西是没有官方文档支持的。ReorderableList的作用它的作用,是让一个数组,在Unity的Inspector界面上显示得更好一些。举个例子,如果我一个MonoBehaviour脚本,里面有个数组,两种写法都可:// 写法一// 注意Wave是

2021-12-29 14:19:18 7258 1

原创 Hands-on C++ Game Animation Programming阅读笔记(八)

Chapter 11: Optimizing the Animation Pipeline本章的优化的几个思路:用更好的方法来实现skinning更高效的Sample Animation Clips回顾生成matrix palette的方式具体分为以下几个内容:Skin matrix的预处理把skin pallete存到texture里更快的SamplingThe Pose palette generation探讨Pose::GetGlobalTransform函数Skin

2021-12-23 19:48:48 2496

原创 Hands-on C++ Game Animation Programming阅读笔记(七)

Chapter 10: Mesh SkinningDeforming a mesh to match an animated pose is called skinning.Mesh Skinning是基于Animation Pose,改变Mesh去匹配Pose的过程,可以通过Shader进行GPU Skinning,也可以用CPU进行C++这边的Skinning,我以前还写过一篇文章比较它俩的特点。本章重点:skinned mesh与non-skinned mesh的区别了解整个skinn

2021-12-08 20:28:01 915

原创 Unity的PreviewRenderUtility类

参考:https://answers.unity.com/questions/1332916/any-idea-how-to-use-previewrenderutility.html代码如下:namespace UnityEditor{ public class PreviewRenderUtility { public Camera m_Camera; // obsolete public float m_CameraFieldOfView;

2021-11-29 15:43:23 1781

原创 Hands-on C++ Game Animation Programming阅读笔记(六)

Chapter 9: Implementing Animation ClipsAn animation clip is a collection of the TransformTrack objects. An animation clip animates a collection of transformsover time and the collection of transforms that is animated is called a pose. Think of a pose as

2021-11-26 18:18:24 979

原创 Unity的PlayableGraph切换AnimationClipPlayable时关于RestPose的思考

问题是这样的,我有这么个简单的应用场景,一个PlayableGraph,只有一个output为AnimationPlayableOutput,然后直接连接一个AnimationClipPlayable。现在我的需求是,Editor下,使用脚本,把它的播放状态换成我一个新的Animation Clip。一开始我的代码是这么写的:public class Test : MonoBehaviour{ public AnimationClip clip; public AnimationCl

2021-11-26 11:48:35 3817 2

原创 Hands-on C++ Game Animation Programming阅读笔记(五)

Chapter 7: Exploring the glTF File FormatglTF is a standard format that can store both mesh and animation data. a file format that contains everything you need to display animated models. It’s a standard format that most three-dimensional content creatio

2021-11-21 22:57:53 1417

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除