blender的洋面烘焙贴图怎么都一样呢?

问题发现

今天使用blender洋面修改器制作海洋。制作完毕后,准备使用修改器自带的烘焙功能进行贴图烘焙,以节省后续的渲染性能。

但是却发现,渲染出来的帧数,结果都一样。

并且进一步发现,当前的时间线停留在第几帧,那么渲染出来的所有帧数就都是该帧。

这也太离谱了,总不能上百帧,然后一帧一帧的去点击渲染吧?

排查问题

排查步骤

  • 怀疑是时间线问题,重新制作所有关键帧 – 不行,依然存在
  • 怀疑是烘焙结果的保存问题,重新指定贴图保存文件 – 不行,依然如此
  • 怀疑是内存中存在太多数据发生错误,重新启动blender,甚至重启电脑 – 不行,依然如此
  • 怀疑是修改器某项参数的问题,测试之后发现了问题所在。

发现问题点

  • 突然想起来,一开始制作海洋,只使用了洋面修改器的时间功能来做关键帧,这时候的渲染是正常的。

  • 但是后来将缩放也加入了动画关键帧,然后问题貌似就有了?

  • 马上进行验证,发现果真如此:添加了“缩放”关键帧之后,点击烘焙,烘焙出的贴图明度都和当前帧的明度一样。无论你划定了1-100帧还是多少,所有结果都是当前帧的那幅exr贴图的明度,这就好导致如果你停留在第一帧(也就是没有内容初始化全黑的帧),那么剩下的所有帧都会采用这个“全黑”的明度,结果也都全身黑色的了。

  • 删除“缩放”的关键帧后,在此进行烘焙,结果果然正常了。每一帧都是不一样的内容和明度,都是根据海洋实时计算得来的。

  • 在波浪层中单独使用翻滚之后,发现翻滚并没有这样的问题。

  • 那为什么只有“缩放”存在这样的问题呢?

进一步排查详细原因

  • 仔细研究贴图,可以发现,贴图的形状及颜色明度,是由洋面修改器各项参数决定的。比如下面几个重点:
  • “缩放”值的高低,决定了烘焙出的贴图的明暗,简而言之,缩放值越高那么贴图越明亮,反之越暗直至全黑。
  • “时间值”和“翻滚度”决定的是贴图的内容形状。这一点是正常渲染的,每一帧都不一样。
  • 然而,神奇的是,blender洋面修改器在进行烘焙时,并非实时计算每一帧“缩放值”对应的明度,并非每一帧都给予它正确的明暗。
  • 相反,blender是直接使用当前时间线所在帧的缩放值大小(也就是当前帧明暗大小),直接套用在最终所有烘焙帧上。这就导致最终结果的所有帧明暗都是一样,没有区分。而如果你刚好停留在时间线第1帧,也就是缩放值为0(明度最低,即全黑),那么最终所有结果都是黑的。相反,如果你停留在结束帧,缩放值为动画中最高值(也就是最明亮),那么所有帧都是最亮的。
  • 所以说太奇葩了。

尝试解决问题

文章作者: 努力向前
文章链接: https://greatiga.cn/2024/04/12/blender/洋面烘焙贴图为何都一样/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 努力向前