摄像机
Panda3d摄像机
- 摄像机实际上是在 ShowBase 中定义的一个名称为 base.cam 的 NodePath
- 也可以将一些普通的节点放在名为 base.camera 的摄像机的下面
- 一般情况下,您会希望使用代码来控制 base.camera NodePath
- Showase 类包含了一些可以方便地控制摄像机的方法。因此一般要from direct.showbase import *
- lens是镜头的意思,可以通过lens=base.cam.getLens()获得
#base中的默认相机
#camera官网解释:This is the NodePath that should be used to manipulate the camera.
# This is the node to which the default camera is attached
base.camera #相机所挂载的节点的节点路径,底下可以挂载其他节点
#cam官网解释:This is a NodePath pointing to the Camera object set up for the 3D scene.
# This is usually a child of self.camera.
base.cam #相机的节点路径
默认相机驱动
base.useDrive() #可以前后转向,但是不能上下
base.useTrackball()#可以上下前后移动,但是不能转向
base.oobe() #一般推荐用这个,鼠标滚轮也可使用以进行更全面的移动,上下前后并转向
镜头和视野
默认的镜头都有相同的视角,也就是说,他们都是 PerspectiveLens 实例,即对物体进行透视投影(相对的是正交投影)
- A是镜头的节点,通常(在默认的Z轴向上坐标系统中),镜头会朝向+Y轴,在上面的图片中,+Y轴指向右侧的A点。包含节点的平面垂直于视图(也就是说,这个平面对应的垂线通过这个平面),他称为摄像机平面。
- B是视角的角度,可以通过lens.setFow(angle)直接设置角度;也可以lens.setFov(horizontalAngle, werticalAngle)通过设置横向视角、纵向视角来设置角度
- C、D是分别是摄像机的近远平面,可以通过lens.setNearFar(nearDistance, farDistance)或者拆开lens.setNear(nearDistance)、lens.setFar(farDistance)
- E 这个尺寸叫做镜头的胶片尺寸。现实世界中胶片尺寸影响视角,这其中涉及一些专业的摄影知识,有兴趣可以了解,可以更好的模拟现实使用 lens.setFilmSize(width) 或者 lens.setFilmSize(width, height) 来设置胶片尺寸
- F 这个距离代表了镜头的焦距,通过lens.setFocalLength(distance)进行设置
特别注意:视角、焦点和胶片尺寸之间的关系很近。设置其中任意两个值都会影响到第三个值。由二可定一,所以同时设三个属性是没必要的
正投影镜头
一般正投影镜头主要应用在render2d,即GUI的渲染描绘上,有时也可以应用在即时策略类的游戏(比如:帝国时代)
创建正交投影摄像机的代码大致如下:
lens = OrthographicLens()
lens.setFilmSize(20, 15) # Or whatever is appropriate for your scene
base.cam.node().setLens(lens)

浙公网安备 33010602011771号