自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [c++-FBXSDK-imgui]用于三渲二的法线处理工具

工具界面法线平滑法线平滑算法有许多,这里介绍最常见的两种方式。首先介绍下模型网格有两种类型(在fbxsdk中有api可以判断这两者)1.多边形网格存在由四个顶点构成面的polygon2.三角形网格所有polygon都是三角形。我们使用houdini的normal节点来表示两种算法结果。平等权重模式描边效果:虽然描边没有断开,但是偏移的方向偏移了角度权重模式描边效果:描边没有断开,偏移方向也正确。描边出现偏移的原因解释在计算A点的法线时,如果按照平等权重算法:.

2020-11-30 12:04:12 695

原创 [Houdini+ue4]基于wfc生成迷宫地图

分析:生成更加随机,更加美观,自动化程度高。可以上二楼,房屋多样化,楼梯生成良好。部分参数说明:房屋尺寸:一定程度上受提供的图片模版影响,如图提供的图片房屋占比较大,所以生成的房屋可控范围比较有限,当前选择4 5时更佳,如图尺寸为3时出现了细长的房屋,宽度为两单元格。345是否随机屋顶:0为不启用,1为启用,启用时,强制房屋类型将作为随机种子。房屋高度差:房屋地皮之间的地形差,对楼梯的生成有一定影响。阶梯挤出长度:可控阶梯的挤出长度。阶梯步长:阶梯的宽度。(会影响阶梯的数量。)..

2020-11-30 11:14:10 860

原创 [Houdini+UE4]程序化搭建带有天气的场景

雪雨普通程序化构建的场景(houdini+blender+sp+sd+ue4),所有模型都是自己制作的。Demo下载地址: https://pan.baidu.com/s/12zFLGpAKkHKGf2eATbNoGw 提取码: gmky**渲染思路:**在houdini中对顶端建筑进行顶点着色,根据法线值来确定哪些point(有插值过渡)或vertex(色块)需要着色。引擎中统一通过一个材质实例来控制所有物体的雪度和湿润度。...

2020-08-24 10:43:53 710

原创 OVRlipsync嘴型匹配技术在UE4的应用

OVRlipsync在UE4中的测试 官方文档:https://developer.oculus.com/documentation/unreal/audio-ovrlipsync-using-unreal/此插件可用于实时模拟嘴型,或模拟指定音频的嘴型。使用:使用建模软件制作几个基本口型的变形(MorphTarget)(unity里叫blendshapes)(blender里叫...

2020-07-15 10:12:40 4517 17

原创 个人美术相关作品

以下为个人美术向作品

2020-04-17 09:49:23 297

原创 [ue4]customNode实现高斯模糊

