QUEST3D教程.docx
《QUEST3D教程.docx》由会员分享,可在线阅读,更多相关《QUEST3D教程.docx(47页珍藏版)》请在冰豆网上搜索。
QUEST3D教程
目录:
第一节:
Quest3d软件初步认识与虚拟现实技术了解
第二节:
从3DMaxt入模型与熟悉Quest3d界面
第三节:
实现第一个可漫游场景与理解Quest3d程序运行规律
第四节:
常用编程模块的学习(if‘trigger、switch)
第五节:
声音与视频的控制
第六节:
在Quest3d中实现动画
第七节:
在Quest3d中制作GUI(操作界面)
第八节:
模型加载控制、变量的操作与系统函数调用
第九节:
特效的实现(实时阴影、实时反射、粒子系统……)
第十节:
制作一个完整的虚拟现实项目与合理构架项目框架
第十一节:
高级编程方法学习(LUA语言的运用、OOS程方法学习)
第十二节:
动力学模块学习
第十三节:
对VR硬件的支持
第十四节:
网路模块学习与多软件的嵌套开发项目
第十五节:
Quest3d的SDQ习
第一节Quest3d软件初步认识与虚拟现实技术了解:
软件简介:
软件是由荷兰的Act3D公司在1998年研发出来的专门从事虚拟现实方面的应用软件,软件有丰富的功能模块,可以实现模块化、图像化编程,不需要我们去书写代码就能够制作功能强大和画面效果绚丽的VR项目。
软件有很好
的开放性,我们可以在3DMax或Maya中完成建模、材质、动画和烘焙渲染然后导入到Quest3D,可以跟大量的VR硬件很好的连接,还可以用软件提供的SDK来开发新的功能模块和整合新的硬件设备。
认识界面:
Quest3D主要分了三大功能区(模块区、动画区、物体区),每个功能区都是我们虚拟现实项目制作过程的关键环节。
1、模块区:
模块区是Quest3D的心脏,在这里我们可以运用Quest3D提供的各种功能模块组建我们想要的功能和牛I效,模块区又分了3个功能区域,如图所示:
1区域内存放
着QUEST3D为用户提供的全部功能模块,我们可以根据自己的需求任意调用各种功能模块。
2区域为模块编辑区,我们调用各种功能模块在这里组建我们想要的功能。
3为小预览窗口和工程组列表。
2、动画区:
三维空间的物体都有自身的坐标,我们想要对物体进行位置移动、旋转和缩放,或者是要编辑一段动画,这些都可以在动画区内进行。
如图所示:
1区域我们可以在此选择将要编辑的物体或灯光、相机;2区域我们可以
在此对选中的物体进行移动、旋转、缩放操作;3区域为动画编辑和控制区;
4为大预览窗口。
3、物体区:
物体的表面属性如色彩、材质可以在这里进行精细调整。
1区域能
对物体的表面属性进行调节如:
固有色、透明度、贴图属性等;2用于选中
要调节的物体;3贴图存放区,我们载入的贴图和运用的贴图都存放在这里;
4预览窗口,在这里能实时看到我们调节后的效果。
❾,-IriH|i«Jt?
rrly-fiijj;■..#Hr归浦叫上■hi\I-11.TIIHII
作品欣赏与VR的概念:
上面我们对Quest3D软件有个基本的认识后我们可以欣赏一下用这个软件制作
的作品,我们可以通过作品了解到Quest3D这个软件有那些强大的功能,同时我们也对虚拟现实这项新的技术有个较准确的认识。
虚拟现实的概念:
虚拟现实(VirtualReality,简称VR;又译作灵境、仿真),虚拟现实是利用电脑模拟产生一个三维空间的虚拟世界,让使用者如同身临其境一般,可以实时地观察三度空间内的事物并与之交互。
我们能够通过视觉、听觉、
触觉、嗅觉,以及形体、手势或口令,参与到信息处理的环境中去,从而取得身临其境的体验,虚拟现实有三大特性(沉浸性、交互性和构想性)。
虚拟现实技术在国内的发展现状:
近几年国内虚拟现实技术有着飞速的发展,各行各业都在运用虚拟现实技术服务于自身的行业。
虚拟现实技术的特性就注定了运用的广阔性,我们将通过一些实际的作品来展示虚拟现实技术在各行业的运用
(建筑与规划领域、工业设计领域、3D网络、展览展示等)。
第二节:
从3DMaxt入模型与熟悉Quest3d界面
1、从3DMaX俞出.X格式模型文件到Quest3d
先把输出插件画9r*式*陵如叱血.小拷贝到3口乂通安装目录下的stdplugs文件
夹内,在3DmaX勺File菜单点击Export选择PandaDirectX(.X)格式输出,弹出输出设置如下图所示:
2、导入.X格式的模型文件到Quest3D的设置面版如下图所示:
KLoadoplicnsforfile:
222,K
XImpcrttype
片Rattenhierarchyirnpat
LoadingTppe
.Loadassingleobject
厂CeriterModel
pScalemulliplier
,LmcI日*inde)cedcharacter
OprtorE
VU56difhereritramirigconvention(car瓜animatioriframes]
FlipYZ(foraiderMAXewporter)
「FlipXaxis(foi
—Loadtextilesfrom$aniefolderasXfile(ignorestoredtenurefilepaths]
Hlerarchyimport
Usefileselectlorunkundtextures
Cancel
3、模型导入Quest3D后在模块区和物体区的显示如下图所示:
®Ife即.■i,1・1即外,71CJdJ3471
如上两图我们可以看到一个物体导入Quest3D后的存在状态。
在模块区如图可以看到一个完整的物体是以不同的功能模块和可变参数存在。
®
储存着物体的矩阵信息(包括位置、旋转、缩放);(2储存着物体顶点和面片信
息;0)储存着物体的颜色、明暗、透明度信息;。
4物体所调用的贴图。
在物体区如图我们可以直观的看到导入的物体,并且可以直接调节物体的表面属性,而调节后的参数和贴图变化也在模块区对应的模块看到。
d可以调节物体的颜色、明暗、透明度,还可以在TextureStages内调节贴图坐标和贴图混合;②这里可以导入更多的贴图到Quest3D,并选择物体白表面贴图;。
3当导入物体太多时,在这里选择要调节的物体。
当导入的.X模型一切调节都完成后就可以保存为CG略式的文件了。
2、熟悉Quest3D软件操作界面和操作技巧。
菜单与快捷按纽:
File文件菜单提供了加载、保存等选项及发布Quest3D的设计制作。
注意:
SaveGroupAs'选项用于把单个模组保存为一个新的文件。
'SaveGroup'用于覆盖当前正在编辑的文件。
而‘SaveAll'选项用于保存您的整个项目。
菜单内常用的选项都有对应的快捷按扭如下图所视。
■Qu的C3D3.0¥REdition—BiqChannel-
FileElionsSections
H咖
NewProject,mOpenProject.
Ctrl+N
Qrl+0
1
Import...
ImportPolytrans
Qrl+I
IWGroup..
5a脂后口卬Ctrl+S
SaveGro叩As...
SaveAlCtrl+Shtft+S
Publish.,,
RecentChannelGfolf口(s)
Exit
1
口一hH小邙
Sectionnavigation分区导航,想要进入Quest3D的不同分区有许多方法,可以使用应用菜单或工具栏中的快捷按钮或快捷键。
通常使用快捷按纽或快捷键最为高效。
口Quest3PPoverEdition4F2.2
在模块区快速选择和缩放的快捷按钮可以提高我们的操作效率。
在制作时要合理
切换运行、编辑和运行/编辑状态。
模块编辑区:
如上图示所标注的界面按钮是最为常用的,我们将依次介绍其功能和使用方法。
©templates这里有Quest3D软件为我们组建好的各种功能模板,并按运用类型为我们分了类,方便我们快速调用。
比如你想要为场景加一个相机,而在模板组内就有一个相机组,在相机组内又分有3D查看相机、步行相机、标准相机等,我们可以根据自己的需要拖入一个相机连接在渲染模块上即可。
②channels这里有有Quest3D为用户提供的所以模块,也是实现可视化编程的最小的单位,每一个模块都有它独有的用途,我们可以通过组合不同的模块来构架一个庞大项目。
⑦preview这里用于实时预览我们做的项目,当还没有正式发布前我们只能通过在这里查看效果和测试功能,在这里看到的画面效果交互功能基本上跟发布后是一样的0
©projecttree完成一个项目往往不是只用一个工程组能够完成,比如我们要
制作一个普通的建筑虚拟浏览项目,我们首先要制作一个UI和功能模组,同时
还要用到大量的3D模型(建筑、树、天空等),因此我们就要根据类型和功能分类成很多个工程组存放在不同文件夹内,当这些被分解的工程组被载入时我们在这里就能清晰的看到每个工程组和名字,这样就能够很方便的进入某个工程组进行编辑。
⑤search一个完成的项目会用到大量的模块,当项目变得很庞大时我们会不记得有的模块用在了什么地方,这时我们就可以进入这里启用搜索功能快速找到这个模块。
⑥channelgraph模块编辑区,在这里运用各种模块编辑功能和特效,完成一个项目我们大多时间都会在这个编辑区。
⑦OOeditor这是Quest3D4.0后新加的一个功能,新加的这个功能主要是加入了一种面向对象的编程方式,我们可以为拥有不同功能的工程组定义接口,各工程组之间只要调用接口就即可,这样有助于提高开发项目效率。
动画编辑区:
动画编辑区只要分四个操作区:
1、类型操作物体选择区;2、矩阵参数操作区;
3、动画录制与测试区;4、物体直接图示操作区。
1、类型操作物体选择区:
这里可以选择要调节的模型、相机或灯光,选中后可以在2区间内直接调节矩阵,也可以在4区间内可视化用操作杆调节。
|e&
Mm
:
1)
AlZhannd白pl*j
。
乖h
Chsnrielgroi
・3DT一口匕即上
SfrarlGroup
■Q0h~l
orh-1
・3卸配
SidriGruv
Fro
OFF]「ON
[Foglipc
Lim0ir=
IFogCto*
T~
|FluEnd
7T
1Fcg匚口lor
ZoamFact口i
1
Cdiiieid
CbidrinBlijiiu
工嚏口jHc;Caners
Gtartfjfoup
IinMt卬e
Dr
|Pninr0nH.
,喧此出蚓
一
FdlolCaubnt
FalbtfUreas
-I0
FTdlh,fCqjan
0
Seal*
rf]0
XmdG口口团-2jgS427l5
1/pMilion司□
Trm^iiinr回2脚的3
OtpehCrnET5]Ltrflt?
I$ldfar$
LaT^-aa
Ob|ect3|Caneras旧村限D(dere
我们进入模型、相机或灯光区域后如上图所示:
当项目很大时会用到大量的3D
模型,我们可以根据名字选择要调节的3D物体;项目较大时也会用到不同的相机,我们可以选择相机。
还可以开启相机的雾效功能,可以调节雾效开始的距离和结束的距离和颜色;灯光项可以选择3种灯光类型和调节灯光颜色。
在quest3d中可以在这里制作动画,也可以从别的动画软件制作好动画导入进来,当一个项目有很多个动画时要合理命名,可以在左侧下拉菜单中选择不同的
动画查看。
也可以选择一个物体在此录制动画。
物体编辑区:
O*赤I■汁*K'iih♦如fMjiui0b制01fgIfelJSOl
上图所示是进入物体编辑区时的总画面,下面我们将对物体编辑区作更详细的介
〕J.Ld值序明
Properties|SurFaea11T•加闻Vtagas|
Materialptoperhes
口HIU加
1
|o.4082
|口亏防"14
4
I
J—
U»UU-J/、
0.713J
Emissive
—J
—d
J
卜
r
—
1
0.3962]
Q3962],超阳
Socculof
1
r
21
-=
—F"
J*
——[o-
一11
物体固有色
物体自发光(将物体亮度调至最亮时灯光对物体不能产生作用)物体的高光
SpoculorFtowor
——IIn1
r.
」w21*
Alchs
maiw
J1。
A
TAwhm玲fArtnr
±—1。
21
1
PSm;facevisible
高光强度
SmteCGTRii,qInf尸.I
rMcrrinc
透明混合模式
|NQiTrErspaemy
ZbutfM
buffer功能
Jaxlv^rieed
5pp±tpi|匚01yl
通道贴图裁切
“以丽[
选岸贴阴£级
士ii「_L_,
选择贴图遵道
选抨鹿闻轴向
调行港企模式
点击此可以进入详细调节窗口
我人的如图/这帆能石到了
选择「程31
点击这里我入图片
|“山阳Xdy?
1
T-4.已匚1卸riEijiuup
P.Vt4wlml*Tr*wk',怙5;
4Hh仃RhrHg焦二川旭|5HWl
Pl口pwli日SutnKC:
CbKkZtulfqWniQZbrfloi
Cho乐Mb才7WntoZcultor
1ertJ5LxzoldrialKs
广Na5诉「1Sei2Seis门
[INV5RCALFH.LEndblec
M>T6=4UI€
rsT,m」|!
七
iJo‘me
rJaTedj
hl>JHull■
|[HatElhndMRrkNrEI-
^ylTE・l
UpklJbULAR
r]
小包DEFUSE
T
广Wi^jLIWlapU,k43Hngj
同phaBencrqAdvanced]
1
AM
TENURE
zi
°p
EELECWST
_d
rixT旧e
▼I
第三节:
实现第一个可漫游场景与理解Quest3d程序运行规律
Quest3d制作项目的
这一节我们将通过制作一个可漫游场景来进一步学习运用流程和方法,理解quest3d的运行规律。
4旭日中3,P*wtJifMl
5-:
'rf1ii-r!
C],M^rh
H网Til
■地LdiLil
UMlj-drtsrtfka.."i-I
i。
mia-
制作项目一定要学会合理构架,比如:
命名的规范、工程组的分工、功能分块等。
当一个项目完成一定要很整洁,这是提高项目开发效率的方法,也方便以后的修改。
如上图:
我们首先建立了一个主工程组,将把渲染结构和主要功能结构制作在这个工程组里,所有的模型文件我们都存放在同一个文件夹内让主工程组调用进行渲染。
项目构架也没有固定的方式和方法,但程序一定要高效运行并保持程序结构的整洁。
参照下图来分析
下面我们把模型加入渲染结构并加入步行相机以实现虚拟漫游,一下QUEST3腥序的运行规律。
Quest3d模块编辑有点像小时候的堆积木,每个积木块都有着特定摆放的位置和特定的用途,只要按规律组合将能组建成完美的大厦。
Quest3d所拥有的模块也
都有着自身特定的功能,并且要按照一定的规律连接和组合。
如上图是建立一个简单漫游场景基本框架,我们对此作分解学习。
如上图是对quest3d的运行顺序作的解释,记住quest3d是自上而下、自左向右的基本运行规律,理解运行规律很重要,在以后制作大型项目,有多个渲染模块和相机,并有大量渲染物体,这时合理安排渲染顺序就很重要。
当模型都载入并搭建好渲染结构后显示出的3D画面如下图:
模块间连接必须要属性匹配,如下图所示,当鼠标停留在模块上时会显示此模块的属性,停留在连接框顶部时连接框成橙色后,按住鼠标左键从‘Value'模块开始拉向另一个模块连接框。
此时所有的连接框颜色都改变成红色或绿色。
但只能连接绿色连接框,而不能连接红色的连接框。
各模块定义的接口都有其特定的属性,与之连接的模块也必须属性统
第四节:
常用编程模块的学习(if‘trigger、switch)
掌握常用的编程模块是运用quest3d制作项目的基础,下面对这些常用的编程模块做详细的讲解。
®if(逻辑判断)
左边第一个接口是条件判断,当其数值>=1时条件为真,右边连接的一切模块将被持续运行。
②Value(数值)
数值模块储存整型或浮点型数值,可以把它当作是一个储存空间,里面储存的数值可以被更改也可以被提取。
©Trigger(触发)
左边第一个接口是条件判断,当条件为真时,右边连接的一切模块将被运行一次,双击Trigger模块会弹出下图界面,可以在此设置判断条件。
TricgerFroperties
PfopertiesG&nerM|Croup|Feedback!
CTriggeionvaluecJharige①
-'Triggeionvelueincrease'2.i
Iriggeionvaluedeciease:
-il111^11■i■—1111Ihai1111.H11|
"iu的更如理w区也j④
Dir#et»H0pticws
8olh•LowtohighHighlotow
⑤ffi)m
Triggeratp
IriggerMthvaluea;delavhewr-Triggerontimestampchange
OK
①当选这项时,连接左边第一个模块的值只要发生一次变化,右边连接的所有模块将被执行一次。
②当选这项时,连接左边第一个模块的值增大一次,右边连接的所有模块将被执行一次。
③当选这项时,连接左边第一个模块的值减小一次,右边连接的所有模块将被执行一次。
④这是quest3d的默认项,可以根据值的变化趋向来判断触发。
当选6时表示当写入的值从=0趋向>0变化时条件为真;当选。
时表示写入的值从>0趋向=0变化时条件为真;选⑤时两种情况有其一满足时就为真,右边连接的所有模块将被执行一次。
©Userinput(用户输入)
人与计算机的交互必须要依托外部输入设备,Userinput就是用于实现交互功能的输入模块。
Properties'GeneralGroupFeedback\
PConvertkeyforlanguagesetting?
如上图,可以选择与之交互的硬件设备,①为键盘输入,可以用键盘上任何一个按键作输入控制,出现C3)画面时可以点击键盘上的某一个按键,这样就能实现了键盘输入了。
C2为鼠标输入(可以获取鼠标点击、鼠标坐标等);G)为组合按键输入(比如ctri+f);0操作杆输入(比如手柄、方向盘等设备);⑤键盘输入
(与(1的区别在于它不用指定按键)。
(5SetValue(赋值)
执行这个模块可以把左边第一个接口的数值赋给右边连接的所有模块。
④ChannelCaller(呼叫模块)
顾名思义,ChannelCallers模块只是简单地呼叫与它们连接的模块,任何类型的模块都能与之连接,并顺利被呼叫。
ChannelCallers模块可被看作是一个
分流器。
②IfElse(判断)
IfElse左边第一个接口是条件判断,当其数值>=1时条件为真,第二个接口连接的模块将被持续运行。
否则将运行第三个接口连接的模块将被持续运行。
③ExpressionValue(表达式)
在Quest3D中可以使用ExpressionValue模块描述数学公式。
它就像是一个高级计算器,也可以调用一些常用函数。
可以作复杂的数学运算还可以作逻辑判断,上图的作用就是一个逻辑判断,当第一个接口连接的模块数值等于5时就输出一
个1的值。
更多的运用可以查看软件提供的帮助文档。
一个ExpressionValue模块的实际值等于该模块内部公式的结果。
该结果在属性窗口的‘CurrentValue'项下也有显示。
与ExpressionValue模块的子连接相连值也可用作模块内部的部分公式。
第个子连接用字母'A'表示,第一个子连接用字母'B'表示,等等。
卜面的例子示范了SetValue,ExpressionValue和Value模块的常用组合。
1,被加入‘Value'模块。
在上图中,如果'A==1&&B==2则条件被满足,该公式应被解读为“如果A等于1,以及B等于2”。
不限。
一个ChannelSwitches模块必须首先设置为与其子模块相同的基本类型。
可以根据第一个接口的数值选择运行右边连接的模块:
一个‘0'值的结果是第
一个变量被使用。
而值’1'为第二个被使用,往右依次加’1'。
II
©SetText(设置文本)
运行这个模块可以把左边Text模块内的文字赋给右边的Text模块。
Envelopes(设置文本)
Envelopes在动画方面能发挥重要作用,也还有其它更多的用途。
一个Envelope模块中的图表是一个二维函数。
可以在图表中插入一些坐标点,而Quest3D会在它们之间进行插补。
上图中的Envelope图表呈现的公式为‘y=x2'。
通过Envelope就可以将一个数值转换成另一个数值。
换言之,Envelope就是用来描述两个值之间的关系。
人物的动作混合设置可以基于行走速度进行处理。
上图中的图表依比例确定了
‘0'和'5.0'之间速度输入值和‘0'至U'1.0'之间的合成输出值。
该图
表是非线性的。
Envelopes也可以用来限制一个值的范围
上面的图表将输入值的输出值限制在’-1‘和'1'之间。
第五节:
声音与视频的控制
Quest3d支持多种声音和视频格式,并提供了很好的播放控制模块。
下面我们将
通过一个小实例来学习在Quest3d中声音与视频的控制。
如下图:
先建立一个小的3D场景,我们将在这个场景中加入视频、背景音乐和3D音效,并实现操作控制。