Questions tagged «lighting»

模拟游戏中的灯光和照明,包括其与环境的交互作用。游戏的核心元素,可以将活力带入其他静态世界。

4
如何实现2D照明?
我想知道在2D游戏中达到“照明”效果的最佳方法是什么。例如,如果我的主角正在发光,当角色靠近其他受光影响的物体时,我可以使用什么技术来完成该角色发光的视觉效果?

1
制作夜景而不会在监视器上变暗
这将是使3D场景看起来像“漆黑的夜晚”的好方法,而又不会在监视器上那么黑,以至于很难看清东西(尤其是在明亮的房间中玩耍时)。 我一直在尝试使自然光变成浅蓝色,并具有相当暗的环境成分和较亮的漫反射成分,但根据确切的参数,我发现结果要么有点缺乏光泽,要么仍然太暗。 有什么好的例子要学习吗?

1
“烤灯”是什么意思?
烘焙光照贴图是什么意思?我在Unity3d中听到了这个声音,然后又找到了这个用于Sketchup的LightUp插件,用于烘焙lightmap。 从我观察到的结果来看,烘焙的光照贴图为3d对象带来了更加逼真的感觉。在对象上烘烤光的目的是使cg动画看起来像在预渲染动画中看到的那样吗?
36 lighting 

2
为什么有些游戏显示灯光穿过墙壁发光?
在某些游戏中,即使将视频质量设置为高水平,我也会看到灯光穿过墙壁。 我最近玩过的一些游戏示例包括《无主之地2》(导弹爆炸)和《克苏鲁的呼唤》(灯笼;该游戏甚至使用了虚幻引擎4)。 这是错误还是出于性能原因? 示例无主之地2:https://youtu.be/9bV83qA6_mU? t = 419(几次,但很快) 额外的问题:在后一种情况下,有什么方法可以廉价地使用光线跟踪解决问题?我想昂贵的RT肯定可以解决问题,但是我想知道它是否也可以“便宜”的形式用于解决此特定问题。

3
我如何为恒星建模?
我正在尝试在Unity中为一颗星星建模,并且可以完成一些工作,但这并不理想。目前,我使用的是一个大球体,其自发光材料的表面上包含星形纹理,并使用聚光灯来营造星光效果,如下所示: 虽然有效,但看起来并不是最大的。我正在寻找一种与喀尔巴太空计划如何塑造恒星类似的效果: 我怎样才能达到这种效果?

5
如何使粒子发光并向周围投射光线?
我目前正在尝试在黑暗的森林中制作萤火虫效果。该水平仪的光线非常暗,播放器是少数几个光源之一。为了让玩家更好地看到关卡,我尝试使发光的萤火虫随机出现在地图上。一种方法是使用粒子系统。但是我不能使粒子在周围环境中发光。有没有办法做到这一点?


4
如何获得平滑的2D照明效果?
我正在XNA中制作基于2D瓦片的游戏。 目前,我的闪电看起来像这样。 我怎样才能使它看起来像这样? 并非每个块都有自己的色彩,而是具有平滑的覆盖层。 我假设使用某种着色器,并将周围瓷砖的照明值传递给着色器,但是我是着色器的初学者,因此我不确定。 我当前的照明计算光,然后将其传递到a SpriteBatch并使用tint参数进行绘制。每个图块都有一个Color在绘制之前在我的照明算法中计算出的,用于着色。 这是一个有关我当前如何计算光照的示例(我也从左,右和下进行此操作,但是我真的厌倦了逐帧进行此操作...) 因此,到目前为止,获取和吸引人们的光是没有问题的! 我看过无数关于战争迷雾的教程,并使用渐变圆形叠加创建平滑的闪电,但是我已经有了一个不错的方法为每个瓦片分配一个闪电值,只需在它们之间进行平滑即可。 所以要复习 计算照明(完成) 绘制图块(完成,我知道我需要为着色器进行修改) 阴影图块(如何传递值和应用“渐变”)

9
照明模型中的线性衰减分量是否具有物理对应物?
在OpenGL(和其他系统)中,点光源的距离衰减因子类似于1/(c+kd+sd^2),其中d距光源的距离为c,k并且s为常数。 我了解对sd^2现实中预期的物理上精确的“反平方定律”衰减建模的组件。 我猜想常数c(通常为1)是否可以处理很小的值d(也许除以零防御?)。 线性kd组件在模型中起什么作用(k在OpenGL中默认为零)。什么时候使用其他值k?我知道这称为“线性衰减”分量,但是它在照明模型中模拟什么行为?在我所知的任何物理光模型中似乎都没有出现。 [编辑] David Gouveia指出,线性因子可用于帮助使场景“看起来”更接近开发商/艺术家的意图,或更好地控制光线的散失率。在哪种情况下,我的问题变成“线性衰减因子是否具有物理上的对应关系?或者它只是用作帮助控制场景中的光质量的软糖因子?”
18 lighting 

3
如何创建这样的照明效果?
这是我见过的最漂亮的2D照明,我也想执行这样的照明。我该怎么做? 我不在乎物理或粒子如何模拟 -我只想了解照明。 以下是一些视频供参考: http://www.youtube.com/watch?v=BIQRhOFkvQY http://www.youtube.com/watch?v=tnTYXPuecMs http://www.youtube.com/watch?v=rhC_jVM8IYU http://www.youtube.com/watch?v=_Aw5BdjWqqU 或者,您可以在此处下载《污染星球2》。
18 xna  lighting  hlsl 