float t=0;float3 sumColor=float3(0,0,0);float weightSum=0;for(int i=-radius;i<radius;i++){ for(int j=-radius;j<radius;j++) { t=exp(-0.5 * pow(3.141 * (i/radius), 2))*exp(-0.5 * pow(3.141 * (j/radius), 2)); sumColor

2020-11-30 21:23:21 1295 1

原创 [ue4]customNode实现POM视差变换

视差遮蔽映射(Parallax Occlusion Mapping, POM)float3 V=cameraV;V=cameraV/-cameraV.z;float2 newUV=UV;float lasth=0;float2 stepV=V.xy/steps;[loop]for(int i=0;i<steps;i++){ newUV=newUV-stepV; float height=(Texture2DSample(heightMap,heightMapSampler,

2020-11-30 20:30:49 1003

原创 [UE4渲染]LightPass中加入ramp图

在之前就有人搞过在viewUniform里面传ramp图,链接如下:https://medium.com/@solaslin/learning-unreal-engine-4-adding-a-global-uniform-shader-parameter-2-aa0102822868光照组件中扩展的ramp图下面我将在DefferedLightUniform里面加入ramp图,这样做的好处是,ramp图可以逐光照,也就是每次光照计算,都有单独的ramp图。主要提供思路:如图是proxy和c

2020-11-30 12:41:53 1109 1

原创 [UE4]风格化渲染

本篇思路是基于后处理实现的。获取光照结果:由于diffuseColor*(光照计算)=最终颜色又得益于ue4是延迟渲染,mrt可以存储许多缓冲信息,故在后处理获取diffuseColor很简单。因此可以反推初光照计算结果。最终颜色/diffuseColor。增加菲尼尔在后处理获取法线图,即可进行菲尼尔计算。ramp光照结果和菲尼尔可以分别用张贴图进行映射,菲尼尔也可以使用step函数进行。描边,外粗里细外描边使用的是模版缓冲计算得来的描边,内描边则是常见的深度图边缘检测。为了使得仅..

2020-08-04 09:24:47 2741 2

原创 [UE4.25]渲染流程梳理

看了下网上的增加光照模型的教程,都是4.1x版本的,我在下载4.25源码后发现许多文件发生了改变,故自己摸索了4.25的渲染流程,和相关概念。

2020-08-04 09:02:42 788

原创 [UE4]“咋瓦鲁多!”

提供思路:1.屏幕空间构建遮罩2.sin计算遮罩值(因为ue4材质节点中的sin周期为1,故可以利用0,1之间的值来映射为完整的正弦曲线并且有良好过渡)3.扰动偏移,基于0-1之间的值,求x到指定某点的距离。基于以上思路还能实现许多变体:超声波攻击!...

2020-07-12 15:23:57 236

原创 [UE4]多层级色彩火焰描边

效果如上思路分享:1.火焰流动:使用流动图(可使用flowmapPainter制作),流动早报贴图的uv2.火焰内实外虚:使用菲尼尔效果叠加.3.火焰跳动:躁波流动采样,顶点动画。4.多层级色彩:纹理剪边(即:把原纹理乘上某个系数,在和原贴图做差,就能得到该纹理的剪边)+两层菲涅耳。5.定向跳动:由于火焰都是往上跳动的,所以我们把物体的空间法线点乘向量(0,0,1)就能得到一个-1到1的值,在球顶此值为正,球底为负,可以此做跳动的遮罩。...

2020-07-11 17:41:32 463 2

原创 [Unity]水面模拟

效果如图分享思路GrabPass+_CameraDepthTexture1.获取深度图2.使用ComputerScreenPos获取顶点的屏幕空间坐标srcPos(四维),分量xy/w分量得到正确的顶点屏幕坐标,用于采样深度图。3.使用srcPos的w分量和深度图做差,以此得到一个固定的插值。4.一方面模拟深度,另一方面需要模拟边缘水花,都是相同的思路。5.使用smoothStep...

2020-05-06 14:34:22 2025

原创 [Unity]基于深度缓冲实现扫描效果

如果想看视频的话,可以观看我在B站翻译的教程:BV1vt4y1U7HV实现扫描效果不可能对每个着色器都去增加一段shader代码来实现扫描效果,这是不合理的,不利于项目扩展。所以正确的做法是对于屏幕中看到的像素去做处理,也就是像后处理一样,把rendertexture进行处理后在渲染在屏幕上。获取深度缓冲在获取当前渲染的摄像机组件后,对其成员depthTextureMode 赋值就能获得...

2020-04-13 23:06:02 1710 1

原创 [unityshader]制作能量护盾以及简单互动

效果图这是在观看b站av70029953后总结的经验。因为csdn有图片大小限定,所以适当减去了点。图中效果为:能量护盾的收缩,以及与外界collider的碰撞交互效果。准备模型(BLENDER)使用Blender制作一个棱角球。点开插件面板添加一个tissue插件添加后,点击插件面板这个按钮就能得到这样的网格了重置uv网格由五边面和六边面构成,调整uv布局选中所...

2020-03-15 12:03:14 2185 1

原创 [unity]使用Unity粒子系统制作跑尘

效果如下要使用到一张自制的

2020-03-13 21:40:31 2179 1

原创 WaveSDK vivefocusplus UE4开发记录

这几天在做ue4项目,用惯了unity再用ue4真的不适应,各种吐槽,开发项目的大多时间都消耗在编译材质,打包,不过不得不说,Ue4的蓝图编程模式非常的好用,相信以后这种节点式的开发会成为主流,虽然个人作为程序员有点感觉自己之前学的白学了一样,但软件行业的发展确实是这样,越来越简单,就像以前估计游戏公司招人都是招聘有opengl,c++,图形开发经验的,现在大多招的都是unity,ue4,这也是种...

2020-03-11 11:17:03 698

原创 [unityshader]产生像素后处理效果

如图,注意(这个shader并不是放在人物身上而是放在一个面片上,透过这个面片去观察角色)后处理其实就是,使用Grabpass通道获取到当前屏幕图片,再把这张图片存入sampler2D贴图属性中。然后在shader中进行处理。像素化的的思路就是降低uv精度。把0.1 0.2 0.3 0.4的数据变成0.1 0.1 0.3 0.3这样的数据我们可以采用取整的思想来对精度进行降低,把原Uv的...

2020-03-01 13:32:38 864

原创 [UnityShader]使用shader产生全息投影的效果

结果图全息投影技术重点在于模型要产生不依赖与模型uv的纹理效果。计算顶点在屏幕中的位置是个不错的选择。使用ComputeScreenPos(i.vertex);函数可以获得顶点在屏幕中的坐标,以这个坐标来采样,产生的效果就相当于当前的屏幕盖了一张纹理图。同时,如果想要产生随视角变化的纹理,可以考虑使用模型在世界空间中的坐标的两个值来做uv坐标,这同样是脱离模型uv的。为了让效果更加生动,采...

2020-03-01 13:00:14 2955 1

原创 [UnityShader]多Pass处理透明度

在shader中想让物体出现透明的地方有两种思路。把物体的渲染队列设置为transparent,此时的物体将会在所有不透明物体之后渲染,从而保证正确的渲染结果。然后我们使用Blend指令来把原颜色缓冲区的颜色乘上当前物体的a通道值,来进行混合。使用Clip指令来对物体的像素进行裁剪。Blend指令每经过一个pass物体就会产生一个临时颜色缓冲区(假设当前为M,上一个颜色缓冲区为N)。...

2020-02-28 22:00:33 1928

原创 [Blender]个人学习记录

Blender学习1.27tab键 模式轮盘~视图轮盘shift+a 新建物体ctrl alt Q 打开四视图0 键 进入摄像机视角ctrl 3 平滑细分当前物体ctrl p 设置父子关系pagedown machintool插件面板g,s,r之后若想延轴操作,按x/y/z,延平面操作按shift +x/y/zalt+s/g/r各变换归零物体移动后可以使用ctrl+a来进行...

2020-02-18 18:48:17 875 2

原创 在Unity基于Json数据实现背包系统

实现效果假定我们已经从实现了json存为字典,并可以通过管理类获取实体的操作。若有疑问可参考我的另一篇文章:https://blog.csdn.net/qq_41083853/article/details/104369853了解RectTransform组件基础知识UI在CANVAS中有两种布局方式,两种方式显示的数值是不一样的可根据如图方式切换:绝对定位Posx,y,z就是指...

2020-02-18 12:01:08 932

原创 在unity中实现json数据的通用读写

使用LitJson插件LitJson使用只需要把ListJson.dll拖进Unity Assets文件夹中即可在代码中引用。我们先简单封装一下Litjson以便更方便于Unity使用。using System.Collections;using System.Collections.Generic;using UnityEngine;using LitJson;//引入插件usi...

2020-02-18 10:27:15 1522

原创 OpenglC++学习笔记

文章目录OpenGL学习19.10.13OpenGL环境配置OpengGL是什么?GLFW预编译文件和源代码文件GLFW配置CMAKEGLAD和GLEW创建一个窗口渲染循环glClearColor和glClear三角形图元(primitive)标准化设备坐标(Normalized Device Coordinates, NDC)10.15vs解决方案sln文件lib和头文件c++里的数组和size...

2020-02-17 20:57:45 2889

原创 Unity2D开发学习笔记(一)

void Update() { horizon = Input.GetAxisRaw("Horizontal"); if (Input.GetKeyDown(attack)) { isattack = true; } if (Input.GetKeyDown(shoot)) { isshoot = true; } if (...

2019-10-11 23:52:47 286

原创 Unity2D开发学习笔记(二)

获取输入先写一个playerInput2D类来获取玩家得输入,对于用户的输入可以分为两种类型的信号,一是持久性的信号例如移动等长按型的信号,还有种是像攻击,跳跃这种瞬间型的信号。public float horizon;//因为是2d游戏所以,通过这个浮点数的正负来决定角色的水平速度public bool isattack;//按了攻击 瞬间信号public bool isjump;//...

2019-10-11 23:47:25 392

空空如也

空空如也

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

TA关注的人

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