第三章摄影机的设定每次打开先前所保存的*.cmo文件时,会发现虽然前先设置的参数都已生效,但是处于3DLayout视窗中场景的观察角度却不同。这是因为没有设置摄影机。在庫托车虚拟装配的实例中,摄影机的设定,不仅是确定进入场景时的观察位置,同时也要实现从不同的角度来观察摩托车主对象。不同观察视角制作一个作品前,要根据制作需求,设置好窗口的尺寸。因为设置窗口的尺寸不同,会影响到二维帧图片、按钮以及平面文字在空间的显示位置。点选视窗中的(普通参数选择)按钮或是按下ctrl+p快捷键,打开设置窗口。在设置窗口的方框中,设置的数值,在这里设定为800x600,其它参数保持系统默认。从而设定了摩托车虚拟装配实例文件执行时的场景大小为800x600像素。鼠标左键双击标签按钮,最大化3DLayout视窗,此时可以观察到在设定的显示窗口中,摩托车主对象所处的空间位置。主对象所处位置在摄影机工具视窗中,选择(摄影机平移)按钮,将摩托车主对象平移到合适的空间位置。同时,通过摄影机工具视窗中的(摄影机缩放控制)按钮和(摄影机旋转控制)按钮,改变摩托车主对象在视窗中的相对大小和观察角度。更改后的位置状态O32.1创建三维帧(1)在创建面板中,选择(创建三维帧)按钮,创建一个新的三维帧,作为摄影机视点的参考对象。创建三维帧(2)点选漏标签按钮,展开目录,在子目录中展开目录,找到对象,双击打开82发动机对象的设置面板。展开3DObjects目录82发动机设置窗口:,(3)82发动机设置面板Position选项World里X、Y、Z的数值代表的是82发动机对象的空间位置坐标,记下此时的82发动机对象的空间位置坐标X:8.2851、Y:52.2142、Z:-8.0496。82发动机空间坐标03.2.2设置三维帧(1)点选标签按钮,打开三维帧设置窗口,按对应的x、y、z坐标数值,将82发动机对象的空间位置坐标数值赋给新建的三维帧。并在栏目中将X、Y、Z方向尺寸数值都更改为10,使三维帧的比例适当。更改三维帧比例数值(2)点选标签按钮,展开目录,可以看到新建的三维帧。选中此三维帧,按下按钮,设定三维帧的初始状态。在选中三维帧的状态下,点下鼠标右键,选择快捷栏中的【Rename]或是直接按下键盘上的【F2】键,更改三维帧的名称为装配演示参考目标。更改三维帧名称O3.3.1创建摄影机在创建面板中点选(创建摄影机)按钮,创建一台新的摄影机。点选标签按钮,展开目录,在子目录中展开目录,可以看到新建的影机。选中此摄影机,按下按钮,设定摄影机的初始状态。并把摄影机改名为透视相机。03.3.2创建脚本(1)点选标签按钮,展开目录,在子目录中展开目录,在选中三维帧的状态下,点击鼠标右键,选择快捷栏中的(创建脚本),创建“装配演示参考目标”三维帧的脚本。(2)点选标签按钮,此时可以看到装配演示参考目标三维帧的Script脚本窗口。创建装配演示参考目标三维帧脚本打开脚本编辑窗口O3.3.3环绕摄影机(1)在行为交互模块与数据资源库窗口中,点选标签按钮。在目录下,展开子目录,点选其中的按钮。在视窗的右边选中(等待鼠标事件BuildingBlocks/Controllers/Mouse/MouseWaiter)BB行为交互模块添加行为交互模块用鼠标左键点选模块,拖动到装配演示参考目标Script脚本编辑窗口。并把Start开始端与MouseWaiter模块的输人端On进行连接连接MouseWaiter输入端点选MouseWaiter模块,按下鼠标右键,打开快捷菜单,选择其中的(编辑设置),开启EditSetting设置面板。用户可以按需要对鼠标左键、鼠标右键及鼠标滚轮等状态进行设置。在这里保持系统默认设置不变。。'开启EditSetting设置面板(2)点选其中的标签按钮。在目录下,展开子目录,点选其中的按钮。在视窗的右边选中(参数选择器BuildingBlocks/Logics/Streaming/ParameterSelector)BB行为交互模块,并拖放到装配演示参考目标Script脚本编辑窗口中MouseWaiter模块的后面。添加模块连接MouseWaiter模块的输出端RightButtonDownReceived与ParameterSelector模块的输人端In0,连接MouseWaiter模块的输出端RightButtonUpReceived与ParameterSelector模块的输人端In1。(注:在摩托车虚拟装配实例中,设计为通过鼠标左键实现摩托车部件对象的点选和移动,鼠标右键实现观察角度的变化,鼠标滚轮实现视景的缩放。)连接模块因为鼠标右键实现的是观察角度的变化,对应的参数类型应该为Angle(角度),而ParameterSelector模块默认的参数类型是Float(浮点),所以要重新设置参数类型。双击ParameterSelector模块参数输出端Selected(Float),在弹出的参数设置面板ParameterType(参数类型)选项中选择Angle(角度)。此时,ParameterSelector模块参数输人端PinO、Pinl的参数类型也自动更改为Angle。设置参数类型当鼠标右键压下时,观察角度才会改变鼠标右键弹起后,观察角度就不会再进行改变。双击ParameterSelector模块,开启ParameterSelector模块设置面板。由于ParameterSelector模块的输人端InO对应的是MouseWaiter模块的输出端RightButtonDownReceived,在面板中把Pin0选项的Degree(角度)数值更改为30,Pin1选项中的数值不做更改。设置角度数值点选标签按钮。在目录下,展开子目录,点选其中的按钮。在视窗的右边选中(使用鼠标移动摄影机BuildingBlocks/Cameras/Movement/MouseCameraOrbit)BB行为交互模块。并拖放到装配演示参考目标Script脚本编辑窗口中MouseWaiter模块下面。连接Start开始端与MouseCameraOrbit模块的输入端0n。连接模块在MouseCameraOrbit模块上通过点击鼠标右键打开快捷设置菜单,选择(添加目标参数),为MouseCameraOrbit模块添加目标参考对象。添加目标参考对象双击MouseCameraOrbit模块,在弹出的MouseCameraOrbit模块设置面板Target(3DEntity)选项中选择透视相机。设置目标相机在TargetReferential选项中选择装配演示参考目标三维帧做为摄胁机的参考目标。设置参考目标将MouseCameraOrbit模块的设置面板中的Movespeed、ReturnSpeed选项的Degree数值设定为0,ZoomMin选项的数值设定为-80,ZoomMax选项的数值设定为100。其它选项数值保持默认不变。设置摄影机参数按下状态栏的播放按钮,会发现摩托车主对象出现了整体上移。测试效果这是因为设置的参考目标和摄影机之间存在了一定的坐标偏移。再次双击MouseCameraOrbit模块,开启MouseCameraOrbit模块的设置面板。在面板中设置TargetPosition(目标位置)选项为X:0、Y:2.52、Z:-0.13。设定相对坐标点击状态栏的播放按钮此时的参考目标和摄影机的相对位置一致测试效果(4)按下状态栏的播放按钮,播放模式下,在3DLayout视窗中点击鼠标右键,移动鼠标,并没有实现观察角度的改变。这是因为在ParameterSelector模块中设置的旋转角度数值并没有输人到MouseCameraOrbit模块。鼠标右键点选MouseCameraOrbit模块参数[MoveSpeed(Angle):在弹出的快捷菜单中选择Copy选项。复制参数在装配演示参考目标Script脚本编辑窗口的空白处,点击鼠标右键,在快捷菜单中选择(粘贴快捷方式),以快捷方式粘贴MouseCameraOrbit模块参数粘贴快捷方式连接ParameterSelector模块参数输出端Selected(Angle)与MouseCameraOrbit模块参数MoveSpeed(Angle)快捷方式。实现ParameterSelector模块中的角度数值赋给MouseCameraOrbit模块的MoveSpeed。同时为了便于对后期制作时的区分以及清楚程序运行的参数变化,用鼠标右键点选MouseCameraOrbit模块参数MoveSpeed(Angle)快捷方式,在弹出的快捷菜单中选择(设置快捷方式群组颜色),指定颜色为暗红色。再次打开快捷菜单,选择(更改参数显示方式)扩展栏目中的(名称和数值),以名称和数值形式显示快捷方式。设置参数再次按下状态栏的按钮,播放模式下,在3DLayout视窗中点击鼠标右键,移动鼠标,即实现了观察角度跟随鼠标移动发生改变。测试效果03.3.4切换摄影机(1)点选标签按钮。在目录下,展开目录,点选其中的按钮。在视窗的右边选中(空操作指令BuildingBlocks/Logics/Streaming/Nop)BB行为交互模块,并拖放到装配演示参考目标Script脚本编辑窗口中MouseWaiter模块的后面。添加模块鼠标右键点选Nop模块,在快捷菜单(结构)选项中选择(添加行为输出),为Nop模块添加一个行为输出端。设置模块按照上面的方法,再为Nop模块添加一个行为输出端设置模块(2)点选标签按钮。在目录下,展开子目录,点选其中的按钮。在视窗的右边选中(切换信息BuildingBlocks/Logics/Message/SwitchOnMessage)BB行为交互模块,并拖放到装配演示参考目标Script脚本编辑窗口中Nop模块的后面。添加模块按照上一步添加Nop模块行为输出端的方法,为SwitchOnMessage模块添加4个行为输出端。连接Nop模块的输出端Outl与SwitchOnMessage模块的输人端0n。连接模块鼠标左键双击SwitchOnMessage模块,打开SwitchOnMessage模块设置面板。在Message0选项中输人Top,Message1选项中输人Front,Message2选项中输人Right,Message3选项中输人Free.Message4选项中输人Up,Message5选项中输人Recamera。设置SwitchOnMessage模块摩托车虚拟装配实例中要切换不同的视角对虚拟装配进行观察,所以设置了处于不同位置的摄影机。Top就是指以顶视图的角度来观察场景,Front,Right,Free则分别是指以前视图、右视图、自由视图的角度来观察场景,Recamera所代表的信息和Free—样,Up则是指开启切换摄影机的菜单按钮信息。这样设置的目的就是当SwitchOnMessage模块收到与设置信息相同的信息时,就开启相应的输出端,使相关的脚本运行。(3)点选标签按钮。在目录下,展开子目录,点选其中的钮。在视窗的右边选中(参数选择器BuildingBlocks/Logics/Streaming/ParameterSelector)BB行为交互模块,拖放到装配演示参考目标Script脚本编辑窗口中SwitchOnMessage模块的后面。按照添加Nop模块行为输出端的步骤,为ParameterSelector模块添加两个行为输人端。添加行为端口连接SwitchOnMessage模块的输出端Received0与ParameterSelector模块的输入端In0,连接SwitchOnMessage模块的输出端Received1与ParameterSelector模块的输人端In1,连接SwitchOnMessage模块的输出端Out2与ParameterSelector模块的输人端In2,连接SwitchOnMessage模块的输出端Out3与ParameterSelector模块的输人端In3连接Switc