思路:以四折幕举例,在人视点用相机分别对四折幕的各个屏幕方向进行画面抓取,将抓取到的画面以贴图的方式贴回屏幕上,则在人视点来看,四折幕的透视就说正确的。
一、准备工作
1、四折幕基础信息
(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、在人视点位置分别架设面向屏幕的相机
(1)需要注意,最好将观众视点的相机放置于场景原点方便后续计算。
(2)最好使用自由相机,相机应该垂直于所摄屏幕。
4、以人视点对称复制屏幕(如计算力强,可以省略此步骤)
这一步是为了后续方便计算相机的fov
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。
第二步,将上述‘设置相机视野匹配屏幕’脚本拖入屏幕场景中,调用脚本。
脚本解释
全宽:指相机所对屏幕的完整宽度。(例如相机所摄的正屏宽度为15.04m,则填入15.04) 轴距:指相机到屏幕的距离。(例如相机到正屏的距离为5.98m,则填入5.98) 设置Fov:选择面对正屏的相机,设置好全宽和轴距后点击此按钮,相机会自动设置匹配屏幕的Fov。
如果参数设置正确,则相机视口辅助线应该正好相交于屏幕四个角点,
2、同理设置其他相机,计算出完整分辨率,设置好FOV即可。
这里需要注意,左右屏幕及地面屏幕要在人视点垂直于屏幕设置FOV,所以需要计算出完整的相机所摄范围及分辨率。
分辨率计算公式:分辨率=屏幕长/屏幕P级
例如:地面一边长15.04m,另一边长为(人视点*2)即(5.98*2=11.96m),分辨率则为(15040/1.839≈8178)(11960/1.839≈6503),即分辨率是8178*6503
3、导出datasmith
4、导入UE5中
(1)在内容浏览器中创建一个渲染目标纹理,命名为F_TEX(注:向前看的屏幕的纹理贴图,即示例中蓝色屏幕)
打开渲染目标纹理,将尺寸X、尺寸Y改为3DSMAX中前屏幕的分辨率,点击保存。(注:示例中前屏幕分辨率为8178*1392)(可能会出现警告提示,一般点是)
(2)在内容浏览器中创建一个蓝图,选择actor,命名为F_CAM(即向前看的相机蓝图)。
打开F_CAM,添加场景捕获组件 2D,
在UE5中,选择视口中的相机,在细节中找到视场,将3DSMAX中相应的FOV复制到视场中。在细节中找到纹理目标,选择上面创建的纹理目标。点击编译,点击保存。
(3)在内容浏览器中创建一个材质,命名为F_MAT。
打开材质,将渲染目标纹理连接到基础颜色上,高光度、粗糙度改为0,点击保存。
将F_CAM蓝图拖入场景中,将场景中向前看的相机的位置信息即旋转信息复制粘贴到F_CAM蓝图上。
对齐蓝图和相机后,在渲染目标中则可以看到相机所拍摄的内容,可以通过偏移蓝图来确定前屏幕是否被全部包住。
(4)按照上述操作,可以将其他几个相机依次调整到位。
(5)给场景中放置几个模型来进行测试。
5、展平屏幕uv
在3DSMAX中,给屏幕和对称的屏幕一起给一个BOX的UV。
复制一个屏幕及相机出来,将屏幕按上述uv拆开、展平。
同样的进行相机匹配。
6、UE5中赋予材质并渲染
将这一模型导出到UE5中,将四个屏幕的材质球赋予模型对应的面,材质上就会有蓝图抓取的画面。
选择导出的相机,渲染出来。
7、3DSMAX中进行屏幕还原
将贴图贴回做好uv的模型上,重新折回原始屏幕的状态,将人视点相机同步过来(注意,不是步骤二、5中的相机,是原始的人视点的相机)。
切换相机视口,检查透视是否正确。
三、其他注意事项
至此,UE5中折幕的相机做法完成,需要注意以下几点内容。
(1)折幕的交界处仍然回有细微白色接缝,几个像素,可后期裁剪掉。
(2)折幕的各个屏幕渲染出来可能存在一点点的颜色偏差,但是考虑到直屏折幕本身的转折及屏幕素质,理论上现实中不易察觉。
(3)由于第二点的问题,导致这个方法无法在曲面异形幕上使用。
评论