【问题标题】:How do I create an animated 3D day night cycle in godot?如何在 godot 中创建动画 3D 昼夜循环?
【发布时间】:2020-10-10 04:49:04
【问题描述】:

我正在尝试在 godot 中创建一个 3d 游戏,我一直在想如何创建一个昼夜循环。我会假设我会使用着色器,但我没有找到关于这个主题的资源。我的想法是有一个像太阳一样的定向光,但从那里我不知道去哪里。前任。我怎么知道天空什么时候应该是某种颜色?

提前谢谢你。

【问题讨论】:

  • 这个视频很好地描述了如何在 Godot 中制作天空着色器。唯一的缺点是它需要不断更新光照,这通常成本太高而无法执行每一帧。该视频有一个解决方案,即在重绘之前跳过一些帧,这并不能提供完美平滑的过渡,但它仍然看起来相当不错。 - youtube.com/watch?v=-2YWV1NWwGY
  • 我会调查的,谢谢!

标签: graphics game-development godot


【解决方案1】:

这是一个非常广泛的话题,因此总体上不太适合堆栈溢出问题。我将专注于问题的最后一部分(“我怎么知道天空什么时候应该是某种颜色”),因为这是一个重点突出的问题。您必须自己解决其余的问题(定向光当然是一种选择)。

Godot 不会为您保留时间。但是您在 _process 函数的 delta 参数中获得了当前帧的长度。您可以总结每一帧的 delta 值,从而得出游戏开始后的实际秒数。

通常,游戏中的时间过得比现实世界中的要快。您需要确定一个指定速度的因素。如果您将总和的增量时间除以该因子,您将得到自游戏开始以来的游戏内秒数。以游戏内一天中的游戏内秒数取模,您就有了一天中的时间。

如何将一天中的时间映射到天空颜色再次取决于您。

【讨论】:

  • 好的,谢谢。我想我已经决定使用基于太阳角度的梯度函数,该函数基于时间。因此,当太阳的角度为零时,它在地平线上会是橙色,而垂直向上则是深蓝色,中间有渐变。附言很抱歉提出这个广泛的问题,但再次感谢您的洞察力。
猜你喜欢
  • 2019-06-07
  • 2023-04-10
  • 1970-01-01
  • 2019-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
  • 2018-10-10
相关资源
最近更新 更多