基于Unity 3D技术的摄影灯光虚拟实验设计与开发

2019-05-25 06:54杨丽波庞岚
微型电脑应用 2019年5期
关键词:视图纹理摄像机

杨丽波, 庞岚

(东北石油大学 计算机与信息技术学院, 大庆 163318)

0 引言

目前国内外对虚拟实验的探索进入了蓬勃发展阶段,国外关于影视方面的虚拟实验较多,比如德国的elixxier公司开发的set.a.light 3D STUDIO三维模拟影室布光效果软件在点击快门键之后,会自动把你的拍摄效果变成照片显示出来,此时的照片就是你为人像布光的最后效果,效果比较好,但市场场景全在室内,没有自然光的环境,另外不能对摄像机的结构进行认识熟悉,只是观看拍摄效果,因此具有一定的不足。国内的影视虚拟实验系统相对较少,北京邮电大学的开放式网上虚拟实验室是与润尼尔公司合作的一个虚拟实验室平台,其中涵盖了摄影技术虚拟实验教学系统和摄像技术虚拟实验教学系统,通过虚拟教学传授摄影以及摄像知识,但只有本校的学生才能使用,或者需购买才可使用。虚拟演播室的应用与普及也为学习摄影技术与灯光布置提供了平台,2001年浙江传媒学院成为国内最早将虚拟演播室用于实验教学的高校。就播音专业学生来说,现在可以根据自身条件和要求自主挑选背景,场景切换方便,不受真实条件的约束,这种实验方式很受师生欢迎。但是投资较高,另外在室外场景方面和摄像机基本构造方面的培训有所欠缺[1]。由于虚拟实验技术的特征,它在物理与化学等学科中的应用较多,缺乏对影视多媒体等领域的开发。

基于此设计开发出一套影视虚拟实验,使用该虚拟实验后,学习者能掌握摄像机的基本使用和基本拍摄方法,掌握三点布光方法,大大提高了教学的水平和质量,学生在课下也可以使用该虚拟实验系统进行反复练习操作,该虚拟实验创新点在于涵盖摄影及灯光两方面的操作,包含语音讲解使学习者身临其境,强化学习者的记忆。

1 系统设计思路与开发框架

通过查阅资料和教材,对摄像机以及灯光布置的知识进行深入了解,结合乌美娜的教学设计理论。首先进行学习分析,分析学习者的当前水平和预期的要达到的水平,以消除这种差距。其次分析学习内容和学习者,分析学习内容的类别,确定学习者的初始能力和学习风格。然后对学习目标进行分析,实验目标通过课程目标与单元目标相结合来确定[2]。结合“影视节目编导与制作”实验指导书对实验内容进行设计,对实验需要实现的功能进行分析。鉴于实验的可实现性,将选择4个操作性实验进行设计开发,分别是摄像机的使用、镜头的取景与构图练习、运动镜头的拍摄和灯光的布置。如图1所示。

图1 系统开发总体框架

根据虚拟实验的特点以及教学设计的原则,系统首先进入登录界面,登录后进入主界面,主界面分为实验操作模块(标题栏、导航栏)与帮助模块,在导航栏选定将要进行操作的实验。利用创建的三维模型,通过虚拟环境中人机交互技术实现用户与虚拟环境的自然交互,包括三维设备的名称显示、文字提示、三维模型的动作响应等,能够在虚拟环境中完成摄影、灯光实验系统操作训练。

2 关键技术

2.1 3D建模及简模的技术

(1) 3D建模技术

3DS max是目前主流的三维场景制作工具。在建立模型的过程中,为了后期交互功能的实现,将具有交互行为的模型例如变焦键、摄像机镜头盖以及三脚架底座拆分成各个小部件进行单独建模。另外要注意模型的尺寸匹配,要设置一个统一的单位标准以便后期不会有太多修改和偏差。最后要设置命名规范方便,后期查找使用。利用3DS max技术进行模型开发,包括摄像机模型、灯具模型、人物模型以及背景等模型,其中主要采用几何建模的方法。建立三维模型的过程包括:建立模型、赋予材质和贴图、光照和渲染[3]。

