Vision引擎光照中时间变化

本文介绍Vision引擎中的时间变化系统,该系统能模拟自然界的白昼更替,适用于户外项目的光照设计。文章详细解释了时间变化系统的各项功能及其配置方法,包括如何调整环境色、太阳色等参数以达到理想的效果。

引言

为了帮助您设计户外项目,Vision 引擎提供一种特殊的光照系统,用于模拟白天和黑夜的自然循环。 本章将描述 vForge 中相关的时间变化组件和其功能。 时间变化系统还有很多控制大气条件的属性,例如雾和天空属性。这些属性彼此组合,可以创造出逼真的白昼 / 夜晚大气效果。

时间变化系统可在正向和延迟渲染下使用,也可在 vForge 中设定和配置。
   注:对静态光照(光照贴图、光照网格)使用正向渲染时,您需要确保时间变化与场景中的光影恰当地融为一体。
虽然时间变化系统也提供天空和雾属性设置,本章仅集中讲述该系统的光照部分。 
 
什么是时间变化系统
时间变化系统是一个循环时间系统,会从早晨、中午、傍晚到夜晚的天空,然后再次重头开始循环。 时间变化系统可在正向和延迟渲染下使用,也可在 vForge 中设定和配置,或通过代码动态控制。

时间变化系统可控制光源的位置、指向、颜色和强度。 其实现方式是为光源(通常为平行光照)附加一个特殊组件,即时间变化附加组件。 附加到光源后,该组件会控制光源的位置、指向和颜色属性,使用当前时间来更新光源。
 
把时间变化组件附加到光源上后,应避免直接调用光照的 SetPosition、SetDirection 和 SetColor 方法。
  注:对静态光照(光照贴图、光照网格)使用正向渲染时,您需要确保时间变化与场景中的光影恰当地融为一体。
 
时间变化属性
时间变化属性可以在主层找到。 如果时间变化属性不可见,可能是因为时间变化被关闭。 要启用时间变化,请将以下值设为 Ture:

使用这些属性来调整光照和颜色,以适合项目需要:
AmbientColor(环境色): 反映环境色随时间变化的色彩曲线。
 
SunColor(太阳色): 反映太阳光随时间变化的色彩曲线(如启用太阳光)。
 
DepthFog(深度雾): 创建一个高质量距离雾,带有编辑雾的起点、有效范围以及颜色的控制选项。 深度雾可通过时间变化控制,用来添加颜色和浓度渐变。 
 
HeightFog(渐变雾): 渐变雾可以为地形增添额外的魅力。 用渐变雾填充地形中的峡谷,可以带来极大的恢宏感和距离感,与大气散射结合,将使您的关卡质量更上一层楼。 渐变雾可通过时间变化控制,用来添加颜色和浓度渐变。 您可以编辑雾的起点和有效范围,以及颜色属性。 
 
ControlSky(控制天空): 如启用,时间变化系统将使用天空加权曲线来控制天空层的强度。
 
DawnSkyFade(黎明天空渐变): 控制白昼天空和黎明天空纹理之间渐变的曲线编辑器。
 
DuskSkyFade(黄昏天空渐变): 控制白昼天空和黄昏天空纹理之间渐变的曲线编辑器。
 
NightSkyFade(夜晚天空渐变): 控制白昼天空和夜晚天空纹理之间渐变的曲线编辑器。
 
SunDirectionHorizontal(日光水平指向): 该值指定了日光水平指向(绕 z 轴),即太阳在哪个角度升起和下落。 取值范围为 [0.0 … 360.0] 度。
 
SunDirectionVertical(日光垂直指向): 该值指定了日光垂直指向,即太阳在天空运行的角度。 取值范围为 [-90.0 … 90.0] 度。
 
SunRiseTime(太阳升起时间): 太阳升起的时间。 取值范围为 [0.0 … 0.5],对应子夜 12 点到正午 12 点的时间范围。
 
SunSetTime(日落时间) :太阳落下的时间。 取值范围为 [0.5 … 10],对应正午 12 点到子夜 12 点的时间范围。
 
