ol xyz 加载天地图_UE4 全息地图制作流程

本文介绍了如何在UE4中创建全息地图,包括加载天地图、动态地图的四个部分(模型边界、动态采样、网格和罗盘)的制作。通过蓝图和材质技术实现地图的打开、关闭、缩放,以及角色移动时地图的动态跟随。文章详细讲解了渲染目标、场景捕捉、材质参数和摄像机调整等关键步骤,并展示了最终的全息地图效果。
摘要由CSDN通过智能技术生成

一年多前的东西,把全息的原理制作方法分享下,文件找不到了youtube上个应该能找到原来制作大佬的资源,但是他没有出教程,只出了个展示的视频.

以下是之前制作出的效果:

2,3D交互UI及全息效果视频_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

2d9d491adf18d7902595dead5c79d2a1.png


首先把动态地图分成4个部分
一,由模型边界线的mesh部分。
二,有动态采样部分,可以捕捉动态的模型单位比较大动态的boss之类的,但是这个部分不会有明显的外形.所以要添加mesh部分让它明显一些。
三,作为标尺的网格grid在max里简单创建一个。
四,作为罗盘的compass模型,需要在3D软件做制作好。

  1. mesh部分,是要直接放入游戏中显示,并且跟随player一起运动的,所以模型的面数不能太高,在3D人员在max中建模的时候,需要其对应3D场景高模另外建一套同比例大小的地面模型用于做动态地图的mesh部分.

77865c5ec389112f4abee7a89e81ec7d.png


这里我只是简单创建了一个场景模型,用于地图的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的子集(后面会提到)如下图所示.

7283071e2e11775f7ff8607479016550.png

f6c310f08ceda0f85497aa5ec3da97a2.png


首先当角色发生移动的时候这个小场景也要相对于scene移动小N(这里地图模型相对于场景模型的倍数是0.095)倍,这样就能创建出像暗黑3那样的地图功能了.所以先获得角色的location,用breakVector和makeVector,negateVector(location没有方向)设定Z=0来使地图一直在我们脚下,不会因为大幅度跳跃产生采样的动态全息地图和mesh网格地图错开的情况。用eventTick来获得location的每帧调用以设置动态材质参数集的location。最后用setWorldLocation来设置DynamicSample的坐标让Z等于0.这样在角色跳跃或者下落的时候,不会因为capture移动了而使DepthMap采样范围发生变化。

733d2d363308e745d287e505029e0e5d.png


在蓝图中创建两个boolean值MapTransitioning,和MapOpe

你好,要使用OpenLayers 3加载地图和GeoServer发布的地图,可以按照以下步骤进行: 1. 引入OpenLayers库和CSS文件 ```html <link rel="stylesheet" href="https://openlayers.org/en/v3.20.1/css/ol.css" type="text/css"> <script src="https://openlayers.org/en/v3.20.1/build/ol.js"></script> ``` 2. 创建地图容器和视图 ```html <div id="map" class="map"></div> <script> var map = new ol.Map({ target: 'map', view: new ol.View({ center: [0, 0], zoom: 2 }) }); </script> ``` 3. 加载地图 地图是由国家测绘局提供的在线地图服务,可以通过以下URL加载: ```javascript var tdtUrl = 'http://{1-4}.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z}'; var tdtLayer = new ol.layer.Tile({ source: new ol.source.XYZ({ url: tdtUrl }) }); map.addLayer(tdtLayer); ``` 其中,`{1-4}`表示使用1到4个子域名来加载地图,`vec_w`表示加载基础矢量地图,可以根据需要修改。 4. 加载GeoServer发布的地图 GeoServer是一个开源的地理信息系统服务器,可以发布各种类型的地图服务。要加载GeoServer发布的地图,可以使用以下代码: ```javascript var geoserverUrl = 'http://localhost:8080/geoserver/wms'; var layers = new ol.layer.Tile({ source: new ol.source.TileWMS({ url: geoserverUrl, params: {'LAYERS': 'workspace:layername'}, serverType: 'geoserver' }) }); map.addLayer(layers); ``` 其中,`workspace`表示工作区名称,`layername`表示图层名称,可以根据需要修改。 以上就是使用OpenLayers 3在线加载地图和GeoServer发布的地图的基本步骤。需要注意的是,地图和GeoServer发布的地图都需要在网络环境下才能加载成功。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值