Panda3D 获取鼠标位置Panda3D任务管理器

Posted bcbobo21cn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Panda3D 获取鼠标位置Panda3D任务管理器相关的知识,希望对你有一定的参考价值。

看一下Panda3D Bump-Mapping示例;

运行起来是一个鼠标控制模型的例子;

 

    它的Bump-Mapping是模型表面两种不同的效果;先不管;

它的房子模型单独用pview看一下如下;

 

先看一下鼠标控制相关代码;做一个小程序如下;获取鼠标位置,然后输出;

from math import pi, sin, cos
from direct.showbase.ShowBase import ShowBase
from direct.task import Task
from panda3d.core import Point3
from panda3d.core import Fog

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

        md = base.win.getPointer(0)
        x = md.getX()
        y = md.getY()

        print x
        print y
          
app = MyApp()
app.run()

 运行如下;输出了鼠标位置;但只输出了一次;

 

     鼠标移动控制模型是如何实现的?看代码没有类似mousemove事件的东西;

根据它的手册,有一些内建的全局变量,

builtins.taskMgr (Python data, in Built-in Global Variables)

taskMgr是一个内建全局变量;taskMgr.add()指定一个被调用函数,

它的示例代码的函数是这样;

    def controlCamera(self, task):
        md = base.win.getPointer(0)
        x = md.getX()
        y = md.getY()
。。。。。。
        self.last = task.time
        return Task.cont

根据手册,

Task.cont

    Perform the task again next frame;

    重复执行任务,在下一帧;

就是每帧调用指定的函数;下回继续;

以上是关于Panda3D 获取鼠标位置Panda3D任务管理器的主要内容,如果未能解决你的问题,请参考以下文章

Panda3d Showbase类错误

初步了解Panda3D场景管理

panda3d场景的主要状态

认识panda3d点光源

初步了解Panda3d粒子系统

初步了解Panda3d粒子系统