UE4 将3D模型映射到UI
背景
UI中有时候会需要显示一些3D样式的东西,而且往往还不是静止的,需要响应世界变化,显示不同角度,这个时候就需要有一个方法将3D的模型映射到UI上面。
实现
新建一个actor改名3DWidgetAcotor
给actor添加mesh组件,我这里选择了一个SkeletaMesh,然后配置了一个男性骨骼。
然后这里添加了一个 SceneCaptureComponent2D,这里关键的一步是要修改RenserTarget.
新建一个RenderTarget,改下名字,我改成了My3DWidgetRenderTarget
可以通过调整size X/Y的值修改图像的清晰度,当然也会有不同的消耗,然后group最好改成UI,这个和打包有关系,对程序运行没有太大关系。
然后我们再修改上面的SceneCaptureComponent2D的RenderTarget,把Primitive Render Mode 修改为Use ShowOnly List,在Event Graph中编辑事件,把自己添加到白名单中,这里的clear不使用也是可以的。
通过调整相机的位置,改变显示图像的大小。下面是我的相机和人的相对位置和显示的图片的最终效果图,可以通过反复操作:修改相机位置->编译->查看My3DWidgetRenderTarget显示的预览图来调整相机。(这一步最好在调整白名单之前完成。)
创建材质3DWidgetRenderMat将材质类型改为UserInterface,mode改为masked。
给球场添加贴图,选择前面生成的My3DWidgetRenderTarget,并将A通道进行如下修改。
新建一个widget蓝图取名Show3DWidgetWidget,在里面添加以一张图片,大小设置500*500
然后在关卡蓝图中添加Show3DWidgetWidget,在界面中显示出来。
将3DWidgetAcotor拖拽到场景中,尽量是看不到的地方,运行你的程序,就会在界面上看到带3D模型的界面了。这里如果你不拖拽其实可以显示界面,这个时候实际上程序会给你生成一个,也不知道会放哪里的actor,所以最好是自己拖拽一个,防止随机actor出现在不该出现的位置。特别如果你想让actor出现在指定地方,那就更加需要拖拽出来了。
这之后你还可以旋转,移动等操作actor,显示的界面就会改变。这里面有意思的联动是如果你把thirdperson里面可以移动的操作的对象这样绑定,那UI就可以显示人物的实时状态,相应的显示在很多地方都有可以使用的,希望对大家有帮助,反正对我是帮助不小,这里mark一下,好记性不如烂笔头啊。
在第三人称上添加相机并设置,其他的和上面一样就可以在界面上看到运动的角色显示在界面上了。