项目三:基于vizard软件的VR游戏开发
【知识点笔记】
1.了解 Vizard 的所有模块内容:
参阅 Vizard 命令索引(help>Introdution>welcome>Command index )
2.各个模块主要功能范围:
viz:核心模块,用于控制图形绘制状态、人机交互等。
vizact:动作处理。
vizmenu:菜单模块。
spi:用于显示全景图的模块。
videovision:用于实现增强现实和混合现实的模块。
vizcapture:用于获取屏幕缓存的模块。
vizcave:用于CAVE显示的模块。
vizinfo:用于组织二维图形用户界面(GUI)的模块。
vizjoy:用于访问游戏杆等交互设备的模块。
vizmat:用于矩阵操作等数学运算的模块。
viznet:用于建立客户端/服务器(C/S)结构的网络虚拟现实程序的模块。
viztask:用于建立串行逻辑子程序的模块。
3.基本语法操作:
对象名=object.command()
#object必须是模块(.py)里有的,没有的话要导入模块。
4.setEuler(朝向)、setPosition(位置)(左右,上下,前后)
#实现对人物的随时间自主运动
import math
import time
avatar.state(11)
def run_around():
newX = -math.cos(time.clock()) * 2.1
newZ = math.sin(time.clock()) * 2.2
avatar.setPosition([newX, 0, newZ], viz.ABS_PARENT )
avatar.setEuler( [time.clock()/math.pi*180,0,0], viz.ABS_PARENT )
vizact.ontimer(.01, run_around )
5.
viz.link(A,B) #把A、B两个对象连接
link.preTrans( [0,-1,.1 ]) #相对位置 (左右、上下、前后)
6.将人物视角设置为主视角:
#Link the view to the male's head.
head_bone = male.getBone( 'Bip01 Head' )
view_link = viz.link( head_bone, viz.MainView )
#Set the eyeheight at 0 (so the default
#eyeheight is not added to the data).
viz.eyeheight( 0 )
7.飞球操作:
def shoot_ball():
ball.reset()
ball.setPosition( [1,2,5])
ball.setVelocity([-2.8,.8,-15])
vizact.onkeydown(' ',shoot_ball )
8.第一视角:
#Add a subwindow and associated it
#with a viewpoint.
subwindow = viz.addWindow()
subview = viz.addView()
subwindow.setView( subview )
subwindow.setSize( .35,.35 )
subwindow.setPosition( .65,1)
subwindow.visible( viz.OFF )
#Link the subview to the position
#of the main view but put it up a distance.
subview_link = viz.link( viz.MainView, subview )
subview_link.setMask( viz.LINK_POS )
subview_link.setOffset( [0,8,0] )
subview.setEuler( [0, 90, 0 ])
#Link a dart to the main view.
dart = viz.add( 'art/dart.ive' )
dart.setScale( 2,2,2)
link = viz.link( viz.MainView, dart )
link.preTrans( [0,.15,0] )