问题标签 [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.
c# - 光线追踪出了问题
我正在尝试用 c#(从 python 移植)做一个简单的光线追踪分配。我已经设法使示例代码显示正确的图片,但是当我尝试使其适应我的作业时出现问题。
如果我知道出了什么问题,我会发布一些我认为可能会有所帮助的代码,但我不知道从哪里开始。
基本上我的作业输出如下:
http://i56.tinypic.com/2vcdobq.png
开启镜面高光,并且
http://i53.tinypic.com/2e1r38o.png
把它关掉。它看起来像:
http://i56.tinypic.com/2m7sxlh.png
我的 Phong 光照公式如下所示:
我从工作示例代码中复制了它,所以我知道它有效。
任何想法都会很棒,因为我很难过。
glsl - glsl (lwjgl) 中的 Phong 镜面反射光照
我目前正在尝试使用 glsl 和使用 Phong 模型在球体上制作镜面光照。
这就是我的片段着色器的样子:
sunPosition 没有移动并设置为值 (2.0f, 3.0f, -1.0f)。
问题是如果镜面反射计算正确,图像看起来什么都不是。
这是它的样子:http: //i.imgur.com/Na2C6.png
我在此代码中没有任何环境光/发射光/消散光的原因是因为我想让镜面光部分首先工作。
感谢您的帮助!
编辑:@Darcy Rayner 那不死者帮助了很多艰难,它似乎仍然是不正确的东西......
当前代码如下所示:
顶点着色器:
片段着色器:
球体看起来像这样:
太阳位置: sunPosition = new Vector(12.0f, 15.0f, -1.0f);
opengl - OpenGL/GLSL 可变向量:如何避免顶点周围的星爆?
在 OpenGL 2.1 中,我将位置和法线向量传递给我的顶点着色器。然后顶点着色器将 a 设置varying
为法线向量,因此理论上它是线性插值每个三角形的法线。(我认为这是 Phong 着色的基础。)
在片段着色器中,我使用带有朗伯定律的法线来计算漫反射。这按预期工作,除了顶点之间的插值看起来很有趣。具体来说,我看到了星爆效应,其中沿着顶点之间的边缘有明显的“热点”。
这是一个示例,不是来自我自己的渲染,而是展示了完全相同的效果(请参阅页面中间的金色球体): http: //pages.cpsc.ucalgary.ca/~slongay/pmwiki-2.2.1/pmwiki.php ?n=CPSC453W11.Lab12
维基百科说这是 Gauaud 阴影的问题。但据我了解,通过对法线进行插值并按片段运行我的光照计算,我使用的是 Phong 模型,而不是 Gouraud。是对的吗?
如果我要使用更精细的网格,我认为这些星暴会不那么明显。但是增加更多的三角形是解决这个问题的唯一方法吗?我认为有一种方法可以在没有星爆效果的情况下获得平滑插值。(我当然在其他地方的粗糙网格上看到过非常平滑的阴影,例如在 3d Studio Max 中。但也许他们正在做一些比仅仅插入法线更复杂的事情。)
c++ - 如何真实地将 Phong 照明与菲涅耳电介质反射/透射相结合?
更新:我回答了我自己关于使用什么照明模型的问题,但现在我需要知道如何计算反射和透射光线的菲涅耳项。
我有一个部分实现的 C++ 光线追踪器。现在,带有阴影光线的 Phong 光照效果很好。我选择不使用单一颜色加上标量环境/漫反射/标量系数的实体;这三个系数每个都有 RGB 分量,所以我可以实现这样的材料。另一方面,灯光具有单一的 RGB 颜色以及标量漫反射和镜面反射强度。还有一个 RGB 环境光。
在这一点上,我还可以实现反射或透射所有光的完全介电实体,反射光与折射光的比例由菲涅耳方程确定。但是,如何将反射和折射的颜色与 Phong 颜色真实地结合起来?我想要有轻微反光的彩色塑料、抛光金色、完美的镜面或玻璃球、彩色玻璃、正面透明但边缘呈绿色的玻璃板,等等。我打算给每个实体添加 RGB 反射率和透射率系数,并让实体设计者确保环境+漫反射+镜面反射+反射率+透射率在合理范围内,但这似乎是任意的。有没有基于物理的方法?
c++ - OpenGL 3.x Assimp 实现 phong 着色(法线?)
我无法让 phong 阴影看起来正确。我很确定我的 OpenGL 调用或加载法线的方式有问题,但我想这可能是其他问题,因为 3D 图形和 Assimp 对我来说仍然很新。尝试加载 .obj/.mtl 文件时,我看到的问题是:
- 模型似乎太亮了(更少的 phong 风格,更完全褪色,太亮了)。
- 被照亮的面似乎被均匀地照亮(除了仅当光源位置移动到几乎在模型正上方时才显示的镜面高光)
- 由于问题 1 和 2,球体看起来非常错误:
脸大的东西看起来(不太明显)也是错误的:
我可能是错的,但对我来说,这看起来不像是正确的 phong 着色。
这是我认为可能相关的代码(如有必要,我可以发布更多):
文件:assimpRenderer.cpp
文件:shader.vert
文件:shader.frag
我知道要查看很多内容,但是我将大部分代码都放在了上面,以免假设问题出在哪里。
opengl - 用定向光源计算反射矢量
我正在使用一种简单形式的 Phong 着色模型,其中场景由在方向 -y 上照射的定向光照亮,单色光强度为 1。视点无限远,沿着向量给定的方向看(- 1, 0, -1)。
在这种情况下,阴影方程由下式给出
哪里L
是定向光源,kd
,ks
两者都是0.5
和n_s = 50
在这种情况下,我该如何计算R
向量?
我很困惑,因为为了计算有限向量,我们需要有限坐标。在定向光的情况下,它在 -y 方向上无限远。
performance - Matlab计算向量的反射
我必须计算图像的镜面高光(phong)。给出了法线向量和“光向量”。现在我必须计算光反射 - 是否有一个有效的 matlab 函数可以将光矢量翻转到法线矢量上以获得反射光矢量?
I规格= k s * I * (r * v) p
其中:
l
是光向量
n
是表面的法线向量
r
是反射向量
v
是从反射点到观察者的向量
p
是光泽度
graphics - 如何照亮物体,phong 模型
我试图弄清楚如何使用 phong 模型通过照明照明来缩放颜色。例如,给定 I = KaAx,其中 ka 是环境系数,Ax 是环境光照强度,其中 x 可以是 rb 或 g,我想将其应用于纹理颜色为 (1,0,1) 的表面,例如. 我尝试将单个 rgb 值乘以 I,(r*Ka*Ar.r,r*Kb*Ag,r*Kg*Ab) 照明,但是唉,它可以完全改变我不想要的颜色。
opengl - GLSL 中 gl_LightSource 衰减因子的问题
我正在尝试使用 Phong/Blinn 着色模型,但在让衰减正常工作时遇到了麻烦。由于某种原因,面向点光源的几何图形变成了完全白色。我特别卡住了,因为(1)代码在固定功能中工作得很好(即我所有的衰减/位置因子都设置得很好),并且(2)如果我替换它工作得很好:
和
也就是说,我所有的其他计算(距离、方向、归一化)似乎工作正常,但是这行代码存在问题(不知何故)。如果需要,我很乐意发布更多信息,但这似乎是问题所在。
PS 运行 Windows 7,我的 OpenGL 版本打印为 4.3。
更新:
这是该问题的打印屏幕。
和它的样子att = 1.0 / (1 + 0.1*dist);
java - 自己实现带有光线投射的 phong 照明
我正在尝试从头开始用 java 编写一个程序,该程序使用光线投射技术和 phong 照明渲染一个球体,但我有点迷茫。
我理解 phong 方程系数背后的概念,但我不明白如何获得向量值,以及这一切与光线投射有什么关系
所以假设我想在屏幕中间渲染球体,我有它的位置和半径,所以(cx,cy,r)。我现在究竟从哪里开始?我究竟如何得到向量值?我的想法如下(伪代码)
但我不知道这是否正确,如果是,我如何获得向量值,对于初学者来说,Normal?
你能指出我正确的方式吗?我已经尝试了很多谷歌搜索,但没有成功,提前谢谢你