问题标签 [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 投票
3 回答
409 浏览

c++ - 使用 Phong 方法的不良照明

我正在尝试制作一个立方体,它是不规则的三角形,但实际上是共面的,阴影正确。

这是我目前的结果: 在此处输入图像描述

带线框:

在此处输入图像描述

在我的程序中计算的法线:

在此处输入图像描述

由 meshlabjs.net 计算的法线:

在此处输入图像描述

为立方体使用常规大小的三角形时,照明可以正常工作。如您所见,我正在复制顶点并使用角度加权。

lighting.frag

mainmesh.frag

按照代码为画家生成顶点、法线和面。

遵循画家代码:

编辑:抱歉不够清楚。立方体只是一个例子。我的要求是阴影适用于任何类型的网格。那些边缘非常锋利的,以及那些非常有机的(如人类或动物)。

0 投票
1 回答
238 浏览

c++ - RayTracing,Phong 模型/镜面照明不起作用?

我一直在尝试使用 Phong 模型产生光泽阴影,但由于某种原因而不是光泽外观,我得到的只是球体前面的大白色斑点。最初该模型适用于单个球体,但现在我更新了代码,因此我可以绘制多个球体,尽管应用了相同的逻辑,但模型已经开始失败,我不知道为什么。

单球体:漫反射和镜面反射 单球体:漫反射和镜面反射

扩散的,多的

扩散的,多的

漫反射+镜面反射,多重

漫反射+镜面反射,多重

主要部分

据我了解,镜面反射 = white * dot(view_dir, L_dir)^n * ks 并且总照明为 = 镜面反射 + 漫反射 + 环境光。

0 投票
0 回答
39 浏览

javafx - JavaFX:如何制作透明的发光材质?

我想创建一个具有均匀发光的 PhongMaterial。效果是,我有一个小型地球模型,我想用廉价的极光仿制品围绕它。 https://i1.wp.com/trendintech.com/wp-content/uploads/2017/07/Screen-Shot-2017-07-09-at-12.06.23.png?fit=1079%2C742。耀斑不是必需的或不需要的,我只想要围绕它的淡绿色球体。

我本来想用白色做这个的方法就是

然而,这只会产生一个不透明的白色球体。我需要什么使它透明且非常微妙?

当我们这样做时,我不想为我想要制作的每种颜色都提供一个新图像。我想做类似的事情

我怎么做?或者以其他方式制作一种均匀自发光的材料?

我也尝试过仅使用未照明的透明球体来做到这一点,这看起来不错,但它没有您在该图像中看到的明亮肢体;它看起来就像一个覆盖地球的扁平圆圈。我认为这是因为在现实生活中,这种材料是发光的。但是,如果有不同或更好的方法来达到相同的效果,我会全力以赴。

0 投票
1 回答
735 浏览

opengl - OpenGL Phong 光照:镜面高光是错误的

我在 OpenGL 中的 Phong 光照着色器似乎有一个奇怪的问题。镜面高光出现在对象的反面。

手头的问题:

没有最靠近灯光的高光

在对面突出显示

如您所见,镜面高光出现在立方体的另一侧(从灯光的角度来看,它也出现在立方体垂直边缘的角落。它应该只出现在最靠近灯光的一侧。

立方体的顶点:

顶点着色器:

片段着色器:

0 投票
0 回答
258 浏览

c++ - opengl点光源phong镜面反射问题

phong着色中的点光镜面反射显示不正确,假设存在一些着色器问题?高光显示旋转并倾斜到渲染目标的中心

以前用几乎相同的着色器代码完成它,找不到问题所在,有人可以调查吗?

在片段着色器中, f_input.position是片段的世界空间位置。 u_view_pos是相机的世界空间原点。

场景 场景 场景

0 投票
1 回答
585 浏览

c++ - OpenGL:没有着色器的照明

如何在不使用着色器的情况下制作 phong 照明(大学任务)。我可以手动计算环境、漫反射、镜面反射并将它们的总和转移到 glColor 吗?

UPD:我可以很好地显示环境和漫反射的总和。但是高光没有正确渲染,它变得非常分散。

我的问题在图片:

我的代码:

0 投票
0 回答
223 浏览

c++ - 光线追踪器中的折射产生奇怪的结果,如何组合所有颜色分量?

我正在用 C++ 编写一个光线追踪器,到目前为止只有球体,在实现了 Phong 的反射模型、阴影和反射之后,一切似乎都运行良好。当我实现折射和菲涅尔时,我似乎无法让事情看起来正确。我一直在考虑这是否可能是因为当我在球体对象内部/外部时如何移动 rayOrigin 但在尝试和谷歌搜索之后我仍然无法正确处理。

下面是一张图片。灰色背景是一个大的漫射球体,红色球体后面的较小的蓝色球体也是漫射的。其他是反射和折射的,ior 为 1.5-1.6。有两个点灯,一个稍微偏左,一个稍微偏右。 在此处输入图像描述

如图所示,球体看起来根本不透明。球体上也有明显的圆形颜色差异。也许这可能是因为我在跟踪函数中组合每个像素的颜色的方式:

以下是其他相关函数:computeRefraction:

菲涅耳:

反射:

对于理解和解决这些渲染问题的任何帮助将不胜感激,因为上周没有其他帖子或理论帮助我自己解决这个问题。谢谢!

0 投票
1 回答
3997 浏览

graphics - Phong 着色和 Gouraud 着色有什么区别?

据我了解,Gouraud着色计算每个顶点的光色并对该颜色进行插值,而Phong着色会插值每个像素的法线并根据该插值计算光色。

然而,当我试图从数学上推导出光色时,我最终得到了两种方式的相同公式!

我为此画的图

(其中n1n2是两个顶点的法线,t是插值的系数,L是光的方向,上面的平面和虚线表示屏幕和一个像素。)

两种方法的浅色派生如下:

  • 古洛:L = t*dot(n1,L) + (1-t)*dot(n2,L)

  • 蓬:L = dot(t*n1+(1-t)*n2,L)

结果是一样的。

谁能告诉我我的推导有什么问题?

0 投票
1 回答
77 浏览

c++ - OpenGL: Problem With Phong Model Specular Lighting

I know that specular lighting is also based on the view direction. But I can't find what the default view direction is in old OpenGL function glLight(.. GL_SPECULAR..). How does it determine the direction of the view?

0 投票
1 回答
592 浏览

python - 如何在 python 上制作镜面光照来实现 Phong 光照?

我需要你的帮助。使用 python,我必须通过 phong 模型实现我的 3D 形状的照明。我的图是一个三角形的二十面体。我能够构建这个形状,找到顶点的坐标,并计算出每个面的法线。

我用过pygame,pyopengl。

为了实现 phong 光照模型,我设法制作了环境光照和漫反射光照,但我不知道要使用哪些函数来实现镜面光照。

我试图用不同的参数应用诸如 glMaterialfv() 之类的函数,但对我来说没有用。

这是我的代码: