一年多前的东西,把全息的原理制作方法分享下,文件找不到了youtube上个应该能找到原来制作大佬的资源,但是他没有出教程,只出了个展示的视频.
以下是之前制作出的效果:
2,3D交互UI及全息效果视频_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
首先把动态地图分成4个部分
一,由模型边界线的mesh部分。
二,有动态采样部分,可以捕捉动态的模型单位比较大动态的boss之类的,但是这个部分不会有明显的外形.所以要添加mesh部分让它明显一些。
三,作为标尺的网格grid在max里简单创建一个。
四,作为罗盘的compass模型,需要在3D软件做制作好。
- mesh部分,是要直接放入游戏中显示,并且跟随player一起运动的,所以模型的面数不能太高,在3D人员在max中建模的时候,需要其对应3D场景高模另外建一套同比例大小的地面模型用于做动态地图的mesh部分.
这里我只是简单创建了一个场景模型,用于地图的mesh直接当高模场景使用.中间白色的部分是dynamic部分的模型,这个模型的高度必须要和所创建的场景高度一致,原应会在dynamic部分说明.
创建一个材质参数集以获得角色动态坐标,location和半径radius,radius是指地图的半径大小,打开的时候是慢慢放大的这个在后面材质里也回用到,后面会说明。
创建一个渲染目标MapDepth,另外创建一个叫动态场景捕捉DynamicSample的Actor对象,加载SceneCaptureComponent2D以获取动态的周围环境的深度图,把location设定为(0,0,45000)Rotate(0,-90,0)设置渲染目标为MapDepth,这样就能让capture在一定高度向下sample出地图的深度信息.
打开thirdpersonCharacterBP(后面都为TPBP),加载component Scene作为mesh场景的参考,后面加载staticMesh把作为map的低面模型加载进去并且我们需要缩小N倍拿来作为地图的场景mapmesh,.同样的把compass,grid还有动态场景捕捉sample挂进去,但是不作为Scene的子集.,还需要创建一个场景采样的Actor也作为TPBP的子集(后面会提到)如下图所示.
首先当角色发生移动的时候这个小场景也要相对于scene移动小N(这里地图模型相对于场景模型的倍数是0.095)倍,这样就能创建出像暗黑3那样的地图功能了.所以先获得角色的location,用breakVector和makeVector,negateVector(location没有方向)设定Z=0来使地图一直在我们脚下,不会因为大幅度跳跃产生采样的动态全息地图和mesh网格地图错开的情况。用eventTick来获得location的每帧调用以设置动态材质参数集的location。最后用setWorldLocation来设置DynamicSample的坐标让Z等于0.这样在角色跳跃或者下落的时候,不会因为capture移动了而使DepthMap采样范围发生变化。
在蓝图中创建两个boolean值MapTransitioning,和MapOpe