问题标签 [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.
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(φ), φ]
verts
verts_norms
nverts
更新 1,着色器:
vba - Word vba 将底纹应用于新创建的字段
我正在向文档添加字段并添加阴影。以下代码不起作用。
注释掉的行会将阴影添加到文档中的第一个字段。
c++ - 使用模板缓冲区进行交叉点检测
为了实现延迟闪电,我将光源渲染为具有光半径的球体。
所以我想也许如果我可以渲染这个球体的交集,那么我可以摆脱延迟着色器中每个灯光的 for 循环。
通过使用链接https://kayru.org/articles/deferred-stencil/中的以下文档, 我实现了光球与我的实际场景的交集,并将其保存到下面的纹理中。
问题是结果与我预期的有点不同。交叉点还包括其他领域。轻量级不应相互交叉。如何实现正确的交集方法?
graphics - Phong 着色和 Gouraud 着色有什么区别?
据我了解,Gouraud着色计算每个顶点的光色并对该颜色进行插值,而Phong着色会插值每个像素的法线并根据该插值计算光色。
然而,当我试图从数学上推导出光色时,我最终得到了两种方式的相同公式!
(其中n1和n2是两个顶点的法线,t是插值的系数,L是光的方向,上面的平面和虚线表示屏幕和一个像素。)
两种方法的浅色派生如下:
古洛:
L = t*dot(n1,L) + (1-t)*dot(n2,L)
蓬:
L = dot(t*n1+(1-t)*n2,L)
结果是一样的。
谁能告诉我我的推导有什么问题?
graphics - 计算最大反射(朗伯)
给定在 (1,0,0) 处的表面点 P,法线方向 (1,1,0) 以及 (1,2,0) 处的点光源。如果我们假设表面点 P 是完全漫反射的,那么根据漫反射表面(朗伯)的公式,光必须移动到什么位置才能实现最大反射?
我尝试通过计算 N 和 L2(a,b,c) 之间的点积并使其 = 1 因为最大值。我认为用 cos(0) 实现反射。但它没有用,因为我找不到 L2 请帮忙。
r - 在R中用多边形()对线下的区域进行着色
我正在尝试使用多边形()填充线条下方的区域,但该区域被填充在上方。
我一直在寻找过去类似的问题,但他们要么使用 predict 或 dnorm 等解决方案,这似乎不适合我的情况。
这是我的代码:
这就是结果。
可能是一个菜鸟问题,但仍然不知道该怎么做。我知道我可以尝试使用 ggplot2,但我想先尝试使用标准图形。
python - 如何使阴影到达图形的边缘?
我是 matplotlib 的新手,我正在尝试学习如何在条形图中对两条水平线之间的区域进行着色,我想知道如何使它到达边缘。这是一个例子:
这表明了这一点: 图像
vector - 如何计算3D平面中给定的三角形顶点的法线向量
我对向量知之甚少,所以我想知道如何计算训练中点的法线向量。例如,在三角形 ABC 中,IF A ≡ (0,3,0), B ≡ (0, 0,0) 和 C ≡ (4,0,0) 如何在 B 点找到 ABC 的法线向量?谁能解释一下计算方法?