fake light for torch:#FF9633
fake light for candlelamp: #FFD47E
fake light for hangingCandle: #FFF4AF

这个项目的很大一个意义在大致理清楚了渲染一个场景的思路和流程。如果我要重新来过,这个项目的流程将会有很大变动,因为这学期真的是做一点学一点。我的老师Jose说了一句话,我至今印象很深,我想这句话应该会伴随我的后续生涯了:“你并不需要把所有东西都做到完美,它们只需要达到它们需要达到的程度就足够了。”是的,如果把所有东西都仔仔细细的完美的放在场景里,虽然就如同现实世界一样,但是这个作品大概率会缺少主题,缺少焦点。

正如插画的流程一样,先把主次和明暗关系确定好,一个场景中一定要有一个吸引眼球的地方,最好有近中远景来增加层次感。在有了光影的大致视图之后,就能够确定哪些需要精细的建模,哪些则只需要大致略过。1k的分辨率对一些阴影里的物体来说都有些过了,2k分辨率则是对于亮部绰绰有余,所以在render limit里设置一下还是对表现十分有帮助的。此外就是fake light和场景的结构完整性。如果不是要进入游戏里360度参观的话,屋顶不封口,只有一半的墙面这些都是很正常的操作,毕竟看不见的地方你花再多的功夫也没用。这个道理在火把或者火焰的模拟中也同样适用,火焰虽然理论是发散着不规则的光,但是在实际操作中火焰材质的emissive light完全不足以成为光源,这时还不如简单粗暴的加入一个point light,简单又方便效果还很不错,并且非常可控。同样的一个效果你可以选择很取巧并且最终结果不错的方式,也可以选择花成吨的精力最后还提升不了多少效果反而增加了算力的方式,这就是解决问题的魅力。

ColorRamp Node 解析

将对应颜色转成灰度值(float),通过这个float进行对Pin上的颜色的插值计算,最终输出是颜色(等同于输出一个float,因为一个rgb永远可以被转换成灰度)。拖动pin的位置则让这个node有clamp的效果,如果灰度值小于pos,那么则再进行插值计算而是直接输出pin的颜色。
灰度计算使用的是加权平均,符合人眼对不同颜色敏感度的物理特性:Gray=0.2126×R+0.7152×G+0.0722×B
颜色 (R,G,B) 值 灰度值 (大概) 亮度趋势
红色 (1,0,0) 0.2126 偏暗
绿色 (0,1,0) 0.7152 比较亮
蓝色 (0,0,1) 0.0722 非常暗
黄色 (1,1,0) 0.9278 很亮
紫色 (1,0,1) 0.2848 偏暗(比纯红亮一点)
青色 (0,1,1) 0.7874 很亮

Fluid Simulation

首先确定三个部分,都应用fluid modifier并且选择不同的type

  1. fluid domain 液体的范围
  2. fluid effector 与液体交互的物体
  3. fluid flow 液体本身

domain中勾选mesh来在viewport中预览模拟
flow behavior的inflow /outflow来切换液体出现时候的动态,
domain 的resolution division 控制液体质量
effector中勾选is planar 来保证和平面的交互
Cache 中的type选项可选择为All,这样可以Bake All,来进行更流畅的动画预览。Type= Replay则是进行实时模拟
Time Scale可以来控制动画的模拟速率
FLow中的use flow可以用来开关水流,改变fluid mesh的size则可以改变流体的流量
field weights可以控制液体和一些force field的交互权重,
force field可直接通过shift+a添加

  • vortex 类似一个黑洞
  • wind 提供一定的noise

viscosity调整粘稠程度
在camera view control+B可以只渲染camera的视角
一些评论区的tips:

  • On the domain, the "fractional obstacles" checkbox can improve the flow against diagonal obstacles and help with the water getting stuck in a stair pattern on the slope.
  • In the "mesh" section of the domain, you can set the "upres factor" to 3 and get a much more detailed mesh for the same simulation.
  • Still in the mesh section, you can check "use speed vectors". This will allow the fluid to have motion blur at render, which will make it a lot more realistic. The cache format needs to be set to "uni cache" for this to work.

Smoke Simulation

直接给水体添加smoke domain,并用coloramp来控制attribute中的density,这样姑且是有了一个袅袅热气的效果。


Water Simulation

好的刚才确实是动画流体在blender中的实现方法,但这个项目只是想添加一些猎人们泡温泉的小水池子,现在用另外CG Geek的实现方法来更简单的实现这个still water的效果。
在一个细分程度足够的cube上添加ocean modifier(核心出装),Geometry更改为Displace,并适当调整resolution。Size调整为.15而下面的Wave scale液调整为.2,给time添加一个driver,variable调整为frame/30,意思是30帧进行一次模拟动画。
接下来创建材质(这里就不模拟Caustic了,以为一个温泉也不太需要),记得右键点击shade smooth。
Anisotropy(各向异性)控制体积散射(volume scattering时,光线在散射方向上的倾向性。

waterMaterial
waterMaterial

Rendering Parameters

Light Path setting

Total: 6 - 8
Diffuse: 2- 3
Glossy: 2 (because small proportion of metal)
Transmission: 4 (no glass)
Volume: 1 (or 2, smoke effect relies most on first bounce)
Transparent: 2 - 4 (small amount of transparent materials)

Volume Step Rate

Step Rate 0.5 - 1.0

Assets

金属材质墙上MHWlogo挂饰from Arnau Doménech