Current Time(当前时间): 使用该值设定与一天 24 小时循环对应的当前时间。
 
曲线编辑器
每个时间变化曲线属性,例如环境或太阳色,都有其自己的曲线编辑器, 这些编辑器可通过该属性右侧的 […] 按钮打开。 对于 vForge 中所有属性编辑器而言,这是一种常见的打开子编辑器的方式。 这些曲线编辑器可以让您方便地设定数据,让项目获得所需的观感。

vForge 中有两种类型的曲线编辑器,一种编辑颜色值,另一种编辑数据值。
 
单曲线编辑器:
用于随时间变化改变单个值的曲线编辑器。

每条贝塞尔曲线都有若干句柄,让您平滑地更改到所需时间点的值。
添加点: 您可以 点击鼠标左键 曲线上的任意位置,轻松添加新的控制点。 曲线会在新控制点处自动适应弯曲。
移除点: 如需移除曲线上不需要的控制点,选中您想移除的点并点击移除图标。
吸附到网格: 开启吸附到网格选项,拖拽控制点时会自动吸附到最近的网格线。 此外,当拖拽曲线起点时,该点也会吸附到终点,反之亦然。
曲线预设: 您可以通过对应的按钮添加、应用或删除偏好曲线预设,或恢复默认曲线预设。 
 
颜色曲线编辑器:
用于随时间变化改变颜色的曲线编辑器。

这一编辑器的工作方式与单曲线编辑器类似,主要差别在于,您可以选择 RGBA 图标中的某一个,单独编辑 RGBA 曲线。
时间变化编辑器
时间变化编辑器让您综览时间变化系统的设置,包括各种大气值曲线。 点击时间变化属性标题旁的 […] 按钮即可打开该编辑器。

在编辑器底部选择一种曲线梯度,使用曲线编辑器面板中的贝塞尔曲线来编辑各种值随时间变化的变化。 所附带的曲线工具可让您实现希望的设置,如果您完成一条合意的曲线,可以通过预设曲线保存。
环境色曲线: 指定环境色在一天当中的变化。
太阳色曲线: 指定太阳色在一天当中的变化。
雾色曲线: 指定雾色在一天当中的变化。
天空层渐变曲线: 指定天空层权重在一天当中的变化。 第一个天空层(白天)全天保持全部的强度。 其余层(黎明、黄昏和夜晚)混合在该层上方。 混合可通过对应的曲线控制。
 
如何使用时间变化系统
在项目中添加时间变化系统最简单的方式是在场景中添加预建时间变化日光图形。 其方法是从图形创建器面板中选择 Time of Day Sunlight(时间变化日光)图形并拖拽到场景中。

这将打开一个简单的动态阴影和背光设定向导。 背光会在场景阴影部分添加额外的环境光。 完成对话框并确认后,您会在场景图形列表中看到一个代表时间变化光照的新条目。 从场景中移除该条目很简单,只需在场景图形列表中选择背光平行光照即可。

   注:如果您想过更改光照角度或颜色,请使用时间变化属性或编辑器,因为您不能直接更改任何光照旋转和颜色属性。
 
时间变化组件属性
要创建你自己的时间变化光照图形,你必须给一个平行光照添加时间变化组件和可选的阴影贴图组件。 该组件会提供您需要的光照类型的选项。 以下是可用附件选项的属性。

AttachmentType(附件类型): 时间变化组件提供了四种不同类型:
 
SUNLIGHT(日光): 如果附加光源代表日光,请使用该类型
SUNBACKLIGHT(太阳背光): 如果附加光源代表背光,请使用该类型
MOONLIGHT(月光): 如果附加光源代表月光,请使用该类型
CORONA(光晕): 如果附加光源代表太阳光晕或镜头眩光,请使用该类型
ENABLEDATNIGHT(夜晚启用): 如果附加光源代表夜晚开启、白天关闭的光源,请使用该类型。
为观察其效果,每个附加组件都必须添加到一个新的平行光照上。
   提示:在您的场景中添加一个带时间变化组件的平行光照,将附件设为 SUNLIGHT。 在您的场景中添加另一个带时间变化组件的平行光照,将附件设为 MOONLIGHT。 现在,移动当前时间,您会得到平衡的白昼 / 夜晚光照。
