panda3d虚幻引擎--(1)

2023-11-11

目录

前言(阿巴阿巴)

安装

调整窗口

导入环境


前言(阿巴阿巴)

前几天无意间看到了一个叫做panda3d的东西,觉得挺好玩,就翻教程,发现现在中文教程似乎没有那么全面成体系,大部分都是复制粘贴过来官网的实例然后就发布出去了,看得云里雾里的,所以我决定自己去摸索一下这个panda3d,学panda3d的小伙伴中间肯定遇到过很多坑,也有过很多不理解的地方,不过没关系,来瞅瞅我的这个panda3d教程,给你个比较全面的讲解。

我整了个QQ群,180962166,有不会的进来问就行(如果我会的话)

好了,正式开始。

安装

想要用这个panda3d呢可以通过官网sdk下载或者通过pip命令安装,官网地址Panda3D | Open Source Framework for 3D Rendering & Games

 

安装sdk就点击中间那个按钮就行,很简单对吧,不过我用的是另一种方式,pip安装

命令pip install Panda3D , pip install panda3d 这俩都行,都能安装下来。

然后新建一个文件夹起名叫ch1(名字无所谓),然后新建一个game.py(名字随便起)的文件

大概是这个样子 

调整窗口

下面直接贴代码块,讲解的内容也在代码块里(贴代码块省事,省的编辑格式了)


#第一步导入,导入这个叫做ShowBase的类,它是一个panda3d的基础类,用来创建窗口的
from direct.showbase.ShowBase import ShowBase
#然后定义一个Game类,继承上面导入的ShowBase类,然后就是Game类init,showBase类init,没啥好说的
class Game(ShowBase):
    def __init__(self):
        ShowBase.__init__(self)

#实例化一下这个Game类
game = Game()
#ShowBase类里有一个run方法,启动窗口用的,这里Game也继承了ShowBase,所以直接game.run()
game.run()

 运行之后发现出现了一个灰色窗口,窗口里没有任何东西(实际上,你根本没写东西,显示出其他东西的话才见鬼了)

好了,如果你运行出来上面窗口了,恭喜你,你的环境没有任何问题,可以继续往下进行了。

我觉得这个窗口有点小,我想调成我想要的


#第一步导入,导入这个叫做ShowBase的类,它是一个panda3d的基础类,用来创建窗口的
from direct.showbase.ShowBase import ShowBase

#############################################################
导入一个叫做WindowProperties的东西,它可以帮你解决窗口大小问题
from panda3d.core import WindowProperties
#############################################################




#然后定义一个Game类,继承上面导入的ShowBase类,然后就是Game类init,showBase类init,没啥好说的
class Game(ShowBase):
    def __init__(self):
        ShowBase.__init__(self)

        ##############################################################
        properties = WindowProperties()
        第一个是长,第二个是宽
        properties.setSize(1000,750)
        给刚才的配置应用到窗口里
        self.win.requestProperties(properties)
        ##############################################################

#实例化一下这个Game类
game = Game()
#ShowBase类里有一个run方法,启动窗口用的,这里Game也继承了ShowBase,所以直接game.run()
game.run()

运行,然后你就会发现窗口变大了

 后面代码多了之后可能会变混乱,我把每一次出现的新代码用#框起来,#里出现的代码就是新加入的代码,这样看起来会比较容易点,当然如果各位观众老爷觉得这样看起来让你很不爽的话,评论区里告诉我,我改成其他方式。

导入环境

代码能跑了吗?能,但是只跑了一点点,空洞的一个灰窗口没啥意思,我给它加点背景,导入环境,让它没那么无趣。环境文件在QQ群里,群号博客开头有。

from direct.showbase.ShowBase import ShowBase
from panda3d.core import WindowProperties

#############################################
导入一个叫做Actor的类,它是用来加载模型的
from direct.actor.Actor import Actor
#############################################


class Game(ShowBase):
    def __init__(self):
        ShowBase.__init__(self)
        properties = WindowProperties()
        properties.setSize(1000,750)
        self.win.requestProperties(properties)

        ##########################################################################
        #panda3d提供了很多全局对象,这里的loader就是其中之一,用loader的loadModel方法可以把
        #环境文件导入到Game类里,environment不用写后缀,panda3d会自动帮你检测
        self.environment = self.loader.loadModel('Environment/environment')
        把self.environment定向到父节点下,self.render就是一个父节点,下面讲节点
        self.environment.reparentTo(self.render)
        ##########################################################################


game = Game()
game.run()

运行之后,环境模型被成功加载

 

上面提到了一个节点,这个节点是啥呢(了解即可)

