教你一招!「vizard」如何 用python写3D游戏

liftword2个月前 (05-20)技术文章20

vizard介绍

Vizard是一款虚拟现实开发平台软件,从开发至今已走过十个年头。它基于C/C++,运用新近OpenGL拓展模块开发出的高性能图形引擎。当运用Python语言执行开发时,Vizard同时自动将编写的程式转换为字节码抽象层(LAXMI),进而运行渲染核心。

vizard入门

加载人物、对象、背景

avatar = viz.addAvatar('xxx.cfg', pos=(0,0,0), euler=(0,0,0))

viz.add('xxx.osgb',pos=(0,0,0), euler=(0,0,0))

viz.addChild('xxx.obj',pos=(-4,0,7.5))

鸽子随机漫步

①利用. ()生成随机位置,调用. ()实现鸽子漫步

②利用. h()生成随机选择,随机更新鸽子的状态

③调用. ()实现随机时间的等待

④利用. ()实现上述动作序列

pigeon = viz.addAvatar('pigeon.cfg',pos=(2,0,5))

random_walk = vizact.walkTo(pos=[vizact.randfloat(1.5,2.5),0,vizact.randfloat(4.5,5.5)])

random_animation = vizact.method.state(vizact.choice([1,3],vizact.RANDOM))

random_wait = vizact.waittime(vizact.randfloat(2.0,8.0))

pigeon_idle = vizact.sequence( random_walk, random_animation, random_wait, viz.FOREVER)

pigeon.runAction(pigeon_idle)

人物谈话动作

def PersonTalk():

female = viz.addAvatar('vcc_female.cfg', pos=(1,0,8), euler=(-90,0,0))

male = viz.addAvatar('vcc_male2.cfg', pos=(0,0,8), euler=(90,0,0))

female.state(14)

male.state(4)

角色移动

①通过. () * 计算移动速度

②初始化欧拉矩阵1 = . . (0,0,0)

③通过. . ()分析对应鼠标事件,根据人物朝向. ()更 新1平移变换矩阵

④通过. (1. ())更新人物位置

⑤通过. . ()分析对应鼠标事件,设置对应人物动画:

前进、后退动画:. (2)

左跨步动画:. (12)

右跨步动画:. (13)

人物静止动画:. (1)

def roleMove():
	m1 = viz.Matrix.euler(0,0,0)
	dm = viz.getFrameElapsed() * speed
	temp=avatar.getEuler()[0]*math.pi/180	
	if viz.key.isDown('w'):
		m1.preTrans([dm*math.sin(temp),0,dm*math.cos(temp)])
		avatar.state(2)
	elif viz.key.isDown('s'):
		m1.preTrans([-dm*math.sin(temp),0,-dm*math.cos(temp)])
		avatar.state(2)
	elif viz.key.isDown('a'):
		m1.preTrans([-dm*0.3*math.cos(temp),0,dm*0.3*math.sin(temp)])
		avatar.state(12)
	elif viz.key.isDown('d'):
		m1.preTrans([dm*0.3*math.cos(temp),0,-dm*0.3*math.sin(temp)])
		avatar.state(13)
	else:
		avatar.state(1)
		
	avatar.setPosition(m1.getPosition(), viz.REL_PARENT)

获取鼠标位移

通过回调函数callback获取

def onMouseMove(e): 
    global mp_x,mp_y
    mp_x=e.dx
    mp_y=e.dy
viz.callback(viz.MOUSE_MOVE_EVENT,onMouseMove)

基于vizard实现的效果:

时钟显示当前系统的时间

两个谈话小人(带动画)

第三人称漫游(带动画)

前进(键盘 W 键)

后退(键盘 S 键)

左跨步(键盘 A 键)

右跨步(键盘 D 键)

旋转(使用鼠标左右平移)

上仰(使用鼠标上下平移)

其他三维物体/背景

鸽子做自由漫步

花瓶摆件

天空背景

草地背景

原文链接:
https://blog.csdn.net/weixin_45825073/article/details/122031933

相关文章

用Python写游戏,不到十分钟就学会了

安装pygame本人电脑是windows 10、python3.6,pygame下载地址:https://pypi.python.org/pypi/Pygame/1.9.3请自行下载对应python版...

Python入门小游戏之坦克大战,不懂编程都能做出来,附所有源码

谁说不懂python就不能用python开发小游戏?这份教程手把手教你用python开发坦克大战小游戏,不懂编程也能学会,只要照着教程做,不仅能做出这个小游戏,还能掌握很多python的基础知识哦。下...

Python如何入门?搭配这些游戏,学习高效还有趣

Python是最适合初学者的编程语言,相对其他语言来说,它有着更好的可读性,所以上手会更加容易。那么Python该如何入门呢? 很简单,首先请你放弃完全看书学基础的想法,因为过程太枯燥,对于我来说,完...

Python代码,可玩30多款童年游戏 有几个是你玩过的(附源码)

大游戏小游戏有千千万万,这些小游戏应该只有90后才玩过和懂吧儿童节即将到来,虽然秃头程序员没有头发,但是童心还是一直都在的,今天就分享一些私藏的童年游戏,十几行代码就能进入使用Python开发的小游戏...

Python基础资料分享:Pyglet游戏开发通用模板

一、Pyglet介绍Pyglet是一个轻量级的Python游戏库。之前我们发过一篇:Python Pyglet制作的简单模拟时钟程序源码。Pyglet的使用就像Flask一样,可以快速完成游戏的基本功...

用Python写一个五子棋小游戏

在这篇文章中,我将带你一步步实现一个简单的五子棋小游戏。我们将使用Python来编写游戏的逻辑,并在控制台中进行对弈。通过这个项目,你可以学习到如何使用Python处理二维数组、循环控制以及基本的游戏...