1
Phong照明-镜面照明有些奇怪
我实施了Phong照明。一切似乎都可以正常工作-圆环和球体都按预期方式进行了照明,等等。但是我注意到定向光的镜面照明有些奇怪。 这是两个屏幕截图。 第一: 第二: 如您所见,当相机远离物体时,更多区域具有镜面照明。 以下是简化的顶点着色器: #version 330 core layout(location = 0) in vec3 vertexPos; layout(location = 1) in vec3 vertexNorm; layout(location = 2) in vec2 vertexUV; uniform mat4 MVP; uniform mat4 M; out vec2 fragmentUV; out vec3 fragmentNormal; out vec3 fragmentPos; void main() { fragmentUV = vertexUV; fragmentNormal = …

1
GLSL光线(衰减,颜色和强度)公式
我正在Voxel引擎中实现点光源,我真的在努力获得良好的光流,从光源附近的100%到光半径的0%。 我对该函数有5个参数: 浅色(Vec3) 光强度(距光的距离,直到衰减为100%的距离) 光线到碎片的距离 从片段法线到光的角度 灯的位置 谁能按正确的方向推动我创建用于计算片段颜色的函数? 我的其中一项实验的图片: 编辑(字节请求当前代码)请注意,这只是我这边的一些实验代码。我从一个网站上获得了一个float att,它虽然可以正常工作,但远非完美。: void main() { // Light color vec3 torchColor = vec3(1.0f, 1.0f, 1.0f); float lightAdd = 0.0f; for (int i=0; i<5; i++) { vec3 pos = lights[i]; if (pos.x == 0.0f) continue; float dist = distance(vertex_pos, pos); if (dist < …
17 opengl  glsl  lwjgl  lighting  pixel 

3
半径平方和反平方半径在照明计算中的用途是什么?
在“《战地风云3》中的DirectX 11渲染”幻灯片中的一张幻灯片中,我注意到了以下代码: struct Light { float3 pos; float sqrRadius; float3 color; float invSqrRadius; } 我不明白为什么他们要存储半径的平方,甚至是平方的倒数(我相信只是平方的半径),而不是仅仅存储半径?他们如何在计算中使用这些数据?此外,锥形和线形灯又如何呢?该结构只能用于点光源,我看不到它可用于其他类型-没有足够的数据。我仍然很想知道他们如何使用该平方和invSquare。 更新:好的,我终于明白了。 这是经典的光衰减方程式,很容易在网上找到: float3 lightVector = lightPosition - surfacePosition; float attenuation = saturate(1 - length(lightVector)/lightRadius); length(lightVector)这样做实际上是相对昂贵的: length(lightVector) = sqrt(dot(lightVector, lightVector); 此外,分割操作(/lightRadius)也相当昂贵。 不用这种方法来计算光衰减,您可以通过以下方法进行计算,这将更快。 attenuation = saturate(1 - dot(lightVector, lightVector)*invRadiusSqr); 其中invRadiusSqr可以在CPU级别上预先计算并作为着色器常量传递。 而且,结果是得到了二次光衰减(而不是前一种情况下的线性光衰减),这更好,因为IRL光已显示出二次衰减。 谢谢大家的帮助!
16 lighting 

3
如何在Unity中为白天/夜晚循环混合2个光照贴图?
在我再说什么之前:我正在使用双重光照贴图,这意味着我需要混合一个近距离和一个远距离。 因此,我已经为此工作了一段时间,我为渲染器和照明设置了一个昼/夜循环,并且一切工作正常,并且不占用大量流程。 我唯一的问题是弄清楚如何将两个光照贴图混合在一起,我已经找到了如何切换光照贴图的方法,但是问题是看起来有点突然,并且中断了体验。 我已经进行了数小时的研究,尝试了各种着色器,逐像素混合以及其他所有方法,但均无济于事。依我的喜好,C#中的逐像素混合实际上是一个过程密集型过程,尽管我仍在努力清理它并使它运行更平稳。着色器看起来很有前途,但是我找不到能够正确融合两个光照贴图的着色器。 有人在我如何实现这一目标方面有什么线索吗?我只需要在白天和夜间的光照贴图之间进行某种平滑的过渡即可。也许我可以覆盖两个纹理并使用Alpha通道?或类似的东西?

3
我可以在2D游戏中实现手电筒效果(光源周围较亮的区域)吗?
我正在考虑为自己编写一个简单的2D游戏。起初它不会以完美的图形或游戏玩法发光,但我认为这是我进行PC游戏开发的第一步。因此,请想象一下这样简单的基于Sprite的2D游戏(例如Heroes IV或Startcraft BroodWar)。 我希望游戏能够支持白天/夜晚进行相应的灯光更改,同时又不得不为每个灯光细微差别创建子画面。因此,我决定在其他对象之上添加一个半透明层就足够了。 该解决方案的问题是,如果我在游戏中有一个光源对象(例如戴着火炬的英雄或正在燃烧的建筑物),那么它周围一定有一个较亮的区域,对吗?由于我将我的半透明层覆盖在所有内容上,您如何建议实现我想要的火炬视觉效果?也许根据光照效果重画该图层以添加“空白”或不同颜色的区域?
16 2d  lighting 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.