游戏开发; 虚幻4
魁梧的抠脚大汉
游戏开发小青年
展开
-
UnrealEngine Character Jump Twice
Unreal的角色类已经封装好Jump函数了,只需要调用一下即可如果想要Jump两次,制作二连跳也非常简单,只需要在角色类里吧JumpMaxCount设置为2即可Enjoy it原创 2021-10-29 09:35:15 · 300 阅读 · 0 评论 -
Compile the UE4 engine every time you start the project每次启动项目都要编译UE4引擎源码的解决方案
以前我也没遇到过这种问题,也挺郁闷的,我做了如下操作解决了这个问题。(1)更新引擎,把项目Cleanup干净,可以手动删除掉Binary下的文件然后再重新把引擎的原生文件revert回来。(2)调用Setup.bat一定把依赖项更新到最新。(3)gen一下项目重编译引擎即可。...原创 2021-01-05 19:36:38 · 1592 阅读 · 0 评论 -
虚幻4C++小轮子
一些常用的虚幻c++轮子的用法和总结,方便以后查找使用。这篇文章将是一个小例子集合。以供未来翻阅免得又搜索半天或者是自己造,为以后省一些功夫吧。 文件读写 FString拓展 TArray Sort排序 【1】文件读写头文件:#pragma once#include "CoreMinimal.h"#include "Kismet/BlueprintFunctionLibrary.h"#include "MyFileHelper...原创 2020-12-16 20:20:14 · 621 阅读 · 0 评论 -
虚幻4文件读写
头文件// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "Kismet/BlueprintFunctionLibrary.h"#include "MyFileHelper.generated.h"/** * */UCLASS()class NEWVERSION_API UMyFile原创 2020-12-11 21:45:24 · 656 阅读 · 1 评论 -
求余的图形化理解
不知道为什么我一直无法理解求余运算,我也不知道为什么,可能是小学数学太差的原因。之前一直纠结 5 % 4 为什么等于 1,直到有一天我在做模型UV的重新编排,重新思考了一下。现在计算 3 % 2等于多少所以 3 % 2 = 1现在有一个2X N的一个格子,三个球,把三个球从左往右从下到上填入盒子,最后一个球的X坐标就是求余的值现在计算 5 % 4 等于多少所以 5 % 4 = 1现在计算 7 % 4 等于多少,同理所以 7 % 4 = 3哎!丢脸之文章。.原创 2020-12-03 16:50:18 · 274 阅读 · 1 评论 -
虚幻通过程序跳转到资源在资源浏览器中的位置
按下按钮后,ContentBrower将自动跳转到资源所在位置Enjoy It原创 2018-09-17 20:57:52 · 645 阅读 · 0 评论 -
虚幻4渲染编程【第二卷:不用虚幻4Shader管线使用自己的shader】
先直接上效果:这个球的颜色是通过自己的shader实现的:下面就来一步一步实现使用自己的shader吧。首先我们先创建一个插件。插件其实相当于一个独立的模块,我不想再项目里做,当然再游戏模块里做也是没问题的。我们先把整个流程搞清楚了再去改引擎。首先创建个插件,名字取为ShadertestPlugin然后打开工程里的这个插件,在插件目录下加一个Shaders文件夹然后再在Shaders文件夹里加Pr...原创 2018-04-23 01:08:05 · 5014 阅读 · 3 评论 -
虚幻4渲染编程【第三卷:虚幻4渲染编程第二卷自定义global shader代码例子详细解释】
先给第二卷的传送门,这一节就是在解释第二卷的代码的。https://blog.csdn.net/qq_16756235/article/details/80045173虚幻4有一篇教你怎么写globalshader的文档,但是我看了一遍后,感觉还是没说核心原理,只是教你怎么复制粘贴。下面就用我们上一节的例子(约三百多行代码)来窥探一下虚幻的渲染流程。例子虽然只有300多行代码,但是麻雀虽小五脏俱全...原创 2018-04-23 10:08:52 · 4048 阅读 · 0 评论 -
我要搬家啦!!!
感觉这里写专栏看的人比较少,所以我的专栏文章会在知乎上写,平时在这里会写一些随笔我的知乎传送门:虚幻4渲染编程知乎专栏我的知乎专栏目录:https://zhuanlan.zhihu.com/p/36675543我的UnrealShaderToy专栏:https://zhuanlan.zhihu.com/c_188321773...原创 2018-05-12 19:14:00 · 3320 阅读 · 0 评论 -
虚幻4 渲染探索【2】通过CableComponent了解虚幻渲染管线在图源汇编阶段的全部细节
这是这个系列的第二卷也是最后一卷。第一卷的传送门在这里:虚幻4 渲染探索【1】引擎渲染组件初探 点击打开链接如果您对虚幻的渲染图元汇编阶段了解不多,那么可以先看看上面那篇文章。那么下面进入正题,我们以虚幻的CableComponent为例,来深入研究一下虚幻的渲染管线的图源汇编阶段。下面分几个小节(1)CableComponent的原理(2)CableComponent在虚幻里的实现步骤代码实现(...原创 2018-03-29 12:57:52 · 3082 阅读 · 1 评论 -
【材质编辑器全解第二卷】UnrealEngine4的材质编辑器中实现函数调用
虚幻4的CustomNode允许我们再材质编辑器里直接进行shader代码的编写(它的原理可以看我之前的文章)但是它有一个缺陷,那就是无法进行函数调用。下面我们就来实现一个可以进行函数调用的CustomNode。先看一下我的实现效果吧:第一个为主函数,后面的为我们自己定义的可调用函数。那么现在就来一步一步修改引擎,来做出我们这个自定义的Cutom节点吧。首先建两个文件Engine/Classes/...原创 2018-03-15 14:40:12 · 2946 阅读 · 0 评论 -
技术美术图形交流群
如果你对虚幻4底层图形感兴趣,欢迎加入技术美术图形交流群大家一起交流技术。加入前我希望你是:【1】对渲染管线图形学有一定了解。【2】对虚幻4或者unity有一定了解。至少两年经验。如果您是初学者,可能这里不太适合您。群号是:192946459...原创 2018-03-15 10:06:10 · 3963 阅读 · 0 评论 -
【材质编辑器全解第一卷】Unity,UnrealEngine4等各大引擎材质编辑器原理详解
现在是2018年,材质编辑器现在在各大引擎,3D软件都非常普遍。那么它们是如何工作的呢。 其本质是,一个可视化节点就包含一段HLSL或者cg或者OpenGL代码,通过我们的“连线”将HLSL代码拼接出来。最后会出一张shader文件。对于早期的Unity和大部分3D软件的节点化材质编辑器来说,它们的shader代码比较简单,总共shader代码加起来可能也不会超过2千行,对于这一类的...原创 2018-03-14 22:20:03 · 2757 阅读 · 0 评论 -
虚幻4修改引擎渲染管线解析【第一卷】通过添加自定义ShadingModle实现卡通着色来熟悉渲染管线
读过我前面一些博客的朋友对虚幻4的渲染流程有了一些大致的了解之后,那么我们现在可以开始着手开始修改虚幻4引擎了·。我们有些时候需要实现某些效果,就需要动手自己改引擎了。这是customnode或者是纯material无法做到的。有些人可能就要反驳了,“我纯用材质编辑器也能实现卡通材质啊”。但是无法忽略的一点是:在材质编辑器里制作的卡通材质无法接受光影。这时候有些人就想出了骚操作,用蓝图自己实现一个...原创 2018-02-14 12:53:01 · 11446 阅读 · 10 评论 -
从仿函数到std::function再到虚幻4 Delegate
这几天研究了一下虚幻4的delegate,但是想要理解这个,还得从仿函数说起。仿函数的定义是:A Functor is a object which acts like a function. Basically, a class which definesoperator().下面是一段代码例子:class MyFunctor{ public: int operator原创 2018-01-23 09:29:06 · 1797 阅读 · 1 评论 -
在VSCode中添加自定义文件配色,编写虚幻4shader
VSCode作为脚本编程的神器,我们可以尝试在VSCode里编写shader。不管是unityshaderlab还是虚幻4的shader都很方便。首先去官网下周VScode,下面给哥传送门 https://code.visualstudio.com/,然后在VSCode的插件拓展商店里搜索HLSL安装HLSL高亮插件(呃呃呃感觉上面的都是大家都知道的废话)下面我们开始调整VSC原创 2017-12-29 10:02:43 · 4212 阅读 · 0 评论 -
Material Capture制作玉石效果
最后的效果:非常节省的算法。下面记录一下Unity的写法,unity版本搞了很久没搞出来,结果最后发现是矩阵顺序乘错了(对unity还是不太熟啊),最后请教了CG-bull大佬,赶快记下小笔记,别忘了!Shader "Unlit/S_MaterialCapture"{ Properties { _MatCapTexure ("MaterialCaptureT...原创 2018-08-04 13:23:38 · 3184 阅读 · 0 评论 -
虚幻4把模型拖入场景后,模型是怎么被渲染出来的流程分析
在我们把模型拖入虚幻4的视口后场景编辑器会调用RendererScene的AddPrimitive函数然后在这个函数种会调用Scene->AddPrimitiveSceneInfo_RenderThread(RHICmdList, PrimitiveSceneInfo);然后会调用FPrimitiveSceneInfo的AddToScene然后会调用Primi...原创 2018-08-14 17:07:15 · 5228 阅读 · 1 评论 -
Unreal Engine4 使用c++创建贴图
一般我们将贴图资源导入引擎的时候,引擎会自己抽取贴图文件的数据然后创建一个UTexture的Object合一个Uasset。但是有时候我们想自己写工具的话需要自己实现这套创建机制。可以在引擎的UTextureFactory找到我们导入引擎时的逻辑代码。可以看到不同的图片格式,不同的像素深度创建的像素格式合贴图格式都不一样。要使用代码创建贴图资源我们第一部是先指定一个创建贴图的地方...原创 2019-02-16 18:03:11 · 2732 阅读 · 1 评论 -
虚幻4 源码版LightMass Build Failed
最近用源码版引擎烘焙光照,发现不管怎么设置都会出Swarm failed to Kick off的报错,所以查阅了下资料发现,引擎Build的时候不会帮我Build LightMass,所以需要重新用VS把LightMass在DevelopmentEditor模式下重新Build一下就好了 ...原创 2019-01-21 01:12:34 · 1594 阅读 · 0 评论 -
在虚幻4项目种建立多个模块
模块化编程有一定好处,是否给自己的项目分模块,具体还是看个人怎么设计。虚幻4使用多模块,可以加快编译速度,减少耦合。UE种我们需要创建模块分两种,一种是项目模块,一种是插件模块。一:【项目模块】当我们创建一个项目后,可以在source下看到如下三个文件项目里只有一个模块如果想新建一个模块,我们需要:【1】新建一个模块的文件夹【2】新建对应模块的.Build.cs...原创 2018-11-27 08:44:39 · 1403 阅读 · 1 评论 -
虚幻4程序动态创建package资源并且导出资源
直接上代码吧。void UTestShaderBlueprintLibrary::ExportTexture(UTexture2D* TextureToBeExpot){ //TextureToBeExpot->CompressionSettings = TextureCompressionSettings::TC_VectorDisplacementmap; //Textur...原创 2018-10-10 22:05:12 · 4288 阅读 · 0 评论 -
虚幻4资源批量导出
我们自己写点程序就可以了先写个UI然后加个按钮,按钮来调用下面这个函数。然后调用下面这个接口即可原创 2018-10-10 21:59:02 · 3756 阅读 · 0 评论 -
虚幻4的Shader宏
虚幻4的shader宏简直丧心病狂,上图感受一下如何正确理解它们是怎么嵌套的呢,下面我敲了个极短的控制台示例#include <iostream>#include <string>using namespace std;class Shader{public: void ShowShader() { cout << shader...原创 2018-10-19 15:02:01 · 1279 阅读 · 0 评论 -
虚幻4 DynamicTexture Write Array data to Texture2D
在游戏运行时将数组数据写入Texture中。我的环境是4.19使用下面的代码就可以直接把数组写入Texture2D然后显示出来了效果如下:Runtime的时候就动态写数据到Texture2D里了,需要注意的是,执行只后,对应的Texture资源是无法还原的了,永久被修改掉了Enjoy It对于渲染线程,使用Lock和Unlock也能轻松读写Texture的数据...原创 2018-09-22 16:17:43 · 1265 阅读 · 0 评论 -
虚幻4批量加载资源,加载指定目录或指定类的资源
虚幻4加载大批资源的方式有几个ObjectLibray和AssetRegistry。下面的代码直接粘贴进代码,包含好头文件就能起效(引擎版本4.19)https://docs.unrealengine.com/en-us/Programming/Assets/Registry FAssetRegistryModule& AssetRegistryModule = FMod...原创 2018-09-15 15:43:12 · 3450 阅读 · 1 评论 -
UnityShader 模板
有时候写shader经常忘记unity的各种矩阵的名字。我这里记录了一下一个比较全的shader,unityshaderlab各种名字都齐全了。Shader "S_MyShaderTemplate"{ Properties { _BaseColorMap ("BaseColor", 2D) = "white" {} //_NormalMap ("Normal", 2D) = "...原创 2018-09-30 21:32:02 · 782 阅读 · 0 评论 -
为虚幻4配置vitual studio编辑器界面
工欲善其事必先利其器难道就没人觉得这个配置显示框太小了么,根本不知道后面是啥这么多配置万一弄错了咋办!在工具栏的这个空白位置右键打开Customize然后找到如下设置把宽度设置为200终于解决了长久以来的显示不全问题Enjoy it!!!...原创 2018-09-03 22:28:54 · 960 阅读 · 0 评论 -
打光小笔记
游戏里一般用3 point light来打光,分为三部分 full light,key light ,back light主光背光主反光副反光也可以把光源信息烘焙到SH里。补光的能量叠加总和不要超过主光最高亮部的能量的二分之一,上面就有个错误的效果主反光比较难调,下面是正确的主反光效果(请忽略粗糙度的不同):...原创 2018-08-28 20:27:35 · 633 阅读 · 0 评论 -
虚幻4及国内部分引擎的shader架构梳理,虚幻4材质研究。
以下纯属个人经验总结,如有错误,还请斧正。现在的引擎对材质的概念越来越重视。那么材质在传统的shader管线中到底扮演怎样的一个角色呢。下面是我的一个简单梳理:总的来说,材质就是shader管线参数的辅管理者,它管理了shader管线的各个资源——贴图采样器,常量缓冲区数据等等。它会为shader各个管线提供资源支持。当你完成一个材质之后编译。最后出来的其实还是shader代码原创 2017-12-28 11:02:43 · 6210 阅读 · 1 评论 -
神秘海域ToneMapping公式
这是神秘海域的公式:float3 ACESFilm( float3 x ){ floata = 2.51f; floatb = 0.03f; floatc = 2.43f; floatd = 0.59f; floate = 0.14f; returnsaturate((x*(a*x+b))/(x*(c*x+原创 2017-12-25 10:37:11 · 4041 阅读 · 1 评论 -
RenderTarget在虚幻4的应用【4】杂草模型UV重映射
(受网站上传大小限制的原因,gif质量较差还请见谅)雪地水面在RenderTarget在虚幻4的应用【3】里就可以达到,直接把RT应用在平面本身上就可以了。但是如果要做草地,必须要将这个RT里保存的路径信息给草才行。这时候就需要用UV重映射的方式把UV信息给草材质才行下面是UV重定向的逻辑,十分简单。那个除以1000是因为要把草的顶点位置重新重定向到UV空间,这个值要和平面缩放大小相关。但原创 2017-07-26 21:20:21 · 2504 阅读 · 0 评论 -
物理吊桥交互
这个效果就是个简单的物理约束应用,虽然原理非常简单但是达到了预期目标效果。没有什么可说的就是去研究一下physicsConstraintComponent就好了。不过这里需要注意一点的是【1】物理约束不能再构造函数中指认,如果想在c++类里写物理约束,请到beginplay里面去。【2】如果runtime更改了物理状态,constrain状态,需要重新向物理引擎更新状态,不然动态更新无效。原创 2017-08-10 20:18:09 · 527 阅读 · 0 评论 -
地形材质总结
我简单做了一下地形材质,我在这里混了12种不同的材质,才开始做,可能具体效果还需要调整。首先由于寄存器限制,一个材质里面最多使用16张不同的贴图,我们可以把信息集中化,比如专门拿一张贴图保存草,石头,泥土,沙子的高光或者光滑度什么的,分别把这些信息存在RGB几个通道里面。尽量复用,这样就可以给地形做很多个weight层。算法尽量节省干净,不然地形材质会无法显示。原创 2017-08-01 18:35:25 · 2251 阅读 · 0 评论 -
RenderTarget在虚幻4的应用【3】路径消褪
把前面两个技术拼凑起来就能出现路径消褪效果了http://blog.csdn.net/qq_16756235/article/details/75758177http://blog.csdn.net/qq_16756235/article/details/75947693离积雪脚印和草丛踩踏波动只差一步之遥了。原创 2017-07-24 12:31:14 · 1666 阅读 · 0 评论 -
虚幻4中的动画技术【1】资源准备和概念初探
一说到动画,可能很多朋友会觉得那是美术的事情,和程序没关系。其实恰恰相反。要做出效果比较好的角色动画,还真少不了程序。在这里我把角色动画制作过程中遇到的坑做一个总结。(注意,在资源制作之前一定要记得调好单位,比如骨骼的单位是cm,动画的单位是inch,会导致一系列bug,比如动画通知无法触发。在动画制作之前调好单位cm)首先先介绍一下角色动画:【资源导入】 第一步就是原创 2017-08-16 20:34:43 · 3750 阅读 · 0 评论 -
虚幻4开发小技巧
这篇帖子我会时常更新,把游戏开发过程中遇到的各种问题总结在这里代码部分:【1】想要HLSL编辑器识别虚幻的usf或者ush文件,需要在文本编辑器的文件拓展名里添加拓展名,这样usf文件里写的HLSL代码就能高亮了,而且还带查询功能哦。高亮后的效果:链接:https://github.com/tgjones/HlslTools下载链接:https://market原创 2017-08-08 16:41:14 · 1037 阅读 · 0 评论 -
次世代角色衣服的制作
现在的次世代角色衣服制作流程已经到达一个丧心病狂的程度了(毕竟衣服占整个人物的比重十分大,而且主角时刻都出现在玩家视野中)。所以在这里我想总结一下次世代角色的衣服制作流。首先还是像传统制作方式一样,在max或者maya里面做出人物身体的模型。如果按照传统的方式,在人物身体模型完成之后就会在max或maya里做衣服,在max或maya用clothing解算或者在zbrush里寄出雕刻。不过目前国原创 2017-08-08 10:03:35 · 3404 阅读 · 0 评论 -
RenderTarget在虚幻4的应用【2】双RT缓冲制作颜色恢复
想要制作雪地脚印被雪慢慢覆盖的效果,或者想要制作草地被踩后草慢慢复原的效果,除了需要实时绘制路径之外,还需要恢复效果。可以用曲线更新变量的方式,但是如果想使用RT制作上述效果的话,就只能使用RT双缓冲或多缓冲的方式来制作恢复效果了。http://blog.csdn.net/qq_16756235/article/details/75758177 实时绘制路径的帖子我点原创 2017-07-23 19:45:07 · 1441 阅读 · 0 评论 -
虚幻4环境交互【草地扰动】
很多游戏里都有玩家踏上草地后,草地会被扰动的效果,这个效果做好了会增强带入感,国外的很多3A大作都有这些效果。我在虚幻4内做了这个效果的第一版。 因为不是动态的图所以没法展示草被拨开然后慢慢自然波动回去,这里只有一个被拨开的图。首先要明确一点的是,这个效果是在顶点着色器内完成的,虚幻4内从材质向顶点着色器穿值的方式是使用world offset首先草原创 2017-07-18 10:11:56 · 5459 阅读 · 0 评论