自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 学习UE4动画蓝图:使用“布娃娃”系统制作死亡效果

目标“布娃娃”(ragdoll)指让角色骨骼随物理驱动而非动画师制作的动画序列。很常见的一个使用场合是:角色受到了致命伤害而失去知觉,于是身体的各个骨骼便由物理来模拟驱动。本篇的目标就是使用此系统让角色达成死亡的动作效果。我的工程上接《学习UE4动画蓝图:使用Socket(插槽)》,但是直接使用引擎的第三人称模板创建一个新工程是最快看到效果的办法(只需要2分钟)。在学习过程中主要参考的是《基于物理的动画 | Unreal Engine Documentation》1. 角色蓝图的逻辑打开角色蓝图

2020-06-27 16:59:47 13133

原创 学习UE4动画蓝图:使用Socket(插槽)

目标在上一篇《学习UE4动画蓝图:使用AimOffset(瞄准偏移)》中,角色已经可以瞄准,这一篇的目标是使用骨骼的 Socket(插槽) 功能让角色可以手持一把枪。0. 资源准备我从下面的资源包中找到了想要的枪模型:我先把它添加到了其他的工程中,随后右键其中一把枪的StaticMesh资源,选择迁移,路径选择我的测试工程的Content目录,这将连带着材质和贴图一起导过去。1. 在骨骼资源中添加插槽“插槽”是骨骼资源中的数据,因此要打开骨骼资源进行编辑:选择插槽的目标,右键“添加插槽”:

2020-06-27 14:41:46 9290 2

原创 学习UE4动画蓝图:使用AimOffset(瞄准偏移)

目标目标是在上一篇博客《学习UE4动画蓝图:创建一个射击姿势并使用》的基础上,让射击姿势可以瞄准朝向相机的方向。学习过程中主要参考了《创建瞄准偏移 | Unreal Engine Documentation》。1. 创建9方向的单帧动画序列我之前的一个误区是:瞄准偏移由静态(指单帧)的姿势混合,但是当我试图将姿势拖入新建的瞄准偏移时发现被提示是个无效的资源类型:也就是说,瞄准偏移是由动态(指多帧)的动画序列混合而成的,其本身也可以是动态的。这样看来它和2维的混合空间就类似了,只不过区别在于它要求

2020-06-27 11:40:25 6508 2

原创 学习UE4动画蓝图:创建一个射击姿势并使用

目标本篇的目标是从一个包含射击的动画序列中创建一个射击姿势,并让角色可以随时切换成“射击姿势”。我的工程上接《使用UE4动画混合空间实现侧向和后退移动》,不过理论上只要达成《学习UE4官方第三人称模板中的内容》中的工程就可以实现本篇的功能。0. 资源准备我从下面的资源包中得到想要的资源:我先添加它到其他工程中,随后导出下面动画到fbx:Aim_Space_Ironsights然后导入到我的工程中。它包含了朝各个方向射击的动画:1. 创建姿势资源打开Aim_Space_Ironsights

2020-06-26 23:09:44 3410 2

原创 使用UE4动画混合空间实现侧向和后退移动

目标在之前的博客《学习UE4官方第三人称模板中的内容》里,角色已经可以移动和跳跃了。不过,角色的朝向是总是面对移动方向的,而我想尝试让角色朝向面对相机的方向,即角色应该可以“侧向”和“后退”移动。解决的基本思路是使用混合空间,使用朝向这个变量来混合四个方向的移动动画。下面是实践:0. 准备资源首先,我从这个资源包里找到了想要的资源:(值得一提的是,这个资源包中实现了一个很高级的角色控制逻辑,非常值得学习!)我导出了其中如下资源到fbx:ALS_N_Run_B 后退移动ALS_N_Run_

2020-06-26 16:08:24 5359

原创 使用UE4动画蒙太奇实现分层动画

目标在之前的博客《学习UE4官方第三人称模板中的内容》中,角色已经可以移动和跳跃了。这一篇将会在之前的基础上,增加一个“拳击”动作,而且想要在移动与跳跃的同时做“拳击”动作,即“分层动画”。学习过程中我参考了《使用分层动画 | Unreal Engine Documentation》。首先,想讨论两个话题:谈动画混合动画序列由动画师产出。然而在实际运行中,角色需要做的动作并非和动画序列中一模一样,而是基于一些动画序列的“混合”。这里的“混合”包含两种意思:基于一个权重值,来平滑过渡多个动画。例如

2020-06-24 00:22:21 7754 5

原创 为代码中的类继承关系生成Mermaid图2:筛选出特定类相关的类

问题在上一篇博客《为代码中的类继承关系生成Mermaid图》中,功能已经完成,但是结果上会有问题:有时候,得到的继承关系会太多,而我只想关注和某一个类有关的继承关系。例如,对UE4源代码的\Engine\Source\Runtime\CoreUObject\Public\UObject执行的结果如下:UObjectUFieldUStructUScriptStructUFunctionUDelegateFunctionUSparseDelegateFunctionUEnumUClassUDynam

2020-06-22 23:08:41 703

原创 学习UE4官方第三人称模板中的内容

目标当创建新的项目时,可以选择第三人称模板。其中自带了一个人物的骨骼模型以及控制它的逻辑。其中还有教程链接。本篇的目标是,从教程中学习,在新的空白的工程中建立起一个有相同功能的可控制角色。0.美术资源准备:骨骼模型以及动画由于这个教程的时间是2014年,其中用到的资源似乎已经失效了。因此我决定从现有的第三人称模板中导出需要的资源:需要导出的UAsset有:1)1个骨骼模型:会得到SK_Mannequin.FBX,使用blender打开会发现其中是一个带绑定的骨骼模型:2)7个动画序列

