- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
大家好,
我将相机的眼睛设置在正 z 轴 (0, 0, 10) 上,向上指向正 y (0, 1, 0),并以正 x (2, 0, 0) 为中心。如果 y 向上,并且相机向下注视 z 轴负方向,则 x 在屏幕坐标中指向左侧,在右手 OpenGL 世界坐标中。
我还有一个以世界原点为中心的对象。随着相机看起来更向左(正 x 方向),我希望以原点为中心的对象在生成的屏幕投影中向右移动。但我看到情况恰恰相反。
我是否缺乏基本的了解?如果是这样,什么?如果没有,谁能解释如何在默认的 OpenGL 右手世界模型中正确使用 glm 生成 View 和投影矩阵,并将其发送到着色器?
glm::vec3 _eye(0, 0, 10), _center(2, 0, 0), _up(0, 1, 0);
viewMatrix = glm::lookAt(_eye, _center, _up);
projectionMatrix = glm::perspective(glm::radians(45), 6./8., 0.1, 200.);
我觉得有趣的另一件事是图像中的红线指向正 x 方向。从字面上看,它是场景中另一个摄像机的 [eye -> (forward + eye)] vector ,我从 viewMatrix
的逆向中提取它。让我大吃一惊的是,当我使用该相机的 VP 矩阵时,它指向的方向与从 viewMatrix
的逆向提取的相同前向方向相反。我也非常感谢对这种差异的任何见解。
同样值得注意的是:我通过 cmake 构建了 glm 0.9.9。我验证了它使用右手 [-1, 1] 观察和透视变体。
最佳答案
I would expect my origin-centered object to move right in the resulting screen projection. But I see the opposite is the case.
glm::lookAt
定义一个 View 矩阵。 glm::lookAt
的参数在世界空间中,glm::lookAt
的center
参数定义了你注视的位置。
View 空间是由场景中的视点定义的局部系统。 View 的位置、视线和 View 的向上方向,定义了一个相对于世界坐标系的坐标系。 View 矩阵从世界空间转换到 View (眼睛)空间。
如果 View 空间的坐标系是Right-handed系统,则 X 轴指向左侧,Y 轴指向上方,Z 轴指向 View 外(请注意,在右手系统中,Z 轴是 X 轴和 Y 轴的叉积轴)。
视线是从眼睛
位置到中心
位置的 vector :
eye = (0, 0, 10)
center = (2, 0, 0)
up = (0, 1, 0)
los = center - eye = (2, 0, -10)
在这种情况下,如果对象的中心位于 (0, 0, 0) 并且您看向 (0, 0, 2),则您看的是对象右侧的位置,这意味着对象向左移动。
如果你改变观点,这将会改变,例如(0, 0, -10) 或翻转向上 vector ,例如(0, -1, 0).
关于c++ - glm::lookat,OpenGL 中的透视澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51297017/
我想做的是让 JTextPane 在 JPanel 中占用尽可能多的空间。对于我使用的 UpdateInfoPanel: public class UpdateInfoPanel extends JP
我在 JPanel 中有一个 JTextArea,我想将其与 JScrollPane 一起使用。我正在使用 GridBagLayout。当我运行它时,框架似乎为 JScrollPane 腾出了空间,但
我想在 xcode 中实现以下功能。 我有一个 View Controller 。在这个 UIViewController 中,我有一个 UITabBar。它们下面是一个 UIView。将 UITab
有谁知道Firebird 2.5有没有类似于SQL中“STUFF”函数的功能? 我有一个包含父用户记录的表,另一个表包含与父相关的子用户记录。我希望能够提取用户拥有的“ROLES”的逗号分隔字符串,而
我想使用 JSON 作为 mirth channel 的输入和输出,例如详细信息保存在数据库中或创建 HL7 消息。 简而言之,输入为 JSON 解析它并输出为任何格式。 最佳答案 var objec
通常我会使用 R 并执行 merge.by,但这个文件似乎太大了,部门中的任何一台计算机都无法处理它! (任何从事遗传学工作的人的附加信息)本质上,插补似乎删除了 snp ID 的 rs 数字,我只剩
我有一个以前可能被问过的问题,但我很难找到正确的描述。我希望有人能帮助我。 在下面的代码中,我设置了varprice,我想添加javascript变量accu_id以通过rails在我的数据库中查找记
我有一个简单的 SVG 文件,在 Firefox 中可以正常查看 - 它的一些包装文本使用 foreignObject 包含一些 HTML - 文本包装在 div 中:
所以我正在为学校编写一个 Ruby 程序,如果某个值是 1 或 3,则将 bool 值更改为 true,如果是 0 或 2,则更改为 false。由于我有 Java 背景,所以我认为这段代码应该有效:
我做了什么: 我在这些账户之间创建了 VPC 对等连接 互联网网关也连接到每个 VPC 还配置了路由表(以允许来自双方的流量) 情况1: 当这两个 VPC 在同一个账户中时,我成功测试了从另一个 La
我有一个名为 contacts 的表: user_id contact_id 10294 10295 10294 10293 10293 10294 102
我正在使用 Magento 中的新模板。为避免重复代码,我想为每个产品预览使用相同的子模板。 特别是我做了这样一个展示: $products = Mage::getModel('catalog/pro
“for”是否总是检查协议(protocol)中定义的每个函数中第一个参数的类型? 编辑(改写): 当协议(protocol)方法只有一个参数时,根据该单个参数的类型(直接或任意)找到实现。当协议(p
我想从我的 PHP 代码中调用 JavaScript 函数。我通过使用以下方法实现了这一点: echo ' drawChart($id); '; 这工作正常,但我想从我的 PHP 代码中获取数据,我使
这个问题已经有答案了: Event binding on dynamically created elements? (23 个回答) 已关闭 5 年前。 我有一个动态表单,我想在其中附加一些其他 h
我正在尝试找到一种解决方案,以在 componentDidMount 中的映射项上使用 setState。 我正在使用 GraphQL连同 Gatsby返回许多 data 项目,但要求在特定的 pat
我在 ScrollView 中有一个 View 。只要用户按住该 View ,我想每 80 毫秒调用一次方法。这是我已经实现的: final Runnable vibrate = new Runnab
我用 jni 开发了一个 android 应用程序。我在 GetStringUTFChars 的 dvmDecodeIndirectRef 中得到了一个 dvmabort。我只中止了一次。 为什么会这
当我到达我的 Activity 时,我调用 FragmentPagerAdapter 来处理我的不同选项卡。在我的一个选项卡中,我想显示一个 RecyclerView,但他从未出现过,有了断点,我看到
当我按下 Activity 中的按钮时,会弹出一个 DialogFragment。在对话框 fragment 中,有一个看起来像普通 ListView 的 RecyclerView。 我想要的行为是当
我是一名优秀的程序员,十分优秀!