/images/avatar.png

Papalqi

UE4材质制作UV贴图

我们想要制作一张uv贴图,是一个什么意思呢?我们知道一般来说,我们都是根据uv来采样贴图,一般来说这个事情都是美术同学来制作的,所以我们想要进行的是在UE4中,动态或者根据自己的实际情况来生成一张贴图,并且我们要存储的内容也可以自己定。你可以自己生成法线贴图,或者是世界坐标的贴图,等等,并不拘泥于只存储颜色信息。 那么,我们如何进行相关的操作呢。 渲染目标 首先我们要做的就是生成一张RT,也就是renderTarget, 在内容浏览器中,我们进行创建,这里我们要创建两个RT。创建后,打开它们并将分辨率设置为所需的分辨率。一个大概的尺寸是1024x1024。你可以随便给它们起个名字,但我建议给它们起个名字:rt_scenecapture然后rt_expanded以避免以后混淆。 展开材质 制作一个新材质,并将其设置为“Unlit ”和“Two Sided”(防止任何光照贴图UV都被镜像,这将导致它们在展开时背面不清晰)。然后将这些节点插入到材质的世界位置偏移输入中。“Size”将是您设置的Scene Capture actor的Orthographic width。在本例中,我们将使用之前文章提到的BoundingBox0-1UV连接到自发光上。这很有用,因为它可以用于在光线跟踪或光子映射时检查材质中的光线位置。 The Actor Blueprint 接下来我们将制作一个新的蓝图Actor并添加一个“场景捕捉组件2d”组件。 选择组件并将“投影类型”(Projection Type)设置为“正交”(Orthographic)并将“正交宽度”(Ortho Width)设置为1000,以匹配“UV展开大小”(UV Unwrap Size)1000。将纹理目标设置为我们在第一步中创建的rt_scenecapture。同时将位置设置为0,0,500,并将旋转设置为-90,-90,0。这是为了从自顶向下的视图匹配UV展开的方向。最后,将“Capture Every Frame”设置为false,以防止它无缘无故地连续捕捉。 接下来,将“静态网格”组件添加到蓝图中,并将其所有设置保留为默认值。然后添加一个新变量,使其成为“静态网格”类型并使其可编辑(变量右侧的这个小眼球按钮)。 现在转到蓝图的构造脚本,放置一个“set static mesh”节点,该节点将静态网格组件设置为使用您创建的“static mesh”变量。接下来,添加一个“Set Material”节点并指定前面提到的展开材质。具有多个材质元素的静态网格可以使用“get num materials”-1作为最后一个索引的forloop将展开材质指定给所有元素。 现在我们只需要在事件图中添加一些蓝图节点。首先,我们放置一个“自定义事件”并将其命名为“Dilate”。在这次活动中,我们只做了两件事。首先我们告诉场景捕捉来捕捉图像。然后我们调用“Draw Material to Render Target”函数。我们将膨胀材质用作材质,将第二个渲染目标rt_expand用作指定的渲染目标。 一旦将此数据写入渲染目标,通常可以使用实际的渲染目标执行所需的任何操作,因为位置贴图在HDR形式下最有效。如果要创建扩张纹理的静态纹理,可以在内容浏览器中的渲染目标上单击鼠标右键,然后选择“创建静态纹理”:

UE4 编译系统

UE4 编译 UE4的游戏代码工程,从工程的属性可以得知,Build/Clean/Rebuild都是依赖于UBT(Build.bat、Clean.bat和Rebuild.bat)。生成sln文件也依赖于UBT。 1 2 3 4 5 6 # Build Engine\Build\BatchFiles\Build.bat # ReBuild Engine\Build\BatchFiles\Rebuild.bat # Clean Engine\Build\BatchFiles\Clean.bat Generate 这里面的所有配置其实都是我们调用Generate的时候自动为我们添加进去的,我们需要首先看我们Generate 的时候会发生什么,之后是分析这些脚本主要是做了什么。 Generate Visual Studio project files 我们Generate的时候,依旧是调用UE4的脚本GenerateProjectFiles.bat。 1 2 3 4 5 call "%~dp0GetMSBuildPath.bat" call "%~dp0FixDependencyFiles.bat" call "%~dp0FindPlatformExtensionSources.bat" ..\Binaries\DotNET\UnrealBuildTool.exe -ProjectFiles %* GetMSBuildPath.bat:首先我们查看系统中是否存在MSBuild。MSBuild全称(Microsoft Build Engine),是用于构建应用程序的平台。在使用VS做开发,那么一定时时刻刻在使用它。因为是它在背后为你管理生成你的项目文件。当新建一个项目时,注意下项目文件夹中的*.*proj文件就是为MSBuild提供的,这是个文本文件,基于XML格式,里面包含有项目所包含的文件,生成配置,输出配置等信息。 FixDependencyFiles.bat:检测编辑器使用的Icon。 md ..\Intermediate\Build >nul 2>nul将对应目录清空 Intermediate文件主要初始化了一些马上要用的空文件夹,和在/Build/BuileRules文件夹下的UBT扫描模块时生成的地址(.txt),动态库(.dll),pdb(调试信息文件);还在ProjectFiles文件夹中生成了一些UE4和项目的工程配置文件。 dir /s /b Programs\UnrealBuildTool\*.

Shader曲线总结

Impulse 曲线 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #ifdef GL_ES precision mediump float; #endif uniform vec2 u_resolution; uniform vec2 u_mouse; uniform float u_time; // Function from Iñigo Quiles // www.iquilezles.org/www/articles/functions/functions.htm float impulse( float k, float x ){ float h = k*x; return h*exp(1.