这就是一个节点图,每个节点是一个对象,最上面的节点是所有类的父类 ,我们用到的全局对象render是一个Node,我们的Game也是一个Node,Game继承的父类ShowBase类也是一个Node,也就是说其实Panda3d里的东西都是Node形式的。

大概第一节课就讲这么多叭,跟着上面的代码跑一下,没问题的话咱们就继续下一讲了。观众老爷们下节见^-^

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

panda3d虚幻引擎--(1) 的相关文章

  • unity打包后无法读取Excel解决方法

    一 前言 最近几乎遇到了所有能遇到的unity读取Excel 的问题 因为使用的是unity5 4 而且还是32位 所以出现各种问题在所难免 废话不多说 现有的现象是 在unity的编辑器里可以完美运行 读取Excel不成问题 但是打包成e
  • Unity基础知识及一些基本API的使用

    Unity基础知识及一些基本API的使用 1 Unity界面介绍 Unity的默认Editor窗口主要呈现为以上布局 它们分别为 1 工具栏 工具栏提供最基本的工作功能 左侧的按钮用于访问 Unity Collaborate Unity 云
  • unity制作血条

    unity制作血条 在hierarchy中create gt UI gt image 重命名为border 将血条框拖入Source Image Set Native Size 防止变形 在Canvas下create empty 命名为He
  • Unity --- 文本的使用

    1 先讲讲legacy 旧版 的文本text 在一个画布上创建一个文本 这个文本也是一个游戏物体 且是画布的子物体 上面这个就是文本的inspector界面 在字体参数处我们可以点开框框选择新的字体资源 前提是我们有导入这个字体资源 行间距
  • Unity+Pico 手柄按键控制

    一 定义手柄按键API 1 InputDevices GetDeviceAtXRNode 通过XRNode获取对应的设备 2 XRNode是一个枚举类型 包含LeftEye RightEye CenterEye Head LeftHand
  • Cocos Creator 如何处理物理和碰撞检测?

    Cocos Creator 如何处理物理和碰撞检测 cocos creator 版本 v3 6 1 Cocos Creator 3 x 实现碰撞检测 Cocos Creator 通过使用物理引擎来处理物理和碰撞检测 Cocos Creato
  • Unity --- Vector3类的API讲解

    1 Vector3中的静态变量是相对于世界坐标系的还是相对于自身坐标系呢 我们创建的Vector3类对象同理 答 这取决我们将创建的Vector3类对象 通过Vector3调用的静态变量传给了哪一个引用 如果是传给了positon的话 则该
  • PicoNeo3开发VR——小白教程

    不断更新中 欢迎大佬们来指导 纠错 导入PicoVRSDK 1 新创一个Unity工程 Unity版本最好选择2019 4以上版本 以及需配置好安卓环境 然后导入官方picoVRSDK 2 渲染设置 Graphics APIs暂不支持Vul
  • Unity卡死情况

    今天遇到了Unity点击播放后卡死 用任务管理器强行关闭后重开 打不开项目的情况 解决方案 检查USB接口设备 有些设备可能会影响Unity工程启动 比如VR头盔
  • 跨平台游戏引擎 Axmol-2.0.0 正式发布

    下载 https github com axmolengine axmol releases tag v2 0 0 更新日志 添加实验性的 WebAssembly 构建支持 WebGL 2 0 由 nowasm 贡献 已知问题 WebGL
  • UE4(Unreal Engine4)在蒙太奇动画中添加音频轨道通知

    UE4系列文章目录 文章目录 UE4系列文章目录 前言 一 遇到的问题 二 操作步骤 前言 UE4 Unreal Engine4 在蒙太奇动画中添加音频轨道通知 我们想在某一帧动画中添加声音 比如我们想在动画的第13帧这里添加音效 一 遇到
  • Unity项目资源加载管理简易框架(Resource)

    文章目录 一 背景 二 思路概述 三 具体实现代码及其思路梳理 1 资源路径 2 资源管理 3 资源加载 4 资源管理 四 说明 一 背景 在Unity的轻量型项目中如果对优化没有特别搞得要求 如果需要用到Resource Load这个接口
  • Unity—UGUI

    每日一句 读数 学习 去更远的地方 才能摆脱那些你不屑一顾的圈子 目录 InputFiled输入框 例 用户名和密码 Toggle组件 案例 冷却效果 InputFiled输入框 Text Component 输入文本组件 Text输入内容
  • 蒙特卡洛积分、重要性采样、低差异序列

    渲染公式 渲染的目标在于计算周围环境的光线有多少从表面像素点反射到相机视口中 要计算总的反射光 每个入射方向的贡献 必须将他们在半球上相加 为入射光线 与法线 的夹角 为方便计算可以使用法线向量和入射向量 单位化 的乘积表示 对于基于图像的
  • Unity动画系统详解

    目录 动画编辑器 编辑器面板 动画复用 前言 人形重定向动画 Humanoid 通用动画 Generic 旧版本动画 Legacy 动画控制器 系统状态 切换条件 状态机脚本 IK动画 反向动力学 BlendTree 混合树 Animato
  • Unity学习笔记(一)—— 基础知识

    一 基础知识 1 开发团队组成 2 unity特点 图形界面 所见即所得 入门简单 支持C 比OC C 更友好 js 国内外资源丰富 因为使用的人多 跨平台性好 PC端 移动端等 对VR AR的支持最完善 3 成功案例 游戏 炉石传说 神庙
  • Unity万向节死锁解决方案(2023/12/4)

    1 万向节死锁无法解决 这是因为它的特性就是如此 就像玻璃杯就是玻璃 这不可否认 别钻牛角尖昂 2 大多数情况下欧拉角足够用 例如 CF 摄像机不可能绕z轴旋转 x轴旋转也不会超过九十度 因为那样人物的腰子会被扭断 塔防游戏 保卫萝卜 吃鸡
  • mixamo根动画导入UE5问题:滑铲

    最近想做一个跑酷游戏 从mixamo下载滑铲动作后 出了很多动画的问题 花了两周时间 终于是把所有的问题基本上都解决了 常见问题 1 动画序列 人物不移动 2 动画序列 人物移动朝向错误 3 蒙太奇 人物移动后会被拉回 4 蒙太奇 动画移动
  • 【Unity】如何让Unity程序一打开就运行命令行命令

    背景 Unity程序有时依赖于某些服务去实现一些功能 此时可能需要类似打开程序就自动运行Windows命令行命令的功能 方法 using UnityEngine using System Diagnostics using System T
  • 【Unity】运行时创建曲线(贝塞尔的运用)

    Unity 运行时创建线 贝塞尔的运用 1 实现的目标 在运行状态下创建一条可以使用贝塞尔方法实时编辑的网格曲线 2 原理介绍 2 1 曲线的创建 unity建立网格曲线可以参考 Unity程序化网格体 的实现方法 主要分为顶点 三角面 U

