虚拟仿真项目实战
项目名称:汽车虚拟仿真展示设计
Θ第一部分 课程目的Θ
Virtools Dev 开发工具除了进行多媒体和游戏编辑制作外,更能灵活的应用
到各行各业的商品展示上,此章利用简单的汽车样品展示范例,来说明 Virtools
Dev 开发工具在商品展示上的便利性,更以此范例,让初学者轻松上手 Virtools
Dev 开发工具,认识编辑流程。
Θ第二部分 制作过程Θ
对象的建立和初始设定
1.请选择 Resources/Open Data Resource,选择光盘里的素材/,这样
便可以加载本书的教学素材数据库了。
2.载入的车子对象
置、方向和大小,然后按下 Set IC For Selected 设定其初始值,此时 Level Manager
窗口里的 evocar 角色对象的 IC 处会显示 X 也就是已经设定其初始值了。
车身反射材质的制作
1.在 Level Manager/Materials 里可以找到该车子模型的全部材质 ,car body、
car_window2、car window、car logo、car item。
2.因为我们要使用材质来制作车子的反射特效,但是真正的车子也有像轮胎那
部分,是没有反射质感的,所以当我们在制作 3D 模型时,就要先考虑何处材质
需要用到哪种特效,何处材质无需用到特效,把一个模型的材质,做有效的规划
和管理,像这次的模型,car item 是车子轮胎和车头灯的材质,所以无需设置反
射质感;而其他的 car body(车体材质)、car_window2(车窗边缘材质)、car
window(车窗材质)、car logo(车子标志材质)都是需要设定制作反射质感效果
的。
3.所以请先选择 car body,并快速点击鼠标左键两下,就可以开启其车身的材
质设置窗口。
4.请载入 来当反射材质的纹理图像,接
着将 car body 的材质设置窗口里的 Texture,设定成刚刚加载的纹理文件
。
5.如果觉得车身的颜色太过黯淡可以调整材质的 Emissive(放射)去设定其亮度,
但此时会发现车身还没有明显的金属质感出现。
6.接下来要设定反射的贴图效果,所以请点击 car_body 材质设定栏里的 Effect
(特效)选项,然后选择其中的 Tex Gen(纹理生成)。
7.接着在该 Tex Gen Type(纹理生成类型)中选择 Reflect(反射),此时就可
以转转镜头试试,会看到车子的车身表面产生了金属反射效果。
8.利用此方式也将 car_window2、car window、car logo 等三个材质都设定成反
射的效果。
镜像反射地板设定
1.载入 Entities/ 地板对象于场景中,并设定好其初始
定值。
2.点击 Level Manager/Character/evocar 对象,按下鼠标右键,此时会开启编辑
菜单,选择 Add Attributes(添加属性)。
3.在 Select Attribute Type 菜单里选择 Visuals FX/Reflected Object(反射对象),
然后按下 Add Selected(新增选择),这样就可以设定车子本身为一个会被反射
的对象。
4.但因为这样增加属性是属于简便方式,如果对于属性是否设定完成存有怀疑,
那就请单击该对象,然后按下鼠标右键打开编辑窗口,点击 SEtup 便会跳出该角
色对象的设置窗口,然后选择左边选项的 Attribute,便会跳出该对象的属性数据
域,这样就可以明确的了解该对象到底设置了哪些属性,当然在该窗口也可以设
定增加新的属性,只是这样比较麻烦而已,最后不要忘记了要再次设定一次车子
的初始值。
5.接下来制定地板的镜像反射效果,点击 floor 对象,然后按下鼠标右键打开其
编辑窗口,选择 Create Script ,接着请点击 Schematic(流程图)编辑窗口,就
可以看到 floor01 对象的 Script 了。
6.加入 BB/Visuals/FX/Planar Reflection(平面反射对象)于 floor01 的 Script 里,
并与 Start 连接上。
7.鼠标左键双击 Planar Reflection 模块,可以打开该模块的设置窗口,设定对应
的 group 群组与镜面反射的轴向,在此维持原本的设定即可。接着按下窗口右下
角的 Play 键可以执行所编辑的流程,但在此却发现并没有如预期中呈现地板镜
像反射的效果。
8.其实平面镜像发射的效果是将需要反射的对象依照所设定的轴向对称地复制
一份,也就是说并不是真的产生了反射,而是一种障眼法,所以,无法把效果显
示出来原因非常简单,就是地板将下面所复制的对称对象遮住了,因此解决的方
法就是把地板对象的材质设定成半透明就行了。在此请打开 floor01 的材质设定,
将 Mode(模式)设定为 Transparent(透明),接着设定 Diffuse 颜色项目的 Alpha
值为 200。
9.再一次按下 Play 可以发现镜像反射的效果已经产生了。
摄像机的设定
1.请按下左边 Create Camera 的按键创造一个新的摄像机,而此时会发现显示窗
口已经变成该摄像机的视点,接着于 Level Manager/Global/Cameras 里找到该新
增的摄像机,选择该摄影机,按下按键 F2 便可以重新命名,我们将摄影机的名
称取名为 Camera01。
2.左边的摄影机控制窗口可以调整摄影机的位置及其视野景深等,设定完后不
要 忘 记 要 设 定 其 初 始 值 , 接 着 创 造 该 摄 影 机 的 Script , 并 加 入
BB/Cameras/Movement/Keyboard Camera Orbit(键盘环绕摄影机)。
3.打开 Keyboard Camera Orbit 模块窗口,将 Target Referential(参照目标)设
定为 evocar 车子角色对象, Move Speed(移动速度)设为 100,Return Speed
(返回速度)设为 0,Min Horizontal(最小水平旋转角度)设为-1 圈,Min
Horizontal(最大水平旋转角度)设为 1 圈, Min Vertical(最小垂直旋转角度)
设为-30,Max Horizontal(最大垂直旋转角度)设为 15, Zoom Speed(缩放速
度)设为 40,Zoom Min(缩放最小值)设为-40,Zoom Max(缩放最大值)设
为 10.
4.再用鼠标右键点击 Keyboard Camera Orbit 模块打开编辑菜单,请选择 Edit
Settings(编辑设置)便可以打开其模块的按键对应控制窗口,在这里我们设定
Limit(限制),Returns(返回),Key Rotate Left(键盘左转)对应为 A,Key Rotate
Right(键盘右转)对应为 D,Key Rotate Up(键盘上转)对应为 W,Key Rotate
Dwon(键盘下转)对应为 X,Key Zoom In(键盘拉近)对应为 Q,Key Zoom Out
(键盘拉远)对应为 E.
5.按下 Play 测试看看,这样就可以利用所设定的按键来控制摄影机的视角了。
灯头和头灯特效设定
1.请按下左边 Create Light 的按键创造一个灯光,在 Level Manager/Global/Lights
找到新的灯光,命名为 L_light(左车灯)后,于左方对象调整区,调整其位置
和大小置于 车子对象模型的左车灯的前面。
2.之后一样在 Level Manager/Global/Lights 里,点击 L_light 按下鼠标右键打开
编辑窗口,点击 Setup 便会跳出 L_light 对象的设置窗口,把设置窗口中的 Type,
从 Point(点光源)改为 Spot(聚光灯),之后调整 Spot 方式特有的黄色方向线,
使灯光的投射方向符合车子车灯的投射方式,最后任意调整设置窗口里的
Influence/Range(照亮范围),完成后可按 IC 来设定初始状态。
3.加入 VTrsc2/Textures/ 的亮光特效用 Texture ,之后一样点击 Level
Manager/Global/Light 里的 L_light,按下鼠标右键打开编辑窗口,点击 Create
Script 来开启 L_light 的 Script,并加入 BB/Lights/FX/Lens Flare(镜头光晕),
连接 Start 后打开 Lens Flare,把里面的 Flare Texture(光斑纹理)设定成刚导入
的 sun01,而 Size Scale(尺寸大小)设成 X:、Y: 。
4.按下界面右下角的 Play 键,便能看到车灯特效。
5.用上面方法,同样制造车子的右车灯,并取名为 R_light,这样两个车灯就 OK
了。
6.接着,要在车子四周创造环境灯,一样按下左边 Create Light 的按键创造一
个新的灯光,取名为 sky_light1,并随意调整其位置于车子四周,设定大小,Setup
和确定初始 IC,与车灯不同的是 TYPE 不需要更改设定,用 Point(点光源)就
可以了,设定好之后按下 Play,在此却发现画面上并无任何变化。
7.原因在于之前在设定车子和地板的 Material(材质)时,材质的 Emissive(放
射)调的太亮,应该调暗点才对,因为 Emissive 的作用,在于对应的 Material 是
否自行发光,如果车子和地板上的 Material 全部发光,也代表车子和地板自己本
身会自行发光。如此,如果我们创造环境灯在车子和地板四周,光的效果就会被
车子本身发出的光盖住,所以我们才会感觉没有变化。由此可知,我们应该把车
子和地板模型的全部材质(car body、car_window2、car window、car logo、car item
和 floor01)的 Emissive 值都调整到少量自发光的数值,之后再按 Play,就会发
现已经有变化了。
8.利用创造环境灯 sky_light1 的方法,再创造其他三盏灯,分别取名为 sky_light2、
sky_light3、sky_light4,且让四盏环境灯分别放在车子的前后左右四周,再按下
Play,这样特效灯和环境灯就设置完毕了。
车身变色和展示功能菜单设置
随意变换 3D 模型的颜色,在现今不管是单机游戏或是在线游戏,都是非常
常见的一种功能,尤其是 RPG 类型游戏,开始游戏时,会要求玩家创造自己的
角色,并且选择角色的发色和肤色等,就要用的此技术,而功能强大的 Virtools
Dev 开发工具,当然能轻松做出这种技术,现在我们就用最不耗效能的方法,把
这种变换 3D 模型颜色的技术,用在我们刚刚创造好的车子模型上。
1.首先我们需要一个控制菜单,所以先按下左边的 Create 2D Frame,来创建一
个 2D Frame(平面的对象),并在 Level Manager/Global/2D Frames 找到新创建
的 2D Frame,并把它取名为 modify_skin,之后调整它的位置和大小到画面上方。
2.因为我们创的 2D Frame,现在还没有材质,所以是空心的,点击左边的 Create
Material(创建材质),之后一样去 Level Manager/Global/Materials 找到新创的
Material , 并 取 名 为 modify_skin , 开 启 Level Manager/Global/2D
Frames/modify_skin 的 Setup 设置窗口,把窗口里的 Material,设成刚刚创立且取
同名的 modify_skin,并且在 General/Homogeneous Coordinates 选项里打 X 选取,
这样 2D Frame 就会以屏幕比例为位置依据,最后在 Position/Z Order 设为-2.
3.已经有材质后,可以在 Level Manager/Global/2D Frames/modify_skin 按右键
选择 Setup,来开启 Materials/modify_skin 的设置窗口,更改窗口的 Diffuse,来
调整 Material 的颜色,也由此改变 2D Frame 的颜色。
这样,大型菜单就制作完成了。不过还需要制作大菜单里的小选项!所以用
上面说明的 2D Frame、Material 制作方法,来制作其他小选项吧,顺便当做练习。
4.而小选项的做法和大菜单一样,唯一不同之处在于 2D Frame 的 Setup 设置
窗口里面的 Position/Z Order,要设定成-1,这样才能让小选项迭加在大菜单上。
5.小选项共需要 11 个,因为太多,而且做法都和以上叙述的一样,所以为了方
便读者学习,请直接使用 VTrsc 素材里面已经帮读者做好的模块,删除刚才练习
所创造的 2D Frame、Material,直接加载
Entities/,之后会发现大菜单和 11 个小选项,不管是 2D
Frame 对象本身还是 Material,都已经创造完成!不过 12 个 2D Frame 都还没有
设定大小位置和初始 IC,所以请一个一个设定大小,调到喜欢的位置,并到 Setup
窗口里的 General/Homogeneous Coordinates 选项里打 X,以变成屏幕比例显示,
之后初始 IC。
6.现 在 我 们 就 开 始 来 制 作 菜 单 吧 。 点 击 Level Manager/Global/2D
Frames/modify_skin 的 大 菜 单 2D Frame , 按 右 键 选 择 Create Script 开 启 2D
Frames/modify_skin 的 Script。
7.加 入 BB/Controllers/Mouse/Mouse Waiter ( 鼠 标 等 待 器 ) 和
BB/Interface/Screen/2D Picking(2D 鼠标点击状态判断)。
8.接着让 Mouse Waiter 的执行输入 On 和 Start 连接,2D Picking 的执行输入 In
和 Mouse Waiter 的执行输出 Left Button Down Received(接收到鼠标左键按下
的信息)连接,如此当执行 Play 时,我们只要按下鼠标左键,Mouse Waiter 就
会开启 Left Button Down Received 而执行 2D Picking。
9.点击 2D Picking 下方的 Sprite 数值输出端,按右键选择 Copy,点击后再旁边
空白处按右键选择 Paste as Shortcut(粘贴为快捷方式 ),来开启输出端 Sprite 对
应快捷方式.
10.再点击刚刚创建出来的 Sprite 快捷方式,按鼠标右键选择 Change Parameter
Display Spacebar(按空格键改变参数显示方式),跳出 Spacebar 的菜单后,请选
择 Name and Value(名字和数值),如此我们就可以轻松观察 Sprite 输出端的变
化。
11.为了看 Sprite 输出端的变化,我们先按下 Play,并且点击上面的大菜单和小
选项,之后会发现我们点击的大小菜单 2D Frames 名称,都会显示在 Sprite 输出
端上,所以简单的说,2D Picking 是用来帮我们去的我们目前鼠标点击到什么对
象的程序。
12.再 加 入 BB/Logics/Streaming/Switch On Parameter ( 转 接 参 数 ) 到 2D
Frames/modify_skin 的 Script 里,并让 2D Picking 的执行输出端 True,连接
Switch On Parameter 的执行输入端 In;而 2D Picking 的执行输出端 False 连回
Mouse Waiter 的执行输入端。
13.点击 Switch On Parameter 的参数输入端 Test,把数据类型从 Float 改成 2D
Entity,并且让 2D Picking 的 Sprite 输出端连到 Switch On Parameter 的参数输入
端。
因为 Switch On Parameter 的作用在于,用参数输入端 Test 的参数值当一个参
考点,来对比下方的其他参数值是否和它一样,如果有参数值和 Test 一样,就
开启相对应的输出执行端。
14.如果不懂也没关系,首先先点击 Switch On Parameter 打开设置窗口,并将 Pin
1 设定成 2D Frame 的 Car_Color1。
15.这样设定就表示当你执行 Play 时,用鼠标点击上面的红色小选项,点击的
2D Frame 名称 Car_Color1,2D Picking 马上就会抓到,并且在 Sprite 端输出给接
受的 Switch On Parameter 的 Test 端,而 Test 再比对 Pin 1 是否有一样的参数,有
就再开启 Pin 1 的相应输出 Out1,简单地说,就是当点击到红色小选项的 2D
Frame“Car_Color1”,Out1 才会打开,而点击其他 2D Frame,Out1 都不会响应。
16.如果还是不懂也没有关系,首先点击 Switch On Parameter,按右键选取
Construct,弹出菜单后,选择 Add Behavior Output(增加状态输出),点击后会
发现 Switch On Parameter 多了一个参数输入端 Pin1 和执行输出端 Out2,再打开
Switch On Parameter,能看到多了一个选择项。
17.把 Pin 2 设定成 2D Frame 的“Car_Color2” 。
18.如 此 设 定 后 , 在 Play 下 , 当 我 们 用 鼠 标 点 击 2D Frame 的 名 字 是
“Car_Color1”的红色选项时,Switch On Parameter 就会只执行 Pin 1 的 Out1;如
果是按下 2D Frame 的名字是“Car_Color2”的蓝色选项时,Switch On Parameter 就
理所当然会执行 Pin2 的 Out2。
19.因为上面的小选项总共有 11 项,所以我们用创造 Pin2 的方法,来创造其
他 9 个 Pin , 并 且 一 一 设 定 成 2D Frame 的 “ Car_Color3 ” 、“ Car_Color4 ” 、
“ Car_Color5 ” 、“ Light_On ” 、“ Light_Off ” 、“ Reflection_On ” 、“ Reflection_Off ” 、
“Auto_Rotate_On”、“Auto_Rotate_Off”,如此当我们点击不同的 2D Frame 时,
Switch On Parameter 就会开启相对应的 Out,这样,菜单就完成了。
车身变色切换开关设定
接着就来说明 11 个 2D Frame 小选项的用途吧 ,“Car_Color1”~“Car_Color5”
是 颜 色 变 换 ,“ Light_On ” 和 “ Light_Off ” 是 车 灯 开 关 ,“ Reflection_On ” 和
“Reflection_Off”是镜像反射开关 ,“Auto_Rotate_On”和“Auto_Rotate_Off”是自动
旋转开关。
我们就先来制作车身变色功能。改变车身颜色,应该从车子模型的 Materials
里的颜色换起,而控制车身的 Materials 是 car body。但是问题来了,因为我们已
经设定 car body 为 Effect/Tex Gen 功能方式的贴图了,这样的话,我们如果要换
Materials 的颜色,就会被以 Tex Gen 方式所贴的反射纹理破坏,变色的就只有反
射层,车子本身不变色,但是如果不用反射纹理又会让车子没有反射质感。所以
为了解决这个难题,我们就是用更高级的 Effect 功能 Combine 2 Textures(混合
2 张纹理),让一层是车子的反射层纹理,一层是车子的基本纹理。
1.因为我们要用到的功能 Combine 2 Textures(混合 2 张纹理),需要用到两张
纹理,所以首先按下左边的 Create Texture(创造纹理),来创造一个没有任何作
用的空纹理当底图,而我们要变色用的就是此纹理,创造后打开新纹理的 Setup
设定界面,会发现两个黑框框,于左边的黑框按鼠标右键,选择 Invert Slot(逆
转),左边框框就会变成白色,之后任意取名后设定 IC。
2.然后请开启 Materials“car body”的 Setup 设置窗口,把窗口上的 Texture 从
background002 改成刚创造的新纹理,把 Effect 从 Tex Gen 改成 Combine 2
Textures ,此时下方会让你选择第二张纹理 Texture1,选回 background002。
3.开启下方 Params,并把 Combine(结合方式)设定为成 Add Signed 2X(增
加标记 2X),TexGen(混合方式)设定为 CubeMap Reflact(六面体纹理反射),
此时看到车子是白色,那是因为我们创的假纹理是白色的原因,虽然车是白色的,
但一样拥有反射质感,此时别忘记了要重新设定初始值 IC。
4.可以任意调整 Materials“car body”设置窗口的 Diffuse,来更改车身颜色。
5.再 来 , 就 是 设 定 “ 直 接 按 2D Frame 就 能 换 颜 色 ” 的 功 能 , 请 先 加 入
BB/Logics/Streaming/Parameter Selector(参数选择器)到 2D Frames/modify_skin
的 Script,来配合 Switch On Parameter 的使用,并点击 Parameter Selector 的下方
参数输出端,把数据类型从 Float 改为 Color。
6.之后请打开 Parameter Selector,把 Pin0 的颜色调成红色、Pin1 的颜色 调成
蓝色,并把 Parameter Selector 的执行输入端 In0 和 In1,分别连接上 Switch On
Parameter 的执行输出端 Out1 和 Out2。
7.再加入 BB/Materials-Textures/Basic/Set Diffuse(设定漫反射),打开后把
Target(对象)设定成 Materials 的 car body,并且把 Set Diffuse 的执行输入端 In
和 Parameter Selector 的执行输出端 Out 连接起来,Parameter Selector 的参数输出
端 Selected 连接到 Set Diffuse 的参数输入端 Diffuse Color。
8.点击上方红色的 2D Frame 或者蓝色的 2D Frame,就可以随按随换颜色了,
举例说明假设当我按下红色的 2D Frame 时,2D Picking 马上就会抓到红色 2D
Frame 的文件名 ,并传送给 Switch On Parameter,之后 Switch On Parameter 会
开启 2D Frame 的文件同名的对应输出 Out1,Out1 会传给 Parameter Selector 的执
行输入端 In0,开启 In0 设定的颜色参数红色、再传给 Set Diffuse 所指定的对象
car body,并且因此改变 car body 的颜色来变换车身颜色。
9.已经会制作两个颜色变换了,剩下三个当然轻而易举,点击 Parameter Selector
后按右键选择 Construct,在弹出菜单中选择 Add Behavior Input(增加状态输
入),会发现和 Switch On Parameter 类似 ,增加了执行输入端 In 和参数输入端
Pin ,所以一样再增加两次 Add Behavior Input,之后再打开 Parameter Selector,
把新的执行输入端 Pin2、Pin3、Pin4,分别设定成黑色、黄色、绿色,然后把新
的执行输入端 In2、In3、In4,分别接上 Switch On Parameter 的执行输出端 Out3、
Out4、Out5,如此,五个变换颜色的功能就制作完成了,需要变色的时候按下 Play
后任意选择按上方变换颜色的 2D Frame 即可。
车灯开关功能设定
1.接下来,开始制作下一个功能:车灯的开关!车灯是用两部分组成的障眼法,
一部分是发亮的光,另一部分是特效图片的光。所以我们先解决关闭或打开特效
图片光的部分吧,其实要关闭特效图片非常简单,L(R) _light Script 的 Lens Flare
程序能创造特效图片光,当然就能关闭。所以请读者观看程序 Lens Flare ,会发
现 Lens Flare 的执行输入端 Off,我们只要把开关灯光 2D Frame 对应的 Switch
On Parameter 执行输出端 Out6、Out7 连接到 Lens Flare 的执行输入端 On、Off,
就能点击 2D Frame 来开或关。但是两个 Lens Flare 和 Switch On Parameter 被设
置于不同的 Script 上,所以先点击 L_light 的 Lens Flare 按右键 Add Target
Parameter(增加参考对象参数) ,再去 R _light 的 Lens Flare 执行一样的动作,
按右键 Add Target Parameter(增加参考对象参数)。
2.请利用 Cut/Paste (剪切/粘贴)的功能,把两个 Lens Flare 从原本的 Script,
都移动到 2D Frames/modify_skin 的 Script 上连接 。之后打开会发现需要重新设
定里面的值,我们把其中一个 Lens Flare 设定成 Target 为 L_light,Flare Array
为 Null,Flare Texture 为 sun01,Size Scale X: Y:;另一个 Lens Flare 除
了 Target 设成 R_Light 外 ,剩下的和之前的 Lens Flare 一样。
3.接下来,如之前所述,将开关灯光 2D Frame 对应的 Switch ON Parameter 执
行输出端 Out6、Out7 连接到 Lens Flare 的执行输入端 On、Off,这样当我们按
下 2D Frame/light_on 时,特效图片就会打开,按下 2D Frame/light_off 时,特效
图片就会关闭。
4.灯光的第一部分完成,不过虽然现在已经可以开关特效纹理了,但是真正的
光却还是发亮,所以请加入 BB/Logics/Streaming/Parameter Selector(参数选择器)
到 2D Frames/modify_skin 的 Script 上,并且一样点击 Parameter Selector 的下方
参数输出端,把数据类型从 Float 改成 Color 。
读者会发现这步骤和之前制作变色车身一样,但是为何不用之前的 Parameter
Selector 在 Add Behavior Input(增加状态输入)?其实是因为之后我们要连接
的 BB 不是 Set Diffuse(设定漫反射) 而是 Set Light Color(设置灯光颜色)。
说到这里,可能读者会问,为何灯光的开关与否和灯光颜色有关系,其实之前也
有说过,虚拟现实里的东西都是用障眼法合成的,所以不能用一般常识思考,当
灯的颜色是白色时,因为白色是最亮的颜色,所以我们会感觉灯在发光;相反的
若用黑色?黑色是最暗的颜色,当然我们就看不到,看不到就会感觉不发光,何
况现实世界里面是没有黑色光这种东西,所以这是虚拟现实里面才有的障眼法,
而此方法也广泛应用在在线游戏的日夜交替系统上。
5.所以请加入 Set Light Color(设置灯光颜色)到 2D Frames/modify_skin 的
Script 上,并且打开 Set Light Color,把 Target(Light)设成 L_light,并把 Parameter
Selector 的执行输出端 Out 和 Set Light Color 的执行输入端 In 连接,Parameter
Selector 的参数输出端 Selected 和 Set Light Color 的参数输入端 Color 连接。
6.打开 Parameter Selector,把 pIn0 的颜色调成白色、pIn1 的颜色调成黑色,并
把 Parameter Selector 的执行输入端 In0 和 In1,分别连接上 Switch On Parameter
的执行输出端的 Out6 和 Out7,这样当我们关掉车灯时,就会执行关掉光和关掉
特效纹理。
7.现在值设定了左车灯的 Set Light Color ,所以请再加入一个 Set Light Color,
并且打开后把 Target(Light)设成 R_light,之后仿照上面的做法来连接,车灯开关
功能就大功告成了,按下 Play 来测试吧。
镜像反射地板开关设定
1.接下来我们要来制作镜像反射的开关,而镜像反射开关和我们刚才制作的车
灯开关有一点雷同,就是镜像反射开关用到的 BB 程序,像 floor01 Script 的
Planar Reflection(平面反射对象)一样有一个 Off 的执行输入端,所以我们参照
之前的动作,点击 Planar Reflection 后按右键选择 Add Target Parameter(增加参
考对象参数),之后用 Cut/Paste(剪切/粘贴)的功能 ,把 Planar Reflection 从
floor01 Script 移动到 2D Frames/modify_skin 的 Script 上连接 Start,并且打开
Planar Reflection 把 Target 设定成 floor01 。
2.把镜像反射开关 2D Frame 对应 Switch On Parameter 的执行输出端 Out8、Out9
连接到 Planar Reflection 的执行输入端 On、Off,之后镜像反射开关也完成了,
按下 Play 试试吧。
自动旋转开关功能设定
1.剩下最后一个功能“自动回转”。虽然自动回转很简单,但是因为我们之前设
置了一个 Keyboard Camera Orbit(键盘控制摄影机环绕旋转)来操作摄影机。如
果我们直接设定自动回转,自动回转会因为 Keyboard Camera Orbit 的关系而失
效,所以我们的思考逻辑要变成,当我们点了自动回转开始的 2D Frame 后,首
先要关闭 Keyboard Camera Orbit 再开启自动回转;相反的,如果我们点击了自
动回转关闭的 2D Frame,会执行自动回转先关闭,再开 Keyboard Camera Orbit
来 恢 复 操 作 。 有 了 思 考 逻 辑 , 就 来 制 作 吧 ! 请 加 入 两 个
BB/Logics/Calculator/Identity(宣告)到 2D Frames/modify_skin 的 Script 上,并
且分别和 Switch On Parameter 的执行输出端 Out10、Out11 连接。
2.分别点击两个 Identity 的参数输入端 pIn0 ,并把数据类型从 Float 改成
Boolean,改好后打开 Out10 所连接的 Identity,把选项打“X”选取。
3.请 参 照 移 动 灯 光 的 BB 程 序 Lens Flare 或 镜 像 反 射 的 BB 程 序 Planar
Reflection 的方法,把这次要使用开关的 Keyboard Camera Orbit,从 Camera01
Script 移动到 2D Frames/modify_skin 的 Script 上连接 Start ,别忘了换 Script 后
要重新设定程序的内容,虽然麻烦,但是当做是练习吧,把 Keyboard Camera Orbit
打开,新的 Target 请设定为 Camera01,Target Referential(参照目标)设定为
evocar 车子角色对象,Move Speed(移动速度)设为 100,Return Speed(返回速
度)设为 0,Min Horizontal(最小水平旋转角度)设为-1 圈,Max Horizontal(最
大水平旋转角度)设为 1 圈,Min Vertical(最小垂直旋转角度)设为-30,Max
Vertical(最大垂直旋转角度)设为 15,Zoom Speed(缩放速度)设为 40,Zoom
Min(缩放最小值)设为-40,Zoom Max(缩放最大值)设为 10。
4.把 Keyboard Camera Orbit 拖到 Identity 后面,并且让 Out10 连接的有打 X 的
Identity 执行输出 Out,连接上 Keyboard Camera Orbit 的执行输入 Off;而 Out11
连接的另一个 Identity,执行输出 Out 请连接上 Keyboard Camera Orbit 的执行输
入 On。
5.设定好后,当我们按下自动回转开始的 2D Frame 时,虽然还是不会旋转,但
是已经能够关掉 Keyboard Camera Orbit 了。现在我们来设定自动回转,加入
BB/Logics/Streaming/Binary Switch(布尔转接) 到 2D Frames/modify_skin 的
Script,之后让 Binary Switch 的执行输入 In ,和 Out10 连接的打 X 的 Identity 执
行输出 Out,两个 Identity 的 pOut0 参数输出一起都连接到 Binary Switch 的参数,
注意!不是参数输入端,而是连到参数,之后打开 Binary Switch 把 Condition 框
框里的 X 取消掉。
6.加 入 BB/3D Transformations/Basic/Rotate Around ( 盘 旋 ) 和 BB/3D
Transformations/Constraint/Look At(注视)到 2D Frames/modify_skin 的 Script 上,
并且把 Binary Switch 的执行输出 True 连到 Rotate Around 的执行输入 In,Rotate
Around 的执行输出 Out 连到 Look At 的执行输入 In,而 Look At 的执行输出
Out ,连回 Binary Switch 的执行输入 In,做成一个循环。
7.打开 Rotate Around 和的 Look At 调整设定 ,把两个 BB 里的 Target(3D Entity)
都设给 Camera01,Referntial 都设给 evocar,而 Look At 的 Follow Speed(跟随
速度)调整成 100%。
8.自动回转功能就已经完成 99%了,可能读者还不太懂为何要这么做,我们就
来研究原理吧,当我们按下自动回转开始的 2D Frame ,Switch On Parameter 的
执行输出端 Out10 就会自动启动,之后经过打 X 的 Identity,该 Identity 因为有
打 X,所以是 Boolean 的 True ,当 True 传给 Binary Switch 时,Binary Switch
就会启动执行输出端 True,也因此启动了连接在后的 Rotate Around 和的 Look
At,而打 X 的 Identity 也会自动启动到 Keyboard Camera Orbit 的 Off,这就是之
前所思考到的路径,关 Keyboard Camera Orbit 再开 Rotate Around。而相反的按
下自动回转关闭的 2D Frame,Switch On Parameter 的执行输出端 Out11 会启动,
自后经过没 X 的 Identity,没 X 的 Identity 是 false,所以传给 Binary Switch 后,
只会开启执行输出端 False,则 True 会关闭,而 Binary Swtich 执行输出端 False
后面没有接程序,所以就不会执行任何动作,没有 X 的 Identity 启动时,也会启
动 Keyboard Camera Orbit 的 On,所以这就是全部自动回转功能的流程。
9.但是为何都如此完整了还是 99%?其实是因为参数信息交换时的一个小
BUG!请现在按下 Play 尝试,虽然自动回转功能的开和关都能用了,但是当自
动回转功能是关的状态下,如果先用 Keyboard Camera Orbit 的键盘来移动视角,
再马上启动自动回转功能为开,此时会发现失灵了!因为 Keyboard Camera Orbit
有一个缺点,当使用者已经按过键盘使用 Keyboard Camera Orbit 来操作摄影机
后,再马上启动 Keyboard Camera Orbit 的 Off 就会失灵,除非再使用一次 On 来
使 Keyboard Camera Orbit 回到初始化,之后才能顺利 Off。
10.因为上述原因,请连接 Keyboard Camera Orbit 的 On,到 Switch On Parameter
的执行输出端 Out10。这样的话,当每次点击自动回转开始的 2D Frame,Keyboard
Camera Orbit 就会先开启 On 来初始化,之后经过打 X 的 Identity,才会启动 Off,
这样就能顺利关闭 Keyboard Camera Orbit,请按 Play 来试试 100%的自动回转功
能吧!
11.如此四种功能都设定完了!因为这阶段的观念比较多又复杂,所以希望读者
能联系,这些观念在往后的学习中是很重要的。
背景图片与文字制作
1.请先载入 VTrsc2/Textures/ 来准备背景图案的 Texture 纹理,
再加入 BB/World Environments/Background/Set Background Image(设定背景图
像)到 2D Frames/modify_skin 的 Script 上,并且连接 Start 。打开 Set Background
Image 后,选择刚刚加载进来的纹理 ,按下 Play 就有背景了。
2.再来就是让上方我们制造的 2D Frame 功能菜单显示出文字来,让人了解功能
是 什 么 。 首 先 加 入 BB/Interface/Text/Text Display ( 文 本 显 示 ) 到 2D
Frames/modify_skin 的 Script 上并且连接 ,打开 Text Display 后任意输入要显示
的坐标、颜色、方式、大小和文字,以 2D Frame 的颜色功能菜单为例,如要在
颜色功能菜单的 2D Frame 周围显示出文字 ,就要把里面的设定设成 Offset(坐
标)X:60 Y:30、Color(颜色)R:255 G:255 B:255 、Alignment(排列方式)
Left、 Size(大小)10、Text(文字)Car Color 。
3.接着请当做练习,再加入三个 Text Display,给其他三个功能 2D Frame 填上
文字吧,三个功能名称分别是 LIght、Reflection、Auto_Rotate,也请调整它们的
文字坐标,使其 2D Frame 对应到该文字。
4、每个人在制作的时候,会根据喜好调整窗口,因此窗口多少都不同,所以文
字坐标都会有所出入,建议点击三维布局中视图下拉菜单右侧的“一般设置”按钮,
在弹出的一般设置窗口中根据需要调整窗口大小,依此显示文字,才能比较计算
好坐标。
作品发布在网页中浏览
Virtools 做出的商业样品,能直接变成网页格式,让商业样品自由的在网络
世界中展示。
1.请点击上方的菜单 File ,之后再点击 Create Web Page ,就能转成网页格式
菜单。
2.调整存放的数据资源库和输入的窗口尺寸后,按 OK 就制作完成了,请开启
制作完成的网页来观看结果,最后如果还有不明白的可以开启 汽车展示.cmo 范
例文件来参考。