问题标签 [shading]

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 投票
0 回答
96 浏览

javascript - WebGL三角形错误照明

我有一个问题,可能类似于这个问题:WebGL shading/lighting too dark on some triangles
我试图将我的一个旧练习从使用已弃用 glaux 的 C++ OpenGL 移植到 WebGL。
问题是锥体显示错误,多切片时闪烁微弱: 有一个以阿基米德螺线为底的锥体,单切片时没问题: 左边它使用120个扇区,右边是12 个扇区,在 WebGL 上是可以的。 当我使用多个切片(例如 3 个切片)时,问题就开始了: 此图像看起来有点脏,请参见左侧图像。右侧图像中突出显示的上部三角形看起来像是显示了错误的照明。
在此处输入图像描述

在此处输入图像描述在此处输入图像描述

在此处输入图像描述在此处输入图像描述

当我显示法线时,它看起来像是正确计算的。因为法线在上下三角形的角上重合: 我想让代码片段更短,但是数学很长,也无法从 GitHub 中添加脚本,所以我将它们包含在内。表示顶点、法线和突出显示的法线。数学很简单,两个对称的阿基米德螺旋相互叠加: 螺旋被描述为 F(φ) = [φ * cos(φ), φ * sin(φ)] 计算正常 ∇F(φ) = [sin( φ) + φ * cos(φ), -cos(φ) + φ * sin(φ), φ]
在此处输入图像描述
vertsverts_normsnverts



更新 1,着色器:

0 投票
2 回答
95 浏览

vba - Word vba 将底纹应用于新创建的字段

我正在向文档添加字段并添加阴影。以下代码不起作用。

注释掉的行会将阴影添加到文档中的第一个字段。

0 投票
1 回答
177 浏览

c++ - 使用模板缓冲区进行交叉点检测

为了实现延迟闪电,我将光源渲染为具有光半径的球体。

我只将光线的实际位置渲染到屏幕上。结果如下。 在此处输入图像描述

所以我想也许如果我可以渲染这个球体的交集,那么我可以摆脱延迟着色器中每个灯光的 for 循环。

通过使用链接https://kayru.org/articles/deferred-stencil/中的以下文档, 我实现了光球与我的实际场景的交集,并将其保存到下面的纹理中。

在此处输入图像描述

问题是结果与我预期的有点不同。交叉点还包括其他领域。轻量级不应相互交叉。如何实现正确的交集方法?

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 回答
71 浏览

graphics - 计算最大反射(朗伯)

给定在 (1,0,0) 处的表面点 P,法线方向 (1,1,0) 以及 (1,2,0) 处的点光源。如果我们假设表面点 P 是完全漫反射的,那么根据漫反射表面(朗伯)的公式,光必须移动到什么位置才能实现最大反射?

我尝试通过计算 N 和 L2(a,b,c) 之间的点积并使其 = 1 因为最大值。我认为用 cos(0) 实现反射。但它没有用,因为我找不到 L2 请帮忙。

0 投票
1 回答
392 浏览

python - 由熊猫数据框创建的图表的两条线之间的不同颜色阴影

我正在尝试在图表的线条之间进行着色。我尝试使用 plt.fill_between() 但它不起作用。这是我的代码供您参考。请注意,我想在绿色和橙色线之间进行阴影处理,如图所示。

这是程序的输出, 在此处输入图像描述

0 投票
1 回答
70 浏览

r - 在R中用多边形()对线下的区域进行着色

我正在尝试使用多边形()填充线条下方的区域,但该区域被填充在上方。

我一直在寻找过去类似的问题,但他们要么使用 predict 或 dnorm 等解决方案,这似乎不适合我的情况。

这是我的代码:

这就是结果

可能是一个菜鸟问题,但仍然不知道该怎么做。我知道我可以尝试使用 ggplot2,但我想先尝试使用标准图形。

0 投票
1 回答
31 浏览

python - 如何使阴影到达图形的边缘?

我是 matplotlib 的新手,我正在尝试学习如何在条形图中对两条水平线之间的区域进行着色,我想知道如何使它到达边缘。这是一个例子:

这表明了这一点: 图像

0 投票
1 回答
481 浏览

vector - 如何计算3D平面中给定的三角形顶点的法线向量

我对向量知之甚少,所以我想知道如何计算训练中点的法线向量。例如,在三角形 ABC 中,IF A ≡ (0,3,0), B ≡ (0, 0,0) 和 C ≡ (4,0,0) 如何在 B 点找到 ABC 的法线向量?谁能解释一下计算方法?

0 投票
1 回答
38 浏览

numpy - 对大于 2 行的区域的并集进行着色

你能帮我把下面红色突出显示的区域涂上阴影吗?

在此处输入图像描述

我使用“fill_between”在该主题上尝试或阅读的所有内容都将填充行之间的区域。但是,这实际上需要用大于 1/X 的区域对大于 Y=X UNION'd 的区域进行着色(在我的粗略示例中将其着色为红色。

如您所见,我的尝试总是导致填充线条之间的区域的某种组合。

代码:

感谢你的建议

问候,F。