随机推荐

  • esp8266 esp12 AT指令连接wifi热点联网,HTTP获取OneNET物联网平台消息,控制四路远程开关

    esp8266 esp12 使用AT指令联网非常方便 很适合应对已经开发好的成品需要增加联网功能的需求 使用AT指令进行开发 大多数是产品已经开发好 只需要增加小数据量的联网功能 而且不想对既有成品有较大的方案修改 下面来使用 esp826
  • AttributeError: 'generator' object has no attribute 'next'

    在python3 x版本中 python2 x的g next 函数已经更名为g next 所以只需要将g next 换成g next 就可以了 如果你觉得g next 太丑 使用next g 也能达到相同效果
  • CentOS7中使用yum安装Nginx的方法

    最近无意间发现Nginx官方提供了Yum源 因此写个文章记录下 1 添加源 默认情况Centos7中无Nginx的源 最近发现Nginx官网提供了Centos的源地址 因此可以如下执行命令添加源 sudo rpm Uvh http ngin
  • Ubuntu18.04下安装OpenCV4.2.0与Opencv_contrib(图文详细报错总结)

    Ubuntu18 04下安装OpenCV4 2 0与Opencv contrib 图文详细 前期准备 环境依赖 Cmake 编译器 依赖环境 Python环境 streamer环境 图像处理依赖 安装OpenCV 编译OpenCV 配置cm
  • Unity3d--AR/MR 技术

    一 作业要求 1 图片识别与建模 2 虚拟按键小游戏 3 开发城市定向越野运动 MR 游戏 可选 游戏要求 准备 选择为每个用户准备一套拼图图片 含干扰图片 按一定策略发布到目标位置 随机位置偏移 越野地图一张 开始游戏 玩家在起点 用手机
  • EMC测试项目——辐射骚扰

    辐射骚扰 Radiation emission 主要是指能量以电磁波的形式由源发射到空间 或能量以电磁波形式在空间传播的现象 辐射骚扰是电磁兼容的重要内容 也是测试最不容易通过且最难整改的项目 辐射骚扰超标的产品可能引起周围装置 设备或系统
  • rust腐蚀怎么建立单机服务器_腐蚀rust新手入门指南 腐蚀rust怎么开始游戏

    如何开始游戏 巴拉巴拉那么多现在开始步入正轨吧 点击find game 就进入了服务器列表 在这里你可以加入官方的服务器 热闹但高延迟 也可以加入玩家自己设置的服务器 有些服务器不怎么友好详情请看贴吧举报贴 1 官方服务器列表 2和3 玩家
  • 解决JDK版本导致JMeter无法启动问题

    最近在做一个秒杀系统练习时 需要使用JMeter进行压力测试 但是安装JMeter后 出现了以下错误 很明显是JDK的版本问题导致的 但是我又不想改变系统的JDK版本 所以可以下载高版本的JDK 无需改变系统的JDK版本 直接在bin jm
  • nginx-代理多个服务

    目录 1 主机多Ip 1 1单网卡多ip主机配置 1 2修改default conf 1 3server1 conf 1 3server2 conf 1 4测试文件 1 4重启测试 2 主机多端口 2 1server1 conf 2 2se
  • 三个不等_高中数学竞赛常用的不等式归纳(续一)

    当 时 代入 23 为减少篇幅就不在此写出完整的 23式 下同 式得 即 25 25 式正是 22 九 加权不等式 9 1若 且 则 26 26 式就是加权的均值不等式 简称加权不等式 26 式形式直接理解为 几何均值不大于算术均值 十 赫
  • 2020第八届“泰迪杯”特等奖(基于 BERT 深度语言模型的“智慧政务”文本挖掘应用)

    目录 1绪论 1 1 智慧政务 文本挖掘的意义 1 2 智慧政务 文本挖掘的目标 1 3语言智能的里程碑技术 BERT 深度语言模型介绍 1 4本文的总体框架 1 5本文主要的创新之处 2基于 BERT 模型的留言自动分类 2 1任务介绍与
  • 数据库连接池C3P0学习

    数据库连接池C3P0框架是个非常优异的开源jar 高性能的管理着数据源 这里只讨论程序本身负责数据源 不讨论容器管理 一 实现方式 C3P0有三种方式实现 1 自己动手写代码 实现数据源 例如 在类路径下配置一个属性文件 config pr
  • 1-2 继承和接口

    1 继承 关键字extends 父类中私有成员可以被继承 只是外界无法访问 父类中公共属性 方法可以被子类继承 支持单继承 多重继承 单链式继承 不支持多继承 一个类继承多个父类 子类中的方法重写必须是父类中已有的方法 重写后再次调用父类的
  • shell 自动备份 MySQL 数据库脚本

    前提 在当前的机器中 已经安装了 MySQL 并且将 MySQL 已经加入到环境当中 安装 MySQL 和配置 MySQL 环境可参考文章 CentOS 8 通过二进制安装 MySQL 需求 编写 shell 脚本 自动备份 MySQL 数
  • 插入排序和选择排序(普通排序)

    我自己的代码 更容易理解 void XuanZePaiXu int a int n int i j k for int i 0 i lt n i k i for int j i 1 j lt n j if a k gt a j k j if
  • Vue2 _ 实现拖拽功能

    老项目重构 其中有一些拖拽功能 不过用的是两个开源 JS 拖拽文件实现的效果 版本太老了 所以需要换代了 然后就查阅了能够用 Vue 来简单快速实现拖拽的功能实现方法 目录 一 HTML 拖放 二 Vue Draggable 强烈推荐 三
  • NFT.net批量生成NFT头像(汉化版+使用文档)

    本程序NFT net可用于批量快速生成NFT头像 相同风格但不尽相同 原程序由老外开发 本人将其汉化 并制作使用文档 工具参考 NFT net 一个可以批量生成NFT头像的工具 素材参考 B站up主 卡司红茶 汉化版 使用文档 本人首发 如
  • maven如何快速查找某个包哪里引入的

    描述 最近项目中遇到一个问题 有个jar包跟项目的中的代码冲突导致一些奇怪的异常 项目是maven项目 问题查找 由maven官网可知道maven的Dependency plugin就有这个问题的解决方案filtering the depe
  • Sybase的客户端工具

    虽然已经离开用Sybase的项目很久了 但今天突然有同事问我Sybase的客户端工具都用什么 我却不记得当时天天用的什么工具了 上网找了半天才找到软件的名字 在此做个小小的总结 以免以后更想不起来 以下几个工具都是当时常用的 他们各有优缺点
  • panda3d虚幻引擎--(1)

    目录 前言 阿巴阿巴 安装 调整窗口 导入环境 前言 阿巴阿巴 前几天无意间看到了一个叫做panda3d的东西 觉得挺好玩 就翻教程 发现现在中文教程似乎没有那么全面成体系 大部分都是复制粘贴过来官网的实例然后就发布出去了 看得云里雾里的