问题标签 [lighting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - OpenGL 聚光灯
我正在尝试在 openGL 的台球桌上制作“聚光灯”。这应该很简单,但是出了点问题,我不知道是什么。
我有一个“PoolLight”类,我用它作为灯的一种保持类。这是:
在 Display::Init 中,我有以下代码:
然而,即使禁用除中间聚光灯外的所有聚光灯,我的场景也会被一种“毯子”照明均匀照亮。
我觉得我可能遗漏了一些明显的东西,但我就是看不到什么。
opengl - 具有非标准投影矩阵的 GLSL 法线
在让我的 GLSL 顶点着色器正确显示顶点几天后,我现在开始使用光照!无论如何,我对openGL光照/法线的理解都不是很好,所以请耐心等待。我不确定我需要对我的法线应用哪些翻译才能让它们正确显示。这是设置我的灯的应用程序代码:
到目前为止相当标准的东西。现在由于应用程序的要求,这里是(有点奇怪的)顶点着色器:
我的理解是我需要将其转换gl_Normal
为世界坐标。对于我的着色器,我相信这将是:
然后我需要获取灯光的位置(已在世界空间的应用程序代码中声明)。我想我会这样做:
然后通过求法线与光照位置的点积求出光照的漫反射值。
此外,我认为在片段着色器中,我只需要将颜色乘以这个漫反射值,它就可以工作了。我只是真的不确定如何正确转换法线坐标。我的假设是正确的还是我完全没有把握?
编辑:
在读到法线矩阵 ( gl_NormalMatrix
) 只是矩阵的 3x3 逆gl_ModelView
矩阵后,我猜想在世界空间中计算法线的正确方法是gl_Normal
乘以modelTranslationMatrix * modelRotationMatrix * modelScaleMatrix
? 我还需要将它乘以P
矩阵还是与正常计算无关?
opengl - 3D 照明 (OpenGL)
您好,我想创建一个漂亮的 3D 场景来展示一些 3D 模型。我应该如何管理灯光以使模型看起来非常 3D!像 Solidworks 之类的东西!我需要多少光源?方向还是位置?在哪里?身体用什么材料?
c++ - OpenGL 光照四边形
只是一个快速的问题。我在 3D OpenGL 场景中有一个四边形。我逆时针定义了平面的法线。使法线指向平面的一侧。在我的光源方向。四边形很轻,但在两侧。
它不仅应该在四边形的一侧发光吗?还是像四边形这样的基元非常薄,因此从两侧看起来都很轻。因此,如果我想制作一堵墙,我会使用两个四边形。墙的每一侧都有一个。
谢谢
opengl - OpenGL照明小物体?
在处理非常小的粒子时,我遇到了照明问题。我正在做基于粒子的流体模拟,现在正在将流体渲染为非常小的多边形球体(我说的是球体的半径约为 0.03 个单位)。我的场景中的照明没有按照我想要的方式照亮它们,而且我无法让它看起来正确。我正在寻找类似于此图像中粒子上的柔和照明的东西......
但是我的粒子看起来像这样......
看看我的粒子如何具有明亮的白色部分,而绿色粒子只是柔和地点亮并且没有大的白色热点。我知道原因要么是我的灯光设置,要么只是粒子太小以至于灯光占据了更大的空间(这可能吗??)。我的照明设置如下...
opengl - 3D 照明 (OpenGL)
我已经问过这个问题,但我没有得到我的答案。顺便说一句,我发现了一些新东西。我想从 Solidworks 导出的 wrl 文件中显示一个 3D 模型。该文件包含三角形的顶点,我正在使用 glBegin(GL_TRIANGLES) 绘制它们,但它看起来不太好,也没有看起来很3D!我尝试使用 gluSphere 在该场景中绘制一个具有相同照明设置的球体,它看起来非常漂亮和 3D!!!!
有什么关于 Glu 的吗?
我应该使用 Glu 来绘制三角形吗?
algorithm - 快速的 2D 照明算法?
我们有一个带有半透明墙壁和几个光源的矩形区域。我们只考虑俯视图,所以这是一个 2D 问题。我们需要找到该区域每个点的近似照明(信号强度)。
我们需要让算法变得非常快。蛮力方法对于我们的目的来说太慢了。您可以假设所有墙壁都衰减相同的量,即使是恒定的衰减量也是可以接受的。
该区域最多为 1000x1000,并且不会有超过 100 个光源。光源的范围可以约为。50-100 个单位(它们不是无限的)。欢迎使用更快但近似的算法。
提前致谢!
我尝试的基本上是蛮力方法:将每个样本点与每个墙壁和光源进行比较以确定其光度。显然,它是 O(n^3) 并且慢得令人无法接受。
时间我并不是指任何特定的限制:但最好在 100 毫秒或更快的时间内完成整个图像。请记住,我对准确性的要求不如速度。
opengl - 如何判断活动纹理是否在 GLSL 中为纹理 id 0?
我有没有纹理的模型资产,我厌倦了在没有照明的情况下将它们渲染为黑色。这是因为如果纹理 id 0 被绑定并且我问采样器它告诉我它是黑色的。后来导致 0 * 光照使整个对象变黑而没有光照。理想情况下,我希望它有颜色、材质和光照,(如果我们不将它乘以 0 就会发生这种情况)
我考虑过使用一个uniform
标志并为每个对象切换它,但如果我们稍后需要部分纹理资产,我希望有一种更简单、性能更高的方式。
例如,我也有绑定一个白色纹理推动一个白色像素并将其设置为包裹,但这看起来像“Chi Ting”。
笔记。一个有效的纹理可能会返回黑色,所以我们不能忽略黑色纹理读取。好吧,我们可以,但看起来不太好。目前我们没有使用任何缓冲区对象,只是使用glBegin()
glEnd()
显示列表的已弃用方法。
任何其他想法将不胜感激。
java - OpenGL 灯不工作
我正在使用此代码使用 LWJGL 绘制具有不同颜色的不同立方体:
它把立方体画得很好,颜色也很完美,但只要我给它加光,一切都会变白,看起来很糟糕。这是我的照明代码:
有谁知道我在这里做错了什么?这是示例图片:
c++ - Opengl正确的照明问题
我编写了以下程序来在有 2 个墙壁和地板的房间的桌子上显示一个茶壶。
问题是我的照明部分没有按预期工作。它没有均匀地照亮我所有的物体......我错过了什么?这使得即使是茶壶也很难出海。我的照明部分处于显示功能。