项目三:基于vizard软件的VR游戏开发

                       项目三:基于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] )

9.yeild语句:

一个带有 yield 的函数就是一个 生成器(generator),每执行到一个 yield 语句就会中断,并返回一个迭代值,下次执行时从 yield 的下一个语句继续执行。继续执行用__next__()方法。看起来就好像一个函数在正常执行的过程中被 yield 中断了数次,每次中断都会通过 yield 返回当前的迭代值。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值