查看: 1775|回复: 1
打印 上一主题 下一主题

【Virtools中文手册】制作一个追踪目标的摄影机

[复制链接]

3795

主题

2

听众

5万

积分

版主

Rank: 7Rank: 7Rank: 7

纳金币
53202
精华
32

活跃会员 优秀版主 推广达人 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2013-1-8 09:45:17 |只看该作者 |倒序浏览
这一课Virtools中文手册将会教您如何在Schematic view里自由地组合「行为模块」,以便在您的组件上加入进阶的「行为模块」的互动控制。在本课的例子里,我们将会创造出一个会自动锁定角色头部的camera,而当我们移动该角色时,该camera也会跟着角色在场景中四处移动,并保持动态的锁定状态。 由于这是您第一次在Schematic View里以图像化方式撰写Virtools程序的经验,这是Virtools非常核心与重要的部分,我们建议您最好一步一步地跟随课程的指示循序渐进,并且仔细地看过所有的解释与说明,如此我们保证您将会事半功倍,马上进入状况。这一课里包含了许多关于Virtools如何运作的重要概念基础,请用心学习哦!
步骤1:新增一个镜头(Creating a new camera)
• 在「3D Layout」工具列里点选「Create Camera」(新增镜头)
。此时,在场景中会出现一个新的镜头,取代了原先的Perspective View
恭喜您,您刚刚创造了一个名为New Camera的新camera。这个新的camera会出现在与原来所在Perspective View camera(***视角镜头)相同的位置上。
现在,一个新的面版将出现在Level Manager的右边:Camera Setup view。这个面版让您能够检视与编辑所有关于这个camera的设定参数(包括位置、方向、视线范围……等等)。这个新增的camera可以从几个地方呼叫出来:您能够从Manager 里的Camera资料夹里开启;也可以在3D Layout view中的Available Cameras下拉选单里找到它。
为了能在3D Layout里看见这个新的camera,您将需要切回先前窗口的状态(Perspective View)
• 从「Available Cameras」(镜头类型)下拉选单里选取「Perspective View」(***视角)使镜头回复标准***视角。

• 点选「Dolly Camera」(推移镜头)图标

