panda3d使用 python_python panda3d - CSDN
精华内容
参与话题
  • panda3d配置,使用python IDE

    千次阅读 2012-06-24 21:22:43
    想用python的IDE方便调试废话不多说直接代码: from sys import path path.append('D:\Panda3D-1.7.2') path.append('D:\Panda3D-1.7.2\\bin') from direct.showbase.ShowBase import ShowBase class MyApp...

    想用python的IDE方便调试废话不多说直接代码

    from sys import path
    path.append('D:\Panda3D-1.7.2')
    path.append('D:\Panda3D-1.7.2\\bin')
    from direct.showbase.ShowBase import ShowBase

    class MyApp(ShowBase):
       
        def __init__(self):
            ShowBase.__init__(self)

    app=MyApp()
    app.run()

    代码中的两个路径是笔者安装panda3d的库的路径,也可以在环境变量中设置PYTHONPATH和相应的panda3d库的路径,python中的import from也可以学学哈,just enjoy the panda3d

    展开全文
  • 引擎本身由c++编写,使用python或者c++调用(pythoner有想开发3D游戏的,可以看看咯)。 下面简单的贴一下上面图片的代码: 1 from direct.showbase.ShowBase import ShowBase #基本显示模块 2 from math ...

    先上图,看看引擎效果(还不错吧):

    引擎本身由c++编写,使用python或者c++调用(pythoner有想开发3D游戏的,可以看看咯)。

    下面简单的贴一下上面图片的代码:

     1 from direct.showbase.ShowBase import ShowBase #基本显示模块
    2 from math import pi,sin,cos
    3 from direct.task import Task#任务模块
    4 from direct.actor.Actor import Actor#动态模块
    5 class MyApp(ShowBase):
    6 def __init__(self):#场景初始化
    7 ShowBase.__init__(self)
    8 self.environ = self.loader.loadModel(r'models/environment')
    9 self.environ.reparentTo(self.render)#self.render 渲染树根节点,设置之后才能对所有玄素进行渲染
    10 self.environ.setScale(0.25,0.25,0.25)
    11 self.environ.setPos(-8,42,0)
    12 self.taskMgr.add(self.spinCameraTask,'SpinCameraTask')#调用任务spinCameraTask()
    13 self.panda()
    14 def spinCameraTask(self,task):#摄像机设置
    15 angleDegrees = task.time * 6
    16 angleRadians = angleDegrees * (pi/180)
    17 self.camera.setPos(20 * sin(angleRadians),-20 * cos(angleRadians),3)
    18 self.camera.setHpr(angleDegrees,0,0)
    19 return Task.cont
    20 def panda(self):#实现动态的熊猫
    21 self.pandaActor = Actor('models/panda-model',{'walk' : 'models/panda-walk4'})
    22 self.pandaActor.setScale(0.005,0.005,0.005)
    23 self.pandaActor.reparentTo(self.render)#self.render 渲染树根节点,设置以后才能对所有元素进行渲染
    24 self.pandaActor.loop('walk')
    25 def box(self):
    26 pass
    27 app = MyApp()
    28 app.run()
    29 run()

    代码里的3D模型models/environment,'models/panda-model,{'walk' : 'models/panda-walk4'},均来自panda3d官方网站(http://www.panda3d.org),有兴趣和有志做3D游戏的同学可以下载来研究下。免费使用。包括商业用途。



    转载于:https://www.cnblogs.com/evening/archive/2012/03/27/2419276.html

    展开全文
  • 图解 Panda3D引擎开发入门

    万次阅读 2015-04-12 15:09:46
    Panda3D 是一个 3D 渲染和游戏开发框架,可以在这个框架下使用 Python 和 C++ 。Panda3D 是开源软件, 它的许可证让它可以用于任何用途, 包括商业用途。本文使用Panda3D 1.7.0版本,其最新稳定版本是1.7.2。可在...

            Panda3D 是一个 3D 渲染和游戏开发框架,可以在这个框架下使用 Python 和 C++ 。Panda3D 是开源软件, 它的许可证让它可以用于任何用途, 包括商业用途。本文使用Panda3D 1.7.0版本,其最新稳定版本是1.7.2。可在官网下载最新稳定版本。Panda3D包括Windows和Linux版本,本文基于Windows。

        Panda3D 1.7.0 Windows安装包可在鄙人网盘下载:

    http://pan.baidu.com/s/1sjoeS01


        不是做游戏。主要考虑以后用于展示一些行业的场景模型、设备模型之类。

    一 安装

    1 双击安装;



    2 安装向导;



    3 安装位置;



    4 是否需要Egg缓存,若安装,速度快,但占内存;此处选择否;



    5 安装完成;



    6 开始菜单;



    二 入门python程序

    1

    编辑一个脚本,就2句;

    import direct.directbase.DirectStart
    run()

    然后用python运行;

    出现第一个Panda窗口,如下图;



    脚本所引用的库的位置如下图;



        如果对于Python基础知识还不了解;可参阅我写的博文:http://blog.csdn.net/bcbobo21cn/article/details/44980087

    2 认识一下载入场景和模型

    from math import pi, sin, cos

    from math import pi, sin, cos
    from math import pi, sin, cos
    from direct.showbase.ShowBase import ShowBase
    from direct.showbase.ShowBase import ShowBase
    from direct.task import Task
    from direct.actor.Actor import Actor
    from direct.interval.IntervalGlobal import Sequence
    from panda3d.core import Point3


    class MyApp(ShowBase):
        def __init__(self):
            ShowBase.__init__(self)


            # 禁用鼠标
            self.disableMouse()
            # 载入环境模型
            self.environ = self.loader.loadModel("models/environment")
            # 设置环境模型的父实例
            self.environ.reparentTo(self.render)
    self.environ.reparentTo(self.render)
    self.environ.reparentTo(self.render)
            # 对模型进行比例及位置调整
    # 对模型进行比例及位置调整
            self.environ.setScale(0.25, 0.25, 0.25)
            self.environ.setPos(-8, 42, 0)
            # 通知任务管理器调用SpinCameraTask控制相机
            self.taskMgr.add(self.spinCameraTask, "SpinCameraTask")
            # 载入熊猫角色
            self.pandaActor = Actor("models/panda-model",
                                         {"walk": "models/panda-walk4"})
            self.pandaActor.setScale(0.005, 0.005, 0.005)
            self.pandaActor.reparentTo(self.render)
            # 动画循环
            self.pandaActor.loop("walk")
            # 创建四幕
            PosInterval1 = self.pandaActor.posInterval(13,
                                                       Point3(0, -10, 0),
                                                       startPos=Point3(0, 10, 0))
            PosInterval2 = self.pandaActor.posInterval(13,
                                                       Point3(0, 10, 0),
                                                       startPos=Point3(0, -10, 0))
            HprInterval1 = self.pandaActor.hprInterval(3,
                                                       Point3(180, 0, 0),
                                                       startHpr=Point3(0, 0, 0))
            HprInterval2 = self.pandaActor.hprInterval(3,
                                                       Point3(0, 0, 0),
                                                       startHpr=Point3(180, 0, 0))
            # 创建情节并运行四幕
            self.pandaPace = Sequence(PosInterval1,
                                      HprInterval1,
                                      PosInterval2,
                                      HprInterval2,
                                      name="pandaPace")
            self.pandaPace.loop()
            # 定义旋转相机
        def spinCameraTask(self, task):
            angleDegrees = task.time * 6.0
            angleRadians = angleDegrees * (pi / 180.0)
            self.camera.setPos(20 * sin(angleRadians), -20.0 * cos(angleRadians), 3)
            self.camera.setHpr(angleDegrees, 0, 0)
            return Task.cont
              
    app = MyApp()
    app.run()



        这个场景和模型是Panda3D自带的;大熊猫是panda3d自带角色。看到以上代码要认识到,所使用的库当然不是Python自身的库,是panda3d提供的用于python开发的库。

    此处使用的Python是安装Panda3d时自动装上的Python,位于 C:\Panda3D-1.7.0\python。载入的模型位于安装后的C:\Panda3D-1.7.0\models。

    两个python脚本代码文件下载:

    http://pan.baidu.com/s/1kTqtabd




    展开全文
  • Panda3D学习 (1):小行星示例程序

    千次阅读 2018-06-22 21:59:44
    这是第一篇关于Panda3D的学习笔记,不求能给大家以帮助,只希望记录下自己学习的过程。今天学习的是panda3D自带的第一个示例程序,小行星。相比起完整的把所有语法看一遍,我更喜欢从实践中学习。“本示例程序显示...

    这是第一篇关于Panda3D的学习笔记,不求能给大家以帮助,只希望记录下自己学习的过程。

    今天学习的是panda3D自带的第一个示例程序,小行星。相比起完整的把所有语法看一遍,我更喜欢从实践中学习。

    “本示例程序显示如何使用任务。任务是在程序的每一帧期间运行的函数。Panda3D在任何程序中运行一些任务,但可能会添加其他任务。对于本教程,除了检查碰撞之外,还将使用任务来更新船舶,小行星和子弹的位置。要做到这一点,您需要知道的所有数据是已经过了多少时间以及每个对象的速度” 这是官方文档的说法。


    1. dt = globalClock.getDt()

    用于记录上一帧结束至今所经历的时间

    2. 任务

    这是示例程序的核心内容,也是我今天学习的重点,对照https://www.panda3d.org/manual/index.php/Tasks进行学习。

    任务是在应用程序执行时每帧调用一次的特殊功能。

    任务是用函数或类方法定义的; 此功能是该任务的主要入口点,在任务运行时将在每帧中调用一次。默认情况下,该函数接收一个参数,它是任务对象; 任务对象携带有关任务本身的信息,例如任务已运行的时间量。

    from direct.task import Task  导入Task类

    返回值:


    task的一些相关属性


    tskMgr 任务管理器

    添加任务及延时任务

    taskMgr.add(exampleTask, 'MyTaskName')
    taskMgr.doMethodLater(delayTime, myFunction, 'Task Name')

    例程实例:

    taskMgr.add(self.gameLoop, "gameLoop")
    def gameLoop(self, task):
    return Task.cont

    必须感叹一下panda3d的例程的注释还是非常充分的,可惜网上的相关资料确实太少,而且英文的学习效率也不如中文

    3. 模型图片加载

    这部分里的model的egg文件还不是太懂,希望以后能弄明白

    def loadObject(tex=None, pos=LPoint3(0, 0), depth=SPRITE_POS, scale=1,
                   transparency=True):
        # Every object uses the plane model and is parented to the camera
        # so that it faces the screen.
        obj = loader.loadModel("models/plane")
        obj.reparentTo(camera)
    
        # Set the initial position and scale.
        obj.setPos(pos.getX(), depth, pos.getY())
        obj.setScale(scale)
    
        # This tells Panda not to worry about the order that things are drawn in
        # (ie. disable Z-testing).  This prevents an effect known as Z-fighting.
        obj.setBin("unsorted", 0)
        obj.setDepthTest(False)
    
        if transparency:
            # Enable transparency blending.
            obj.setTransparency(TransparencyAttrib.MAlpha)
    
        if tex:
            # Load and set the requested texture.
            tex = loader.loadTexture("textures/" + tex)
            obj.setTexture(tex, 1)
    
        return obj

    通过这个函数,可以load图片。

    写到这里突然想到,这个LPoint3和LVector3可能分别是三维数组类(三维向量数组类),并拥有getX,getY等方法。

    4. OnscreenText的使用

    一个用来快速删改界面文字的函数的类

    from direct.gui.OnscreenText import OnscreenText
    textObject = OnscreenText(text = 'my text string', pos = (-0.5, 0.02), scale = 0.07)

    5.  setPythonTag

    Also, by using the functions setTag() and getTag() you can store your own information in key value pairs. For example:

    myNodePath.setTag("Key", "value")

    You can also store Python objects as tags by using the setPythonTag function with the same arguments.

    例程中的使用:

    def setVelocity(self, obj, val):
        obj.setPythonTag("velocity", val)

    和getPythonTag配合使用,记录数据


    6. 事件处理程序

    vents occur either when the user does something (such as clicking a mouse or pressing a key) or when sent by the script using messenger.send(). When an event occurs, Panda's "messenger" will check to see if you have written an "event handler" routine. If so, your event handler will be called. The messenger system is object-oriented, to create an event handler, you have to first create a class that inherits from DirectObject. Your event handler will be a method of your class.

    myDirectObject.accept('Event Name',myDirectObjectMethod)
    myDirectObject.acceptOnce('Event Name',myDirectObjectMethod)

    例程中的

    self.accept("escape", sys.exit)  # Escape quits
    # Other keys events set the appropriate value in our key dictionary
    self.accept("arrow_left",     self.setKey, ["turnLeft", 1])
    self.ac cept("arrow_left-up",  self.setKey, ["turnLeft", 0])
    self.accept("arrow_right",    self.setKey, ["turnRight", 1])
    self.accept("arrow_right-up", self.setKey, ["turnRight", 0])
    self.accept("arrow_up",       self.setKey, ["accel", 1])
    self.accept("arrow_up-up",    self.setKey, ["accel", 0])
    self.accept("space",          self.setKey, ["fire", 1])
    

    展开全文
  • Panda3D学习 (5):入门教程

    千次阅读 2018-06-25 18:10:45
    这两天考试+修改论文。。勉强抽出一点时间学习一下。。还是不能落下这个例程的名字叫太阳系,难度是入门级,也就是说事实上我的学习进程应该从这个例程开始。。结果本末倒置了,上来就学了迄今最难的一个例程。...
  • Panda3D 01 安装 Panda3D

    2020-05-03 08:46:13
    在 Windows 上安装 Panda3D 下载安装程序 首先打开 官网 点击 Get the SDK, 选择自己的平台(这里小编用的是 Windows 平台): 安装 Panda3D 安装就很简单了,只需要跟着安装程序一步步的做就行了 ...
  • Panda3d编译

    千次阅读 2013-02-02 18:43:40
    Note that in the past, it was very difficult to build Panda3D. Things have improved. It is now fairly straightforward to download and compile panda. In particular, this is a sensibl
  • 一旦您的机器清除了所有先前版本的Panda3D,您应该从下载页面下载windows安装程序。运行安装程序,并遵循提示: 安装了Panda之后,您应该运行示例程序来验证安装是否正确。在Windows下,运行示例程序最简单的方法...
  • Panda3D 配置

    2019-06-12 16:19:10
    为什么80%的码农都做不了架构师?>>> ...
  • pycharm项目支持包增加Panda3D即可 新建项目py文件测试一下 from math import pi, sin, cos from math import pi, sin, cos from math import pi, sin, cos from direct.showbase.ShowBase import ShowBase ...
  • panda3d中文问题

    千次阅读 2010-12-02 13:01:00
    在$PANDA3D_HOME/etc/Config.prc最后添加   text-encoding utf8 text-default-font /c/Windows/Fonts/simsun.ttc   2. 在每个.py文件头加:#encoding=utf-8   3. .py文件...
  • Panda3D引擎简介跟初步体验

    千次阅读 2010-05-24 13:14:00
    最近在为公司项目寻找一个合适的开源3D引擎,一开始想到的就是OGRE,irrlicht这些。由于公司里没用人接触过3D引擎,甚至连熟悉C/C++的人也只有一个。...突然想到大学里接触过的Panda3D,下了最新版的SDK,初步感觉比较好
  • Part 1:什么是Panda3D [原始网站] [中文版本] Part 2:注意事项  Panda3D的版本必须与Python相匹配 Part 3:使用已安装的Python  将‘C:\Panda3D-1.8.1\python'中的panda.pth复制到‘C:Python27’下。  ...
  • Panda3D学习之路(二)

    千次阅读 2016-06-10 03:34:41
    panda3D 场景树 场景图 节点函数
  • panda3D学习之路

    千次阅读 2016-06-07 23:40:57
    NO1.Getting started安装完dmg之后,开始第一课新建一个.py文件,然后写下下面的代码:from direct.showbase.ShowBase import ShowBaseclass MyApp(ShowBase): def __init__(self): ShowBase.__init__(self)app = ...
  • Panda3D.1.7Cookbook.pdf

    2020-07-30 23:31:27
    Panda3D是一个免费的开源游戏引擎。它已经被爱好者和大型工作室成功地用于创建游戏,从快速...Panda3D使得使用模型、纹理和声音很容易创造令人印象深刻的交互体验。通过这本书,你也将能够充分利用Panda3D引擎的力量。
  • 搭建Panda3D环境

    千次阅读 2008-04-15 18:14:00
    先学习Panda3D使用,能灵活使用并深入了解其架构后,才有可能对它进行定制或功能扩展。下面是XP下的安装和设置。从 http://panda3d.org 下载panda3d-1.3.2.exe安装文件,双击安装,可以自己设置安装路径,我用默认...
  • 今天在搞panda3d-bullet时,忽然好好地程序不能用了。报错如下: ImportError: No module named ‘panda3d.bullet’; ‘panda3d’ is not a package 昨天还好好地,今天就忽然不行了。这是啥原因呢? 原来,我在这个...
  • Panda3D

    2019-07-26 03:57:48
    Panda3D 是个开源的游戏及物理引擎(也支持ODE及Bullet). 相关链接:网站:https://www.panda3d.org/...使用手册:https://www.panda3d.org/manual/index.php/Main_PagePanda3D 里头包含一套 python, 不过你也...
1 2 3 4 5 ... 20
收藏数 2,351
精华内容 940
热门标签
关键字:

panda3d使用 python