Opengl_12_相机控制

1,使用键盘控制位置的移动

没有使用glutSpecialFunc,glutKeyboardFunc因为我这个win32程序。

2,
相机类里面定义了相机的三个方向成员:位置(position),target向量和up向量

前后移动是最简单的,因为这俩种移动方向和tartget向量在一条线上,我们只需要从起始位置加上或者减去一定数量的tartget向量即可实现前后移动,target向量本身不会变化。
在加减之前我们是使用一个常量‘步长‘ const
static
float STEP_SCALE = 1.0f;
不管哪个方向的移动都会乘上这个步长,其实就是改变移动速度。


左右的移动需要一个和tartget向量与up向量所在平面垂直的一个移动向量
两种组合:target * up 和 up * tartget,都有一个向量和平面垂直并且方向相反。


上下移动,修改y值就行。

3,
因为修改的是相机的位置,所以相对于观察物体,方向都是相反的。
相机向上移相当于观察物体下移了,相机左移相当于观察物体右移 。
只有前后移动是相同的,相机靠近或远离观察物体也是观察物体机靠近或远离相视角。

4,鼠标拖动调整相机方向:

5,
绕垂直于地面的向量(0,1,0)360度旋转,这个旋转的角度叫做‘水平倾角‘,这个向量叫做‘垂直轴线‘。绕一个和地面平行的向量上下旋转,这个倾斜角叫做‘垂直倾角。

鼠标左右滑动改变水平倾角使相机左右旋转,鼠标上下滑动改变垂直倾角使相机抬头低头。有了这两个倾角,我们想以此计算出旋转后最终的target向量和up向量。

6,

xy参数是鼠标在屏幕中的新的位置坐标。我先计算从之前的点到当前点在X和Y轴上的变化。然后将鼠标的位置设置为当前的点坐标作为下次调用的上个点坐标。按比例缩小后更新改变当前水平方向和竖直方向上的倾角。这里使用了一个效果比较好的缩放比例值20.0,但是在,
不同的电脑可能要调整不同的值是旋转的速度看上去合适(改变鼠标灵敏度相当于)。

7,

时间: 2024-12-21 20:38:29

Opengl_12_相机控制的相关文章

unity3d 第三人称视角的人物移动以及相机控制

何谓第三人称?就像这样: 用wasd控制人物移动,同时保持在相机的中心.用鼠标右键与滚轮控制相机的角度和距离. 先说一下人物的移动: 首先给作为主角的单位加上 Charactor Controller组件,并调整胶囊型的碰撞体刚好包裹住主角(有其是脚底,除非你想看到你的主角能遁地,或飞行) 然后给你的人物加上控制的脚本~ using UnityEngine; using System.Collections; public class move_controll : MonoBehaviour

Unity之2D游戏界面相机控制

之前写的关于2D游戏界面相机的水平.竖直.以人为中心三种模式的相机控制,我写着写着,总感觉相机适配有点繁琐,而且适配得不怎么好,多平台的时候因为资源有限我也不知道有没有完全适配,今天给大家分享一下我今天写的一个2D游戏场景相机适配,感觉挺好的,有需要的可以用着试试看,接下来我贴上代码: using UnityEngine; using System.Collections; public class CameraControl_2D : MonoBehaviour { // 默认屏幕大小 flo

Unity 2D游戏相机控制(水平,竖直,角色居中三种模式)

做2D游戏的时候,无非有三种模式,一种是只有竖直向上,一种是只有水平方向,一种是有水平又有竖直方向,我最近做游戏多关卡模式,不同模式就有着不一样的相机控制,按照平时的写法,也许有很多人就一下子写了三个相机脚本,现在我用了一个枚举类型来控制三个不一样的相机,贴代码: /// <summary> ///CameraCtrl ///Created by Wang YuTing /// </summary> using UnityEngine; using System.Collectio

OpenGL教程翻译 第十五课 相机控制(二)

OpenGL教程翻译 第十五课 相机控制(二) 原文地址:http://ogldev.atspace.co.uk/(源码请从原文主页下载) Background 在这一节中我们将使用鼠标来控制相机的方向,从而得我们的相机控制更加完善.相机有不同的自由程度,这与其设计有关.在本教程中我们将要实现的是与第一人称游戏中相似的相机控制(如枪战类游戏).这意味着我们将可以使相机完成360度的旋转(绕着Y轴),这与我们的头部向左转向右转.身体转一整圈类似.除此之外我们也能使相机向上或者向下倾斜以获得更好的向

OpenGL教程翻译 第十四课 相机控制(一)

OpenGL教程翻译 第十四课 相机控制(一) 原文地址:http://ogldev.atspace.co.uk/(源码请从原文主页下载) Background 在之前的教程中我们学习了如何在三维场景中的任何地方放置相机.那么我们下一步就应该学着去控制这个相机.相机可以向任何方向自由移动.我们可以用鼠标和键盘控制相机--鼠标控制视口方向,键盘控制我们的位置.这些都和第一人称视角相似.这一章我们主要来学习鼠标和键盘的控制. 我们仍然使用上下左右四个方向键.记住,我们的相机的变换取决于位置.targ

Unity3D第三视觉角色相机控制

经过一段时间的学习,学得以下第三视觉相机控制方法,当设置相机初始高度较高的状态下,相机有由高到低的效果,适合做为外景相机,如果是做室内相机,需要另外设计.将这个分享给大家,同时希望得到阅读者宝贵的意见,废话不多说,贴代码: /// <summary> /// Created by Hong Youwei /// Created in 2015.3.25 /// </summary> using UnityEngine; using System.Collections; publi

RPG角色相机控制

using UnityEngine;using System.Collections; public class RPG_Camera : MonoBehaviour { public static RPG_Camera instance; public Transform cameraPivot;//相对人物的位置参考点,可以在任务头顶上 public float distance = 5f; public float distanceMax = 30f; public float mouse

【Unity】2.8 相机(Camera)

分类:Unity.C#.VS2015 创建日期:2016-03-31 一.简介 Unity的相机用来向玩家呈现游戏世界.你在场景中始终至少有一个相机,但也可以有多个.多个相机可以带给您双人分屏效果或创建高级的自定义效果.您可以让相机动起来,或者用物理(组件)控制它们.您能想到的任何东西,几乎都可以通过相机变成可能,为了配合您的游戏风格,还可以使用典型或独特的相机. 相机 (Camera)是为玩家捕捉并展示世界的一种设备.通过自定义和操作相机,可以使您的游戏演示真正与众不同.您可以在一个场景中使用

webGL相机控制器

需要引入相机控制插件OrbitControls 1 <script type="text/javascript" src="framework/jquery.1.11.1.min.js"></script> 2 <script src="framework/three.js"></script> 3 <script src="framework/OrbitControls.js&qu