【vizard】用python写3D游戏

【vizard】用python写3D游戏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),e

大家好,又见面了,我是你们的朋友全栈君。

vizard介绍

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

vizard入门

  1. 加载人物、对象、背景

    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))
    
  2. 鸽子随机漫步

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

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

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

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

    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)
    
  3. 人物谈话动作

    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)
    
  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)
    
  5. 获取鼠标位移

    通过回调函数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实现的效果:

  1. 时钟显示当前系统时间
  2. 两个谈话小人(带动画)
  3. 第三人称漫游(带动画)
    1. 前进(键盘 W 键)
    2. 后退(键盘 S 键)
    3. 左跨步(键盘 A 键)
    4. 右跨步(键盘 D 键)
    5. 旋转(使用鼠标左右平移)
    6. 上仰(使用鼠标上下平移)
  4. 其他三维物体/背景
    1. 鸽子做自由漫步
    2. 花瓶摆件
    3. 天空背景
    4. 草地背景

0909-1

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141501.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • Pytorch深度学习实战教程:UNet模型训练

    Pytorch深度学习实战教程:UNet模型训练1前言本文属于Pytorch深度学习语义分割系列教程。该系列文章的内容有:Pytorch的基本使用语义分割算法讲解由于微信不允许外部链接,你需要点击页尾左下角的“阅读原文”,才能访…

    2022年6月19日
  • vue axios跨域请求_vue跨域访问

    vue axios跨域请求_vue跨域访问vue中axios跨域请求1.axios是第三方库使用方法:使用npm:$npminstallaxios使用bower:$bowerinstallaxios使用cdn:<scriptsrc=”https://unpkg.com/axios/dist/axios.min.js”></script>axios…

    2022年9月12日
  • C语言十字相乘法_三次方十字相乘法

    C语言十字相乘法_三次方十字相乘法视频地址十字相乘法视频教程//初学C语言第2天,2小时写了一个简单的穷举法。#include<stdio.h>#include<math.h>intmain(){ intX=50;//自然数 floata,b,c; a=2;//二次项系数 b=5;//一次项系数 c=-3;//常数项 floata1,a2,a3,a4,…

    2022年11月2日
  • Python 实现毫秒级淘宝抢购脚本

    Python 实现毫秒级淘宝抢购脚本本篇文章主要介绍了Python通过selenium实现毫秒级自动抢购的示例代码,通过扫码登录即可自动完成一系列操作,抢购时间精确至毫秒,可抢加购物车等待时间结算的,也可以抢聚划算的商品。博主不提供任何服务器端程序,也不提供任何收费抢购软件。该文章仅作为学习selenium框架的一个示例代码。该思路可运用到其他任何网站,京东,天猫,淘宝均可使用,且不属于外挂或者软件之类,只属于一个自动化点击工…

    2022年4月28日
  • pycharm快速调整格式_pycharm自带python吗

    pycharm快速调整格式_pycharm自带python吗代码自动填充了空格问题在使用pycharm的代码编辑器时,常常懒得写空格,如下图,但这是不符合代码规范的,而且也会影响可读性。解决方法pycharm有自动调整代码格式的快捷键,默认为alt+ctrl+l,按下快捷键后,代码自动填充了空格。自动对齐代码问题在使用pycharm的代码编辑器时,有点时候copy的代码的没有按照代码格式对齐,如下图,但这是不符合代码规范的,而且也会影响可读性。解决方法py…

    2022年8月25日
  • python recvfrom函数详解_UDP sendto和recvfrom使用详解「建议收藏」

    python recvfrom函数详解_UDP sendto和recvfrom使用详解「建议收藏」在网络编程中,UDP运用非常广泛。很多网络协议是基于UDP来实现的,如SNMP等。大家常常用到的局域网文件传输软件飞鸽传书也是基于UDP实现的。本篇文章跟大家分享linux下UDP的使用和实现,主要介绍下sendto()和recvfrom()两个函数的使用,以及INADDR_ANY的说明,并在最后展示了一个经过自己测试可用的UDPServer和UDPClient的代码示例。头文件#inclu…

    2022年7月23日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号