camera - 处理相机 frustum() 和 perspective() 旋转

标签 camera rotation center processing frustum

在处理 2+ 时,如何制作一个可以移动并绕其自身轴旋转的相机?

我有一个相机,我可以在世界空间中四处移动并进行某种旋转:

frustum(-10,10,-10,10,10,2000);
translate(camX,camY,camZ);//I move around by adding to these values when a button is pressed
rotate(angleX,1,0,0);//same here...
rotate(angleY,0,1,0);
rotate(angleZ,0,0,1);

但这个问题是旋转以场景为中心,这意味着当远离场景的中心坐标时,我会得到非常奇怪的旋转。当我在旋转之前进行平移时,为什么会发生这种情况?

最佳答案

感谢 Nicolás Carlo 和他的观看建议 This Youtube playlist由豪尔赫·罗德里格斯 (Jorge Rodriguez) 制作 我能够在第一时间修复我差点做对的问题。

我所要做的只是做一些简单的三角计算,从我得到的角度得到前向矢量,然后只需将相机位置添加到 camera() 中的 centerX、centerY、centerZ 值;

例。其中 camPos 是当前位置 3D 向量,vecForward 是我需要的计算出的 3D 前向向量。

vecForward.x = cos(yaw)*cos(pitch);
vecForward.y = sin(pitch);
vecForward.z = sin(yaw)*cos(pitch);

camera(camPos.x,camPos.y,camPos.z, camPos.x+vecForward.x,camPos.y+vecForward.y,camPos.z+vecForward.z, 0,1,0);

如果有些人不知道,Pitch 是相机的上下角度,Yaw 是相机的左右角度。

作为这里的最后一点,我强烈建议观看 Carlo 建议的 Rodriguez“游戏开发者数学”,因为每个视频都至少解释了一次针对不同问题的最重要/最常用的数学解决方案之一,然后给出了一个最后的例子。

关于camera - 处理相机 frustum() 和 perspective() 旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23155514/

相关文章:

java - 如何像内置相机一样实现Android相机对焦(连续)

c# - 跟随游戏对象并同时更改相机 View

ios - 移动 imageView 时旋转它

android - 将 Camera SurfaceView 旋转为纵向

ios - 当 iPad 处于横屏模式时 Swift 旋转图标

css - 我想将这些框显示在页面中央的一行中,并具有相同的宽度空间

android - camera2,android中的手动对焦

ios - AVFoundation人脸检测框架

html - 如何在使用 CSS 创建响应式按钮时使按钮居中

javascript - 垂直居中标题 - Beetle HTML5 模板