问题标签 [phong]

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.

0 投票
1 回答
358 浏览

webgl - WebGl Phong 着色器中的错误

我正在 webgl 中开发一个简单的 phong 着色器,我想我已经接近了,但还是有问题。Dead give away:如果我有一个广告牌并让它滚动(所以它像轮子一样旋转),那么被点亮的广告牌部分也会随之旋转 :(。这让我感到困惑,因为这似乎是模型的问题矩阵,但是变换使所有位置和旋转正确,只是照明错误。与视图矩阵同上,我可以四处移动并自由查看,一切都位于正确的位置,只是照明错误。

这是我的着色器(减去空间的定义,为了清晰起见,模型矩阵中的照明移动到 GPU 中){如果您更喜欢在 github 中阅读:https ://github.com/nickgeorge/quantum/blob/master/index .html#L41 }

非常感谢,如果还有其他有用的补充,请告诉我。

0 投票
1 回答
1572 浏览

glsl - gl_FragColor 值是否应该标准化?

我正在编写一个 Phong 光照着色器,我很难决定是否gl_FragColor应该对传递给的值进行归一化。

如果我使用标准化值,照明有点奇怪。例如,远离光源(未点亮)的对象的颜色将由发射分量、环境分量和全局环境光的总和确定。让我们说加起来(0.3, 0.3, 0.3)。正常情况下大致是(0.57, 0.57, 0.57),这比我预期的要亮得多。

但是,如果我使用非归一化值,对于近距离物体,镜面反射区域会变得非常非常明亮,我必须确保我的材质常数通常使用低值。

请注意,我只对 RGB 分量进行归一化,而 alpha 分量始终为 1。

我有点不知所措,找不到与此相关的任何内容。无论是那个还是我的搜索都是完全错误的。

0 投票
0 回答
188 浏览

interpolation - 计算机图形的照明和阴影

我正在准备明天的考试,这是练习题之一。我部分解决了它,但我对其余部分感到困惑。这就是问题所在:考虑一个没有环境光和镜面光(只有漫射光)的灰色世界。三角形 P1,P2,P3 的屏幕坐标为 P1=(100,100), P2= (300,150), P3 = (200, 200)。P!、P2、P3 处的灰度值分别为 1/2、3/4 和 1/4。光在无穷远处,其方向和灰度分别为 (1,1,1) 和 1.0。漫反射系数为1/2。P1,P2,P3的法线分别为N1= (0,0,1), N2 = (1,0,0), N3 = (0,1,0)。考虑三个点 P1,P2,P3 的坐标为 0。不要对法线进行归一化。我已经计算出 3 个顶点 P1、P2、P3 的光照为 (1/4,3/8,1/8)。我还计算了坐标为 (220, 160) 的三角形内点 P 的插值系数由 (1/5,2/5,2/5) 给出。现在我对这个问题还有 4 个问题。

0 投票
1 回答
1253 浏览

three.js - 我可以在 three.js 导入的 Blender 模型中将 MeshPhongMaterial 的环境属性设置为 false 吗?

我正在做一个学生项目,我有一个带有环境光和聚光灯的场景。我已经导入了一个 Blender 模型,其中包含以下代码:

“colorAmbient”:[0.6400000190734865,0.6400000190734865,0.6400000190734865],

在 JSON 文件中。

有没有办法在 MeshPhongMaterial 中关闭此属性,以便它只对聚光灯而不是环境光作出反应。

我尝试删除该行并将其设置为零,但这没有任何效果。我可以关闭此属性吗?或者我应该从场景中移除环境光并使用不同的类型,例如定向?

谢谢你的帮助。

0 投票
1 回答
413 浏览

wpf - WPF 中的逐像素光照

是否可以通过使用它们的着色器效果在 WPF 3d 应用程序 (C#) 中实现每像素照明?

我有一个在 WPF 中运行的基本 3d 应用程序,但它只显示 Gouraud 着色,通过将顶点之间的着色颜色值插入到多边形的内部。我尝试实现每像素照明方法,例如 Phong,但我意识到我似乎无法访问 WPF 像素着色器效果中的插值法线。这是 WPF 的限制,最好直接使用 C++ 和 OpenGL/DirectX?

0 投票
1 回答
9411 浏览

c++ - 光线追踪阴影

因此,我在网上阅读了有关光线追踪的信息,并开始在业余时间从头开始编写光线追踪器。我正在使用 C++,我已经学习了大约一个月了。我已经阅读了网络上的光线追踪理论,到目前为止它工作得很好。它只是一个基本的光线追踪器,既不使用模型也不使用纹理。

起初它制作了一个 Raycaster,并且对结果非常满意。 在此处输入图像描述

所以我尝试了多个对象,它也起作用了。我只是在这个实现中使用了漫反射着色,并将光的颜色添加到对象颜色的未着色点。 在此处输入图像描述 不幸的是,此代码不适用于多个光源。于是我开始重写我的代码,让它支持多灯。我还阅读了 Phong 照明并开始工作: 在此处输入图像描述 它甚至可以与多个灯一起使用: 在此处输入图像描述

到目前为止,我很高兴,但现在我有点卡住了。我已经尝试修复这个问题很长一段时间了,但我什么也没想到。当我添加第二个球体甚至第三个球体时,只有最后一个球体被照亮。最后,我的意思是我的数组中存储所有对象的对象。请参见下面的代码。 在此处输入图像描述

显然,紫色球体应该有类似的照明,因为它们的中心位于同一平面上。令我惊讶的是,球体只有环境照明 --> 阴影,但情况并非如此。

所以现在我的跟踪功能:

接下来是渲染函数:

所以这是我的相交函数:

这是抽象的 Object 类。每个球体、光等都是一个对象。

我使用一个全局对象指针数组来存储世界的所有灯光、球体等:

我知道我的代码一团糟,但如果有人知道发生了什么,我将不胜感激。

编辑 1 我添加了图片。

编辑 2 更新了代码,修复了一个小错误。仍然没有解决办法。

更新:添加了渲染代码,用于创建光线。

0 投票
0 回答
136 浏览

graphics - 光线追踪缺失余弦

我正在查看经典光线追踪器的渲染方程和源代码(因此没有 Monte Carlo 或尚未包含的任何内容),为了清楚起见,将其包含在下面的简短伪代码中。

我很难理解为什么渲染方程中的余弦不包含在光线追踪器实现中。我已经对我认为它丢失的地方发表了评论。

我可以看到,对于完美镜面反射的 BRDF (f_r = (δ(cosθi - cosθr)δ(φi - φr ± π)) / cosθi),余弦被抵消了。但是如果它与 phong 反射模型相结合,如下所示呢?

0 投票
2 回答
8169 浏览

python - 用于闪亮的 Python 3D 曲面图的 Phong 着色

我正在尝试在 Python 中使用镜面着色创建美观的 3D 图,到目前为止,我已经尝试使用带有 3D 轴的 Matplotlib 和来自 Mayavi 的曲面图,例如来自 Mayavi 冲浪示例网页:

在此处输入图像描述

结果看起来不错,在 Mayavi 中似乎确实可以合理控制照明,尽管我似乎无法获得“闪亮”的外观。

在 Matlab 中,这可以通过使用“Phong”照明来实现:

在此处输入图像描述

http://www.mathworks.com/matlabcentral/fileexchange/35240-matlab-plot-gallery-change-lighting-to-phong/content/html/Lighting_Phong.html

因此,我的问题是:如何在基于 Python 的 3D 图中实现这种 Phong 风格的闪亮阴影?

0 投票
0 回答
195 浏览

opengl - 在体素图像上实现 Phong 模型的 OpenGL 着色器

我有一个刚刚由其体素定义的 3D 图像。该图像是灰度图像。我需要用假颜色渲染它。这个想法是编写着色器来实现类似于 Phong 模型的东西。在互联网上,我发现了不同的着色器。但是它们都在渲染点上使用已知法线。所以,当应用 Phong 模型时,OpenGL 管道已经做了很多事情。

不幸的是,因为我的图像直接是体素图像。我没有关于法线的信息。此外,图像直接存储为 3D 纹理。因此,要应用 Phong 模型,我无法从 OpenGL 管道中受益。

那么,有人知道在这种情况下如何执行 Phong 模型吗?

0 投票
0 回答
334 浏览

c++ - Phong 的实现似乎很暗,而且镜面反射也不起作用。光线追踪

下面是我绘制球体的 phong 实现方法。它的参数是 vec3 球体法线(这是我的 vec3 生命值 - vec3 sphereOrigin)和相机位置 vec3 (0,0,-5)。

使用 couts 我发现我的高光计算中的点积返回 ~ -4.9xxx,所以 0 总是在它包含的 max 函数中获胜,并且由于它是 0,所以该行的其余部分是多余的。有什么问题吗这个方法?

而且它看起来很暗,我将光强度提高到 (5,5,5) 以获得更好的球体。

当前图像: http: //imgur.com/U1ihxS0 Phong 仅尝试在前球体 atm 上。