问题标签 [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.
webgl - WebGl Phong 着色器中的错误
我正在 webgl 中开发一个简单的 phong 着色器,我想我已经接近了,但还是有问题。Dead give away:如果我有一个广告牌并让它滚动(所以它像轮子一样旋转),那么被点亮的广告牌部分也会随之旋转 :(。这让我感到困惑,因为这似乎是模型的问题矩阵,但是变换使所有位置和旋转正确,只是照明错误。与视图矩阵同上,我可以四处移动并自由查看,一切都位于正确的位置,只是照明错误。
这是我的着色器(减去空间的定义,为了清晰起见,模型矩阵中的照明移动到 GPU 中){如果您更喜欢在 github 中阅读:https ://github.com/nickgeorge/quantum/blob/master/index .html#L41 }
非常感谢,如果还有其他有用的补充,请告诉我。
glsl - gl_FragColor 值是否应该标准化?
我正在编写一个 Phong 光照着色器,我很难决定是否gl_FragColor
应该对传递给的值进行归一化。
如果我使用标准化值,照明有点奇怪。例如,远离光源(未点亮)的对象的颜色将由发射分量、环境分量和全局环境光的总和确定。让我们说加起来(0.3, 0.3, 0.3)
。正常情况下大致是(0.57, 0.57, 0.57)
,这比我预期的要亮得多。
但是,如果我使用非归一化值,对于近距离物体,镜面反射区域会变得非常非常明亮,我必须确保我的材质常数通常使用低值。
请注意,我只对 RGB 分量进行归一化,而 alpha 分量始终为 1。
我有点不知所措,找不到与此相关的任何内容。无论是那个还是我的搜索都是完全错误的。
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 个问题。
three.js - 我可以在 three.js 导入的 Blender 模型中将 MeshPhongMaterial 的环境属性设置为 false 吗?
我正在做一个学生项目,我有一个带有环境光和聚光灯的场景。我已经导入了一个 Blender 模型,其中包含以下代码:
“colorAmbient”:[0.6400000190734865,0.6400000190734865,0.6400000190734865],
在 JSON 文件中。
有没有办法在 MeshPhongMaterial 中关闭此属性,以便它只对聚光灯而不是环境光作出反应。
我尝试删除该行并将其设置为零,但这没有任何效果。我可以关闭此属性吗?或者我应该从场景中移除环境光并使用不同的类型,例如定向?
谢谢你的帮助。
wpf - WPF 中的逐像素光照
是否可以通过使用它们的着色器效果在 WPF 3d 应用程序 (C#) 中实现每像素照明?
我有一个在 WPF 中运行的基本 3d 应用程序,但它只显示 Gouraud 着色,通过将顶点之间的着色颜色值插入到多边形的内部。我尝试实现每像素照明方法,例如 Phong,但我意识到我似乎无法访问 WPF 像素着色器效果中的插值法线。这是 WPF 的限制,最好直接使用 C++ 和 OpenGL/DirectX?
c++ - 光线追踪阴影
因此,我在网上阅读了有关光线追踪的信息,并开始在业余时间从头开始编写光线追踪器。我正在使用 C++,我已经学习了大约一个月了。我已经阅读了网络上的光线追踪理论,到目前为止它工作得很好。它只是一个基本的光线追踪器,既不使用模型也不使用纹理。
起初它制作了一个 Raycaster,并且对结果非常满意。
所以我尝试了多个对象,它也起作用了。我只是在这个实现中使用了漫反射着色,并将光的颜色添加到对象颜色的未着色点。
不幸的是,此代码不适用于多个光源。于是我开始重写我的代码,让它支持多灯。我还阅读了 Phong 照明并开始工作:
它甚至可以与多个灯一起使用:
到目前为止,我很高兴,但现在我有点卡住了。我已经尝试修复这个问题很长一段时间了,但我什么也没想到。当我添加第二个球体甚至第三个球体时,只有最后一个球体被照亮。最后,我的意思是我的数组中存储所有对象的对象。请参见下面的代码。
显然,紫色球体应该有类似的照明,因为它们的中心位于同一平面上。令我惊讶的是,球体只有环境照明 --> 阴影,但情况并非如此。
所以现在我的跟踪功能:
接下来是渲染函数:
所以这是我的相交函数:
这是抽象的 Object 类。每个球体、光等都是一个对象。
我使用一个全局对象指针数组来存储世界的所有灯光、球体等:
我知道我的代码一团糟,但如果有人知道发生了什么,我将不胜感激。
编辑 1 我添加了图片。
编辑 2 更新了代码,修复了一个小错误。仍然没有解决办法。
更新:添加了渲染代码,用于创建光线。
graphics - 光线追踪缺失余弦
我正在查看经典光线追踪器的渲染方程和源代码(因此没有 Monte Carlo 或尚未包含的任何内容),为了清楚起见,将其包含在下面的简短伪代码中。
我很难理解为什么渲染方程中的余弦不包含在光线追踪器实现中。我已经对我认为它丢失的地方发表了评论。
我可以看到,对于完美镜面反射的 BRDF (f_r = (δ(cosθi - cosθr)δ(φi - φr ± π)) / cosθi),余弦被抵消了。但是如果它与 phong 反射模型相结合,如下所示呢?
python - 用于闪亮的 Python 3D 曲面图的 Phong 着色
我正在尝试在 Python 中使用镜面着色创建美观的 3D 图,到目前为止,我已经尝试使用带有 3D 轴的 Matplotlib 和来自 Mayavi 的曲面图,例如来自 Mayavi 冲浪示例网页:
结果看起来不错,在 Mayavi 中似乎确实可以合理控制照明,尽管我似乎无法获得“闪亮”的外观。
在 Matlab 中,这可以通过使用“Phong”照明来实现:
因此,我的问题是:如何在基于 Python 的 3D 图中实现这种 Phong 风格的闪亮阴影?
opengl - 在体素图像上实现 Phong 模型的 OpenGL 着色器
我有一个刚刚由其体素定义的 3D 图像。该图像是灰度图像。我需要用假颜色渲染它。这个想法是编写着色器来实现类似于 Phong 模型的东西。在互联网上,我发现了不同的着色器。但是它们都在渲染点上使用已知法线。所以,当应用 Phong 模型时,OpenGL 管道已经做了很多事情。
不幸的是,因为我的图像直接是体素图像。我没有关于法线的信息。此外,图像直接存储为 3D 纹理。因此,要应用 Phong 模型,我无法从 OpenGL 管道中受益。
那么,有人知道在这种情况下如何执行 Phong 模型吗?
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 上。