,这时候使用Dolly camera(推移镜头)向后移动一点点。
• 在3D Layout窗口中按下滑属左键,并慢慢地向3D Layout窗口下方拉动鼠标,这时候,我们可以从比较远的距离观察我们的场景(相当于镜头拉离我们所建构的实验室)。这个动作让我们能够看到我们之前所创造出来的新camera,这个新camera目前以一个白色摄影机状的盒子来表示。
• 按下Orbit Camera
按钮以环视整个场景。如果没有意外的话,您将会看见您所设定的camera
跟它所锁定的目标,两者间透过一条黄色的线连结起来。
步骤2:对镜头指定「行为模块」(Applying behaviors to the camera)
我们想要让New Camera达成的任务如下:首先,我们希望能够在一进入这个场景的同时,就以New Camera来作为我们的观察视点(这件事情只要透过『行为模块』SetAsActiveCamera就可以达成了)。
然后,我们想要使New Camera能够持续地锁定角色,再说清楚一点,也就是在Virtools开始算运算其它图形资料之前,就先将镜头所定在角色上面(使用『行为模块』CameraOrbit)。
• 选取「Building Blocks」卷标。
• 打开「Cameras」资料夹。
• 打开「Montage」资料夹。
• 将「行为模块」「SetAsActiveCamera」拖放到指定的镜头上。
• 选取「Schematic」卷标,从Schematic可以检视摄影机互动模块的组合状态(New Camera script)。
一个代表SetAsActiveCamera的方块出现,方块的左边有一个输入端(input),而右边则有一输出
端(output)。
• 从「Building Blocks」面版中打开「Cameras/Movement」资料夹。• 将「行为模块」CameraOrbit拖放到Schematic view里,摆在「行为模块」SetAsActiveCamera之右,如图所示。
• 在Schematic view里将鼠标移到CameraOrbit「行为模块」方块上按下右键,这时会出现一个选单,然后在选单里选择 Edit parameters。这个动作将会开启一个对话框,这个对话框能让您指定该camera所要锁定的目标。• 点选按键(Eyedropper button),并从 3D Layout视角中选取角色Scientist。
• 点取OK。
步骤3:设计一套「行为模块流程」(Designing a behavior flowchart.)
现在,我们的New Camera已经拥有两个「行为模块」了。
注意:在Virtools里所有的「行为模式」实时处理与绘制,每执行一个Frame(画格)都依循下列的执行程序运作:
- 处理「行为模块」
- 运算绘制场景
- 处理「行为模块」
- 运算绘制场景
- 依此类推
在Virtools中,一个基本处理周期(basic cycle)(包括一次的『行为模块』处理与场景算图)被称为一个Frame(画格)。举例来说,frame rate(画格更新率)为30 fps代表了上述的基本处理周期在一秒钟里需要被连续执行30次。在这一课里,我们将会以Frame的概念来描述所有的「行为模块」是如何地被连续组合起来的。
注意:Frame这个字在Virtools也指在3D环境里被用来标示一个位置或是有方向性的虚拟对象,小心别混淆了(其实在其它的软件里如3dmax,这样的对象通常被叫做Dummy)。
以下就是我们所希望在camera上所执行之「行为模块」的顺序:
1. 激活演出场景。
2. 切换到New Camera(执行SetAsActiveCamera)。3. 运算绘制场景。
4. 让New Camera锁定在角色(执行CameraOrbit)。
5. 运算绘制场景(Render the scene)。
6. 回到第3步(以便在每一个新的Frame绘制之前都能重新执行CameraOrbit)。
步骤4:观察所设定的「行为模块」如何运作(Understanding how behaviors basically work)
在学习如何创造「行为模块流程」之前,我们得花点时间搞清楚「行为模块」是如何运作的。
基本上,所谓的「行为模块」就是一些执行程序中的组件,当其被触发激活时,就会展开特定的作业
与效果。这就是它们「输入端」(inputs)(位于每个『行为模块』的左侧)的作用:「输入端」(inputs)
接收以事件为基础的讯号(event-based signals),并负责触发该「行为模块」激活之后一连串的
处理程序。
某些「行为模块」或许需要设定一些参数以执行它的工作。这些参数能够藉由一群称为「参数输入插脚」(input parameter pins)的小点来输入与控制,您可以在「行为模块」方块的上方找到这些「参数输入插脚」。
一旦某个「行为模块」完成它所负责的任务,它将会传送一些事件基础讯号出去,透过位于盒子右方的「输出端」(outputs),然后接着触发连结到这些「输出端」的其它「行为模块」,继续执行它们的任务。
一个「行为模块」的执行结果或许还会输出一些「计算参数」(computing parameters),而这些「计算参数」则是透过盒子下方一些称为「参数输出插脚」(output parameter pins)传送出去的。
步骤5:在Schematic view 里新增「行为模式流程」 Creating the behavior flowchart in the Schematic view) 现在,让我们试试看以一些基本的规则来建立属于自己的「行为模块」流程。
我们可以看到在最左边的箭头状的Start尖端与「行为模块」SetAsActiveCamera之间的连结,这连结所代表的意义是:当您按下Play按键开始播放您的作品时, 行为模块」SetAsActiveCamera