与室内设计等专业的需求不同,该虚拟实验需要的摄像机以及灯具对于精细程度要求不是特别高,但是也要有一定的逼真度。该实验创建的摄像机模型主要是进行交互功能的制作,因此这就要求在制作模型的过程中,对摄像机、三角架和灯具等模型的零部件需要单独创建,不能将其制造成一个整体。摄像机包括镜头、机身、显示屏、取景器、按钮和底座等。灯的模型包括灯罩,灯座和光源(即灯体)。

将模型建立完毕就可以进行拼接,使得形状与真实物体相同。模型创建完成后,赋予材质和纹理以达到逼真的效果。通过展UV调整贴图的坐标位置,利用材质编辑器将每个部件都附上所需材质,模型的纹理贴图获得的方法是拍摄真实物体表面纹理,将拍摄得到的图片经过PS软件处理得到[4]。

(2) 针对该虚拟实验简模的技术

合适的分段数:创建模型往往是在立方体或者圆柱体等基本立方体的基础上进行塑造,也就是要有一个全局的思想,在建模之前观察后期是否需塑造更复杂的模型,再给一个合适的各个方向上的分段数,另外多边形建模也方便材质和贴图的添加。

单位设置:为了避免操作数据过大,后期操作费时,场景的尺寸需与真实情况一致,否则会导致文件编辑的时候,数据量过大。一旦将固定的单位设置好,最好不要轻易更改,也为了方便后期模型的制作,否则还需要调节比例。

减少场景复杂度:在场景模型制作时,单个物体的面数不要太大,因为该虚拟实验的目的不是为了实现室内设计那样的效果,而是为了是学生掌握设定的知识点,就像摄影虚拟实验里的校园模型不需要做得太精细,只要能使学生学会摄像机推拉摇移以及景别的操作方法即可。单个物体面数要控制到10 000个面以下[5]。

进行合理布面:在建立模型时,不可见的面应该删除甚至不建模,主要是为了提高贴图的利用率,减少整个场景的面的数量,以提高交互场景的运行速度[6]。如贴着地面物体的底部和桌子内部等。因此在三维建模的时候切记,该减少的面数就减少,不要因为担心实现的效果不好,因为该部位使用者是观看不到的,因此不影响使用体验。

简模的应用:用于虚拟实验中的大部分模型特别是远处的模型,不可能做得十分精细,甚至大多数相对不重要的模型要使用简模,比如远处看房子的时候,不需要将房子外部的砖块都做出来,只需要一个加了房子外部图片的面片代替即可,贴图能很好地实现简模效果,房子内部的结构也完全没有必要展现出来。但是一些需要用到的物体模型例如摄像机与灯具模型则要细致的展现出来以便交互使用。

2.2 渲染纹理(Render Texture)技术

在Unity3D中有一种特别的纹理种类,叫做Render Texture也就是渲染纹理,它是一种特殊的纹理类型在运行时产生和更新。你首先要创建一个新的渲染纹理并且要指定一个你所需要的或者是特定的场景的一些渲染结果渲染到一个三维屏幕上,这个三维屏幕可以被继续使用。例如,汽车的后视镜上可以贴一个渲染器,该渲染器可以在此视角下由摄像机渲染。该方法就是在assets中创建一个Render Texture并将其附加到相机以便进行此操作相机的实时渲染结果就都在这个要现实的区域物体上了[7]。

(1) 创建渲染纹理

右键单击资源文件夹中的任意位置,然后选择Create>New Render Texture,就新建了一个Render Texture,命名为Camera Texture。

选择Camera Texture纹理,并在“属性”面板中将其大小设置为512x512。尺寸决定了其分辨率,以及将要从相机视图中保存的PNG图像的分辨率,如图2所示。

(2) 从Render Texture创建材质

使用刚创建的相机纹理创建一个新材质:右键单击资源文件夹中的任意位置,选择Create>Material,命名为SecurityFootage。选中这个Material并将其着色器属性更改为Mobile/Diffuse。

