- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,我已经在 OpenGL 学习任务中了解了基本的光照。
想象一下这个最简单的照明模型。每个顶点都有一个位置、颜色和法线。着色器获取 ModelViewProjection 矩阵 (MVP)、Modelview 矩阵(MV) 和法线矩阵 (N),计算公式为 ( MV-1)T,以及 LightColor 和 LightDirection 作为制服。顶点着色器执行光照计算 - 片段着色器仅输出插值颜色。
现在,在我遇到的关于这个主题的每个教程中,我都看到两件事让我困惑。首先,LightDirection 已假定位于眼睛坐标中。其次,输出颜色的计算方式为
max(0, dot(LightDirection, N * normal))*LightColor*Color;
我希望LightDirection应该首先反转,也就是说,我认为正确的公式是
max(0, dot(-LightDirection, N * normal))*LightColor*Color;
似乎假设LightDirection实际上是实际光流矢量的反转。
问题 1:此模型中的 LightDirection 被假定为无限远光源的矢量而不是光方向的矢量,这是否是某种既定的约定?这不是一个主要问题,碰巧我在教程中遇到了这样的假设?
问题2:如果LightDirection是世界坐标而不是眼睛坐标,是否应该用法线矩阵或模型 View 矩阵转换为眼睛坐标?
感谢您澄清这些事情!
最佳答案
Q1: Is this some sort of established convention that the LightDirection in this model is assumed to be the vector to the infinitely far light source rather than the vector of the light direction or is this not a principal matter and it just so happened that in the tutorials I came across it was so assumed?
在固定函数 OpenGL 中,当提供光源位置时,第四个参数确定光源是方向性的还是位置性的。在定向光的情况下,提供的矢量指向(无限远的)光源。
如果是位置光源,则每个顶点的 LightDirection 计算如下:LightDirection = LightPosition - VertexPosition
——为了简单起见此计算是在眼睛坐标中完成的 .
Q2: If LightDirection is in world coordinates rather than in eye coordinates, should it be transformed with the normal matrix or the modelview matrix to eye coordinates?
在固定函数 OpenGL 中,通过 glLighti
提供的灯光位置由调用时的当前模型 View 矩阵进行转换。如果光线是定位的,它会被通常的模型 View 矩阵转换。如果是定向光,则使用法线矩阵。
关于opengl - 最简单照明模型中的光方向及其变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7308157/
我有一个 OGre3D+Hikari 应用程序,我想在其背景中循环使用 flash 动画。 我尝试调整 createFlashOverlay 中的一些参数(特别是 zorder 和层),但没有任何改变
奇怪的问题,但只是在寻找指导或建议。我的网络应用程序具有协助运算符(operator)计时的功能。我的任务是从 mysql php 触发器打开红色闪光灯(警灯)? 可以这样做吗,因为我认为网站无法与我
我对 WIX 相当陌生,所以如果我完全错过了这里的船,请原谅我,但我想知道是否可以在 wxs 文件中重用组件(mwm、cab 等)而无需重新链接它们每次。我正在使用的安装程序有几个可执行文件、dll
我喜欢 MVVM Light 的 Messenger 及其灵 active ,但是当我忘记显式注销收件人时(在 Silverlight 4 中),我遇到了内存泄漏问题。 原因解释here ,但我对此表
当我在 Visual Studio 2010 中安装 MVVM Light v3.xx 后,我有许多用于创建 MVVM 项目的模板。 但我需要全新安装 Visual Studio,在这种情况下我安装了
我刚开始使用 libgdx 创建游戏。这是一个使用 scene2d ui 的自上而下的 2d 射击游戏。现在我想,我可以在某些层面上添加黑暗和光明,但我不想使用 box2d 重写所有内容。我不需要逼真
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在尝试将我的 Windows Phone 8 Silverlight 应用程序转换为 8.1 Phone 应用程序作为通用应用程序的一部分。我不知道这是否相关,因为这是我第一次尝试正确实现 Vie
我收到以下消息,在 Spring Cloud 数据流中运行任务。 DEBUG 13167 --- [spring_batch146] com.zaxxer.hikari.pool.HikariPool
我使用带有中继器控件的 jQuery Light Slider 来显示数据库中的图像,如下所示: '> ' run
我熟悉 MVVM Light 工具包的 ViewModelBase、Message,但不熟悉 ViewModelLocator。在我的应用程序中有 Singleton ViewModel,例如 Pri
我是 MVVM 的新手,所以如果这个问题有一个简单的答案,我深表歉意,但我无法通过搜索 Google 来解决这个问题。 所以,基本上,我正在使用 MVVM Light 制作 Windows 10 通用
我已经创建了我的第一个 MVVMLight 项目,我有一个问题: 我有一个按钮,上面绑定(bind)了一个命令。当命令执行时,在不同的用例中,我必须向最终用户获取/提供信息,例如: 如果项目是新的,询
我正在通过播放框架和 mariadb 客户端使用 hikari 池连接,因为我已经定期更新它们(播放 2.6.5 -> 2.6.6 和 mariadb 2.1.1 -> 2.1.2 但不确定它是否相关
关于如何在 ViewModel 中定义一个 RelayCommand 有几个例子: 选项 1(惰性): /// /// Gets the LogOnCommand. /// /// The Log
我正在处理一个示例 MVVM Light 项目并正在实现 SimpleIoc ViewModelLocator。我已经能够构建一个 IRepositoryService,它从数据库(即公司、员工等)中
我们在 Windows 8.1 中有一个与 Win 10 兼容的工作项目。现在的要求是将此项目转换为 UWP。在早期的项目中,我们使用了 PRISM 作为 MVVM 的框架。现在的问题是,对于UWP应
在the latest release of MVVM Light note ,已表明 MVVM Light 现在提供“导航服务”。 但是我自己和我 friend google都找不到怎么用。 我可以
我是一名优秀的程序员,十分优秀!