将第一个被触发激活。
一旦该「行为模块」的工作完成(切换到New Camera),SetAsActiveCamera将藉由它盒子上的「输出端」送出一个讯号。 若是我们希望接下来要执行CameraOrbit,我们得在SetAsActiveCamera的「输出端」与CameraOrbit的「输入端」之间建立起连结才行。
• 点选Schematic view工具列中的Link选项。
• 在SetAsActiveCamera里选择output。
• 在CameraOrbit里选择input。
到这里,我们已经建立起下列的简单「行为模块」流程了:
1. 激活演出场景。
2. 执行SetAsActiveCamera。
3. 运算绘制场景。
4. 执行CameraOrbit。
注意我们刚刚所建立的连结上头显现的指示0/0:这代表该连结所会延续(delay)的时间。它告诉我们从SetAsActiveCamera的「输出端」传送到CameraOrbit的「输入端」需要花费0个Frame的时间。
换句话说,SetAsActiveCamera与CameraOrbit两个动作在以Frame为执行单位里已经被串成一个执行程序。
• 按下状态区里的Play按钮,以激活演出场景。
如您所见,现在New Camera变成了active camera(Virtools以此camera为最起始的视点,算出整个场景),目前此camera正锁定在角色上。
要是您使用数字键盘上的方向键让该角色在场景里四处移动一下,您会发现New Camera并没有跟着角色而动。别担心,看看我们刚建立的流程:原因出在于我们只要求该camera在开始演出场景时锁定角色一次而已。
• 按「Restore Initial Condition」(回复初始条件)按钮停止演出。
• 按下状态区里的Play
按键,再次激活演出场景。

正如您所看到的,现在camera再一次地对准了目标角色。当然啦,要是您现在将角色移开的话,camera是还不会跟着走的。
• 按「Restore Initial Condition」(回复初始条件)按钮止演出。

步骤6:在「CameraOrbit」里加入一个循环
(Creating a feedback loop on the behavior CameraOrbit)
要想让camera持续锁定追踪该角色,我们必须在每个frame运算前都执行一次CameraOrbit才行。
要达到这个效果,我们得在它的「输出端」和「输入端」间建立起一道延续值为1个Frame的连结。
如此,「行为模块」CameraOrbit将会在每个新的Frame开始执行时,重复执行一次。
• 在Schematic view工具列里点选Link指令。
• 先在CameraOrbit里选择output。
• 再将鼠标移向右边,并轻击一下以创造一个连结控制点(link control point)。
• 如下页所示般,轻击鼠标,继续创造另外两个连结控制点。 • 按下CameraOrbit的「输入端」。
• 按下Restore Initial Condition• 现在,按下Status Bar上的Play
按钮以停止演出播放。按钮,重新播放一次演出场景。

我们发现camera已经会追踪锁定移动中的角色了,因为「行为模块」CameraOrbit在每个frame绘制之前都会被重新执行一次。按下Schematic工具列上的Trace按钮以激活Trace模式,并实时地观察执行中的「行为模块」:您会看到以红色的高亮度显示着的「行为模块」CameraOrbit正一次又一次不断地执行着。
恭喜啦!您已经在Schematic view里创作了自己的第一个「行为模块」流程了。
在下一课中,我们将让您知道,当您能将Schematic view运用自如的时候,Virtools能够展示多么强大的威力!
记得要储存您辛苦完成的作品哦,因为您将会于下一课里在上头继续增添新的东西。只要用第2课里所学到的Virtools Player就可以随时观赏您的得意作品了!
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

3795

主题

2

听众

5万

积分

版主

Rank: 7Rank: 7Rank: 7

纳金币
53202
精华
32

活跃会员 优秀版主 推广达人 突出贡献 荣誉管理 论坛元老

沙发
发表于 2013-1-9 15:14:35 |只看该作者
总目录: 【Virtools中文手册】virtools简介、系统需求和接口操作【Virtools中文手册】创造第一个3D互动场景【Virtools中文手册】如何移动、控制与浏览Virtools里的对象【Virtools中文手册】制作一个追踪目标的摄影机【Virtools中文手册】障碍物回避的处理【Virtools中文手册】如何将「行为模块」组合成行为模块流程【Virtools中文手册】参考术语表  
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-7-21 13:23 , Processed in 0.192150 second(s), 31 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部