基于UE5制作直面屏幕的折幕步骤——以四折幕为例

思路:以四折幕举例,在人视点用相机分别对四折幕的各个屏幕方向进行画面抓取,将抓取到的画面以贴图的方式贴回屏幕上,则在人视点来看,四折幕的透视就说正确的。

一、准备工作

1、四折幕基础信息

1.png

2.png

(1)屏幕尺寸

宽15040mm,深4480mm,高2560mm,离地+225mm;

观众视点距离正幕5980mm,屏幕边沿1500mm,高1700mm;

(2)P1.839 LED四折幕

正幕:15040*2560mm,分辨率 8178*1392,2路4K;

左屏:4480*2560mm,分辨率 2436*1392,1路4K;

右屏:4480*2560mm,分辨率 2436*1392,1路4K;

地幕:15040*4480mm,分辨率 8178*2436,4路4K。

(3)观众视点

距离正幕5980mm,屏幕边沿1500mm,高1700mm;

2、根据折幕信息在3DSMAX中制作屏幕模型

3.png

3、在人视点位置分别架设面向屏幕的相机

(1)需要注意,最好将观众视点的相机放置于场景原点方便后续计算。

(2)最好使用自由相机,相机应该垂直于所摄屏幕。

4.png

4、以人视点对称复制屏幕(如计算力强,可以省略此步骤)

这一步是为了后续方便计算相机的fov

5.png

5、MAXSCRIPT脚本

此脚本是用来设置相机的fov,让相机能够精准的包住屏幕。

rollout FOV "设置相机视野匹配屏幕" width:270 height:80 (
    
    button 'btn1' "设置Fov" pos:[125,7] width:110 height:60 align:#left tooltip:"点击此按钮以根据输入的全宽和轴距值来设置所选相机的视野角度"
    
    spinner 'spn1' "全宽" pos:[19,13] width:78 height:16 align:#left tooltip:"输入相机所摄的屏幕横向长度"
    
    spinner 'spn2' "轴距" pos:[19,44] width:78 height:16  align:#left tooltip:"输入相机到所摄屏幕的距离"
  
    on btn1 pressed do 
    (
        -- 处理自由相机
        for obj in selection do 
        (
            if classOf obj == Freecamera then 
            (
                obj.fov = 2 * (atan(spn1.value / 2 / spn2.value))
                obj.baseObject.targetDistance = spn2.value
            )
        )

        -- 处理物理相机
        for obj in selection do 
        (
            if classOf obj == Physical then 
            (
                obj.fov = 2 * (atan(spn1.value / 2 / spn2.value))
        obj.targeted = off
                obj.target_distance  = spn2.value
            )
        )
    )
)

createdialog FOV

二、具体步骤

步骤:逐个屏幕设置相机fov

1、首先是正幕

第一步,在渲染设置中设置分辨率为8178*1392。

6.png

第二步,将上述‘设置相机视野匹配屏幕’脚本拖入屏幕场景中,调用脚本。

7.png

脚本解释

全宽:指相机所对屏幕的完整宽度。(例如相机所摄的正屏宽度为15.04m,则填入15.04) 轴距:指相机到屏幕的距离。(例如相机到正屏的距离为5.98m,则填入5.98) 设置Fov:选择面对正屏的相机,设置好全宽和轴距后点击此按钮,相机会自动设置匹配屏幕的Fov。

如果参数设置正确,则相机视口辅助线应该正好相交于屏幕四个角点,

8.png

2、同理设置其他相机,计算出完整分辨率,设置好FOV即可。

这里需要注意,左右屏幕及地面屏幕要在人视点垂直于屏幕设置FOV,所以需要计算出完整的相机所摄范围及分辨率。

分辨率计算公式:分辨率=屏幕长/屏幕P级

例如:地面一边长15.04m,另一边长为(人视点*2)即(5.98*2=11.96m),分辨率则为(15040/1.839≈8178)(11960/1.839≈6503),即分辨率是8178*6503

9.png

10.png

3、导出datasmith

11.png

4、导入UE5中

12.png

(1)在内容浏览器中创建一个渲染目标纹理,命名为F_TEX(注:向前看的屏幕的纹理贴图,即示例中蓝色屏幕)

13.png

打开渲染目标纹理,将尺寸X、尺寸Y改为3DSMAX中前屏幕的分辨率,点击保存。(注:示例中前屏幕分辨率为8178*1392)(可能会出现警告提示,一般点是)

14.png

(2)在内容浏览器中创建一个蓝图,选择actor,命名为F_CAM(即向前看的相机蓝图)。

15.png

16.png

打开F_CAM,添加场景捕获组件 2D,

17.png

在UE5中,选择视口中的相机,在细节中找到视场,将3DSMAX中相应的FOV复制到视场中。在细节中找到纹理目标,选择上面创建的纹理目标。点击编译,点击保存。

18.png

19.png

(3)在内容浏览器中创建一个材质,命名为F_MAT。

20.png

打开材质,将渲染目标纹理连接到基础颜色上,高光度、粗糙度改为0,点击保存。

21.png

将F_CAM蓝图拖入场景中,将场景中向前看的相机的位置信息即旋转信息复制粘贴到F_CAM蓝图上。

22.png

对齐蓝图和相机后,在渲染目标中则可以看到相机所拍摄的内容,可以通过偏移蓝图来确定前屏幕是否被全部包住。

23.png

(4)按照上述操作,可以将其他几个相机依次调整到位。

(5)给场景中放置几个模型来进行测试。

24.png

5、展平屏幕uv

在3DSMAX中,给屏幕和对称的屏幕一起给一个BOX的UV。

25.png

复制一个屏幕及相机出来,将屏幕按上述uv拆开、展平。

26.png

同样的进行相机匹配。

27.png

6、UE5中赋予材质并渲染

将这一模型导出到UE5中,将四个屏幕的材质球赋予模型对应的面,材质上就会有蓝图抓取的画面。

28.png

选择导出的相机,渲染出来。

29.png

7、3DSMAX中进行屏幕还原

将贴图贴回做好uv的模型上,重新折回原始屏幕的状态,将人视点相机同步过来(注意,不是步骤二、5中的相机,是原始的人视点的相机)。

30.png

切换相机视口,检查透视是否正确。

31.png

三、其他注意事项

至此,UE5中折幕的相机做法完成,需要注意以下几点内容。

(1)折幕的交界处仍然回有细微白色接缝,几个像素,可后期裁剪掉。

(2)折幕的各个屏幕渲染出来可能存在一点点的颜色偏差,但是考虑到直屏折幕本身的转折及屏幕素质,理论上现实中不易察觉。

(3)由于第二点的问题,导致这个方法无法在曲面异形幕上使用。

评论