将SecurityCameraTexture拖放到材质的纹理属性上,此时,我们创建了一个可以将SecurityCameraTexture纹理显示到任何对象表面的材质,如图3所示。

图2 创建一个渲染纹理并设置渲染纹理的大小

(3) 监控相机

向场景中添加一个新的相机(Main Menu>GameObject>Camera),重命名新相机为SecurityCamera。

把SecurityCameraTexture拖拽到SecrityCamera的Target Texture字段上。这会使相机视图显示渲染的纹理,而不是显示在屏幕上,选择相机后,你可以看到一个小的预览窗口,可以在其中看到场景窗口。

选择相机后,其视图会在预览窗口中显示场景视图。 把相机移动到可以看到目标对象的地方。 此时需要确保相机位于3D空间场景的前方,以便可以看到场景中的所有对象。 当相机预览窗口可以看到所有对象(不包括LCD屏幕)时,执行下一步。

(4) 创建LCD屏幕

在场景中创建一个平面(Main Menu > GameObject > 3D Object > Plane)。重命名平面为Screen。旋转平面使其

图3 创建新材质

面向相机。修改Screen使其适合摄像机的屏幕。

拖拽SecurityFootage 到Screen的材质的Element 0属性,使用之前创建的SecurityFootage作为平面的材质至此,材质此时已关联到液晶显示屏,材质将显示监控摄像机所看到的内容。此时,甚至不需要运行场景即可查看LCD屏幕上显示的目标对象。

基本步骤是首先创建一个渲染纹理,创建一个摄像头以在渲染纹理上绘制它所看到的内容,创建一个材质来显示渲染纹理,最后创建一个屏幕显示材质。就像真正的监控摄像机一样,我们捕捉视图并通过录像设备将其发送到屏幕。

(5) 变焦功能

另外通过使用C#语言添加了变焦功能,点击W和T按钮实现变焦,代码如下:

public Camera shexiangtou;

private float jiaoju;

private bool anniuadd=false;

public GameObject buttom;

public AudioSource mada;

private float x=-6.0f;

private float y=6.0f;

public bool isW;

void Update () {

if (Input.GetKeyDown(KeyCode.Escape))

Application.Quit();

//判断是W还是T;

if (anniuadd) {

mada.Play();

if (isW) {

shexiangtou.GetComponent ().fieldOfView -= 0.06f;

buttom.transform.localEulerAngles = new Vector3 (x, -90, 0);

if (x == -6.0f) {

x = -6.0f;

}

} else

{

shexiangtou.GetComponent ().fieldOfView+=0.06f;

buttom.transform.localEulerAngles = new Vector3(y,-90,0);

if (y == 6.0f) {

y = 6.0f;

}

}

}

//镜头变焦限制

if (shexiangtou.GetComponent ().fieldOfView <= 3.0f) {

shexiangtou.GetComponent ().fieldOfView = 3.0f;

}

if (shexiangtou.GetComponent ().fieldOfView >= 90.0f) {

shexiangtou.GetComponent ().fieldOfView = 90.0f;

}

}

void OnMouseDown(){

anniuadd = true;

}

void OnMouseUp(){

anniuadd = false;

buttom.transform.localEulerAngles = new Vector3(0,-90,0);

mada.Pause();

}

}

具体实现效果如图4所示。

图4 摄像机纹理映射到屏幕上

3 总结

本文通过使用3D max技术以及Unity3D实现的《影视节目编导与制作》虚拟实验系统具有较强的仿真性与反复性,很好地实现人机交互,通过在高校实际教学中的使用情况来看,学生对该虚拟实验具有较强积极性,有一定的兴趣,极好地调动了学习积极性,并弥补实验器材不足的缺陷,可反复练习。但在交互功能人性化上还需要改进,以便利于学生能更好地的使用。

猜你喜欢
视图纹理摄像机
基于BM3D的复杂纹理区域图像去噪
肺纹理增多是病吗?
视图
TEXTURE ON TEXTURE质地上的纹理
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
新安讯士Q6155-E PTZ摄像机
安讯士新AXIS M31网络摄像机
Django 框架中通用类视图的用法
消除凹凸纹理有妙招!