AHD2-TODSystem
March 21, 2025 · View on GitHub
开发中,已转化为package,含工程的项目位于dev分支。
目前已支持git URL安装。
但仅仅为玩具。
使用方法
TOD系统
- 场景中在Hierarchy窗口右键点击 AHD2TODSystem - CreateTimeOfDayController 创建即可。
反射探针
- 使用需要先在RendererList中添加ReflectionBakedRenderer
- Hierarchy窗口右键点击 AHD2TODSystem - CreateReflectionProbe 创建即可。
- 探针目前只支持单探针,多探针有概率有bug
注意事项(暂用
- 主方向光的light Apearance要设置为color模式
- 渲染路径设置为forward+
实装后发现问题
一键添加TODController后,还是需要自动挂个灯。或者脚本里面检测没有灯的时候停止,不然没拖灯上去就一直报错。HDR天空材质在package里面,不方便拿出来。package里面的TOD全局参数无法控制。考虑是复制一个出来?但是复制出来的话,用户的自定义权不太够?(好吧,还是复制出来吧,想自定义,自己创建空白全局参数)- 后处理一般要打开ACES效果才正确。考虑能不能自动校正设置。
TODO
BUG:
- 全局参数TOD Frame List和TOD List必须对齐,不然用工具添加材质会出问题。
进行中/短期:
当前时间的更新是每帧+=。考虑结合现实时间,通过固定比例转换,例如,设置为现实六分钟为游戏内一天。那么似乎就不适合在update中更新时间了。考虑提供脚本修改时间的接口自定义反射探针。实现实时天空球+Deffered烘焙物体。- 代码优化:静态类,委托等的使用。命名空间以及字段名称的优化。
- shader优化:pbrShader规范化。GUI界面完善。天空盒shader结构优化,效果优化。
工具优化:TOD工具,材质的增删功能需要实现。- 考虑与URP的兼容。
考虑启用keyword,来为shader提供天空盒启用时变体。- 做一个关键帧材质调整工具,横向展示某一关键帧所有材质gui面板
- 体积雾参数完善、效果完善、异步计算优化尝试、聚光灯支持
长期:
- 天气系统,四季系统。
- 全局光照,后处理等。
- 感觉这个昼夜变换的云还是不太对劲,虽然晚上靠贴图能做得很美,但是昼夜变化的过渡细看太怪了。后面整个云系统都要重做吧。
- 云、雾效果。
- 转化为节点编辑器模式
结构说明:
类似于手册一样的东西,主要是我要规范化类、函数、字段的命名。所以要写一个手册来记录一下
基本名词
为了方便记录,还需要统一一下一些名词。
时间:
表示的是具体的一瞬时间数值。在本系统中特指具体的时间值。比如21:45这就是一个时间。而“下午”这个概念,不是一个时间。
时刻:
表示的是某一瞬的时间,本系统中表示某一个TimeOfDay的代称,比如21:00是一个时间,在这个时间上表示了Night这个关键帧,我们就称Night为一个时刻,21:00是这个时刻的==代表时间==。TimeOfDay这个类本身其实只是表示某一个时刻(即类上所存信息表示的是某一时刻的瞬时状态),类似于关键帧的概念。
时段:
表示的是一段时间,本系统中表示这个TimeOfDay时刻到下一个TimeOfDay时刻的这段时间。我们说当前所属时段的时候,是以开始的时刻来归类。
比如12点是Noon这个TimeOfDay的代表时间。14点是AfterNoon这个TimeOfDay的代表时间。那么[12点,14点)这个区间的时间,我们称之为Noon的时段。
TODGlobalParameters类
本系统的核心,用于存储插值结果的SO,为TODController的运行提供数据。其中数据可以分为三类:基本时间信息(当前时间,时间流动速度,当前所属时段等等)插值后的全局参数(比如主方向光颜色和强度等)插值后的材质