2020-06-21 21:56:54 2686

原创 观察UE4编辑器里控制台命令调用逻辑

问题当 “输出日志” 的 Cmd栏 中可以输入运行一些命令。我发现,似乎其中很多命令是图形界面所不能完成的。我想调查下这些命令是如何调用的,因为有时会想知道命令执行的具体逻辑。调查1.使用“控件反射器”来协助调查打开“控件反射器”:观察cmd输出栏,在其父层级可以找到SOutputLog.cpp,根据名字可以知道这就是cmd栏控件的代码,点击进去。从名字可以猜到OnTextCommitted表示文本提交时调用的函数。随后断点显示确实如此:接下来可以按一般的思路调试到自己想要的部分

2020-06-17 23:00:23 1477

原创 为代码中的类继承关系生成Mermaid图

想法我一直认为,将代码中的内容以图形化的方式表示出来有助于理解。对于我来说,类之间的继承关系和模块之间的依赖关系是我比较关心的内容。不过,当项目中的代码很多时,手动为感兴趣的内容画图将会消耗很多时间,我觉得需要自动化的工具生成图形。生成图形方面,可以借助 mermaid 的力量(而且CSDN博客也支持其基本的功能)。这样,剩下的问题就是如何获得信息了。这篇博客,讨论的是如何获得代码中的类继承关系。理论方法我的思路代码成功缺陷之处...

2020-06-14 22:42:42 1708

原创 学习__declspec关键字

之前见到过用__declspec(dllimport)来修饰类或者变量的代码,不过具体其含义我并不能说清。而现在我想要查阅些资料来学习一下。在《__declspec | 微软官方文档》中有对__declspec进行解释:The extended attribute syntax for specifying storage-class information uses the __declspec keyword, which specifies that an instance of a given

2020-06-13 23:20:56 1593

原创 观看UE4官方的Slate控件展览馆(WidgetGallery)

看一下,他是在ToolkitWidget中void FTestWidgetGalleryEdModeToolkit::Init(const TSharedPtr<IToolkitHost>& InitToolkitHost){ ... SAssignNew(ToolkitWidget, SBorder) ...拷贝,然后去掉路径:SUserWidgetTest.cpp:#include "SUserWidgetTest.h"SWidgetGallery.cpp#.

2020-06-10 23:55:50 773 2

原创 【UE4源代码观察】观察DerivedDataBackendInterface各个子类的关系

前言在《【UE4源代码观察】观察DDC(DerivedDataCache)》中FDerivedDataBackendInterface的接口/** * Interface for cache server backends. * The entire API should be callable from any thread (except the singleton can be assumed to be called at least once before concurrent ac

2020-06-09 23:57:13 814

原创 C++判断基类指针具体指向的子类

查资料后发现了两种方法可以实现:dynamic_casttypeid不过效果上有差别,下面开始做实验来验证,并且观察差别。实践首先,创建一个基类和一些继承它的子类。并且加入一个虚函数并在子类中返回不同的值:class ClassA { public: virtual int testFunc() { return 1; } };class ClassB : public ClassA { public: virtual int testFunc() override { return 2;

2020-06-08 23:08:21 8723 3

原创 观察DNF的伤害计算公式

DNF的伤害计算在之前的博客《观察LOL的数值系统》中,我粗略观察了LOL的数值系统,虽然有很多不确定的地方,但是其中关于伤害计算公式我还是比较确信的。LOL的伤害计算公式牵扯到了不少方面的数值,但是和DNF伤害计算比起来,LOL的伤害计算简直可以评价为“优雅”。DNF伤害计算的研究难度,相比LOL要困难很多,有以下几个原因:伤害值不是固定的,而是有一定范围浮动整个系统牵扯到的数值很多,而他们的结算优先级也需要考虑等级“等级”这一概念在很多游戏中都有出现。等级提升会让角色更强,造成更高的伤害

2020-06-06 00:11:07 8849 4

原创 《设计模式:可复用面向对象软件的基础》读书笔记(4)

这篇博客记录了书中《第4章:结构型模式》里的要点。介绍结构型模式涉及如何组合类和对象以获得更大的结构。结构型类模式采用继承机制来组合接口或实现。一个简单的例子就是采用多重继承方法将两个以上的类组合成一个类。结构型对象模式不是对接口和实现进行组合,而是描述了如何对一些对象进行组合。因为可以在运行时改变对象组合关系,所以相比前者有更大的灵活性。Adapter(适配器)意图Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。想要解决的问题例如:自己在写一个图形编辑器时

2020-06-04 22:33:59 307

原创 整理C++宏定义的语法

1.宏#define AAA 5使用:cout << AAA<<endl;输出:52.参数的宏#define BBB(x) (x+5)使用:cout << BBB(3)<<endl;输出:83.多参数宏使用...表示参数输入,随后使用##__VA_ARGS__得到参数。定义一个宏,将参数全填到func函数中。#define CCC(...) func(##__VA_ARGS__)使用:int func(int a

2020-06-03 00:05:45 1380 1

原创 【UE4源代码观察】观察Lightmass一次Build的流程

本篇目标当使用者在UE4的编辑器内点下了Build按钮,一系列Build命令被触发,而“光照”则是其中重要的一环。我希望粗略的了解一下这其中背后的流程,随后我发现这个过程和 Swarm、Lightmass 这两个概念有关。具体来讲,这个过程包括的部分有:UnrealEd...

2020-06-01 23:57:24 2858 3

GetHRESULTMessage(WindowsSDK10.0.19041.0).txt

将HRESULT转变为字符串。 生成的方式见博客 https://blog.csdn.net/u013412391/article/details/108861088

2020-09-30

空空如也

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

TA关注的人

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