Intensity(强度): 定义附加光源的光照强度。 当附件类型设为 CORONA,该值没有任何效果。
可以同时为不限数量的光照附加时间变化组件。 通常,带有时间变化组件的光源不应超过四个(每一个所附加的组件类型各不相同)。
为了根据太阳指向启用和更新阴影,您可以结合使用阴影贴图组件和时间变化附加组件。 另外也可以把两种组件附加到一个光源上,并将附件类型设为 MOONLIGHT,以此定义月光阴影.
源码地址: https://pan.quark.cn/s/a4b39357ea24 遗传算法 - 简书 遗传算法的理论是根据达尔文进化论而设计出来的算法: 人类是朝着好的方向(最优解)进化,进化过程中,会自动选择优良基因,淘汰劣等基因。 遗传算法(英语:genetic algorithm (GA) )是计算数学中用于解决最佳化的搜索算法,是进化算法的一种。 进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择、杂交等。 搜索算法的共同特征为: 首先组成一组候选解 依据某些适应性条件测算这些候选解的适应度 根据适应度保留某些候选解,放弃其他候选解 对保留的候选解进行某些操作,生成新的候选解 遗传算法流程 遗传算法的一般步骤 my_fitness函数 评估每条染色体所对应个体的适应度 升序排列适应度评估值,选出 前 parent_number 个 个体作为 待选 parent 种群(适应度函数的值越小越好) 从 待选 parent 种群 中随机选择 2 个个体作为父方和母方。 抽取父母双方的染色体,进行交叉,产生 2 个子代。 (交叉概率) 对子代(parent + 生成的 child)的染色体进行变异。 (变异概率) 重复3,4,5步骤,直到新种群(parentnumber + childnumber)的产生。 循环以上步骤直至找到满意的解。 名词解释 交叉概率:两个个体进行交配的概率。 例如,交配概率为0.8,则80%的“夫妻”会生育后代。 变异概率:所有的基因中发生变异的占总体的比例。 GA函数 适应度函数 适应度函数由解决的问题决定。 举一个平方和的例子。 简单的平方和问题 求函数的最小值,其中每个变量的取值区间都是 [-1, ...
《基于STM32微控制器集成温湿度监测与显示功能的系统实现方案》 本方案提供了一套完整的嵌入式系统设计参考,实现了环境参数的实时采集、可视化呈现与异常状态提示。系统核心采用意法半导体公司生产的STM32系列32位微控制器作为主控单元,负责协调各外设模块的工作流程。 系统通过数字式温湿度复合传感器周期性获取环境参数,该传感器采用单总线通信协议,具有响应迅速、数据可靠的特点。采集到的数值信息通过两种途径进行处理:首先,数据被传输至有机发光二极管显示屏进行实时图形化显示,该显示屏支持高对比度输出,能够在不同光照条件下清晰呈现当前温度与湿度数值;其次,所有采集数据同时通过通用异步收发传输接口输出,可供上位机软件进行记录与分析。 当监测参数超出预设安全范围时,系统会启动声学警示装置,该装置可发出不同频率的提示音,以区分温度异常或湿度异常状态。所有功能模块的驱动代码均采用模块化设计原则编写,包含完整的硬件抽象层接口定义、传感器数据解析算法、显示缓冲区管理机制以及串口通信协议实现。 本参考实现重点阐述了多外设协同工作的时序控制策略、低功耗数据采集模式的应用方法,以及确保系统稳定性的错误处理机制。代码库中包含了详细的初始化配置流程、中断服务程序设计和各功能模块的应用程序接口说明,为嵌入式环境监测系统的开发提供了可靠的技术实现范例。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值