【unity小技巧】unity3d环境带雾的昼夜系统变化

news2024/11/12 22:03:27

最终效果

在这里插入图片描述

文章目录

  • 最终效果
  • 眩光素材
  • 眩光配置
  • 全局灯光配置
  • 天空盒配置
    • 天空盒资产
    • 配置天空盒,开启雾
  • 代码控制天空盒 环境 雾 灯光昼夜交替变化
  • 参考
  • 完结

眩光素材

链接:https://pan.baidu.com/s/1qlFSJSju6ZjwCylwkh14eA?pwd=veww
提取码:veww

眩光配置

眩光其实可以简单的理解为太阳或月亮
在这里插入图片描述

全局灯光配置

在这里插入图片描述

想要相机显示眩光,需要在相机添加Flare Layer组件
在这里插入图片描述

天空盒配置

天空盒资产

在这里插入图片描述

配置天空盒,开启雾

在这里插入图片描述
在这里插入图片描述

代码控制天空盒 环境 雾 灯光昼夜交替变化

public class DayAndNight : MonoBehaviour
{
    [Header("雾的颜色渐变")]
    [SerializeField] private Gradient fogGradient;
    [Header("环境光颜色渐变")]
    [SerializeField] private Gradient ambientGradient; 
    [Header("太阳光颜色渐变")]
    [SerializeField] private Gradient directionLightGradient;
    [Header("天空盒色调渐变")]
    [SerializeField] private Gradient skyboxTintGradient; 

    [Header("方向光源")]
    [SerializeField] private Light directionalLight;
    [Header("天空盒材质")]
    [SerializeField] private Material skyboxMaterial;

    [Header("白天持续时间(秒)")]
    [SerializeField] private float dayDurationInSeconds = 60f; 
    [Header("天空盒旋转速度")]
    [SerializeField] private float rotationSpeed = 1f;

    private float currentTime = 0;  // 当前时间(0-1)

    private void Update()
    {
        UpdateTime();
        UpdateDayNightCycle();
        RotateSkybox();
    }

    // 更新当前时间
    private void UpdateTime()
    {
        currentTime += Time.deltaTime / dayDurationInSeconds;
        currentTime = Mathf.Repeat(currentTime, 1f);
    }

    // 更新白天黑夜循环效果
    private void UpdateDayNightCycle()
    {
        // 计算太阳的位置
        float sunPosition = Mathf.Repeat(currentTime + 0.25f, 1f);
        directionalLight.transform.rotation = Quaternion.Euler(sunPosition * 360f, 0f, 0f);

        // 更新雾、环境光、太阳光和天空盒的颜色
        RenderSettings.fogColor = fogGradient.Evaluate(currentTime);
        RenderSettings.ambientLight = ambientGradient.Evaluate(currentTime);
        directionalLight.color = directionLightGradient.Evaluate(currentTime);
        skyboxMaterial.SetColor("_Tint", skyboxTintGradient.Evaluate(currentTime));
    }

    // 旋转天空盒
    private void RotateSkybox()
    {
        float currentRotation = skyboxMaterial.GetFloat("_Rotation");
        float newRotation = currentRotation + rotationSpeed * Time.deltaTime;
        newRotation = Mathf.Repeat(newRotation, 360f);
        skyboxMaterial.SetFloat("_Rotation", newRotation);
    }

    // 在应用程序退出时重置天空盒颜色
    private void OnApplicationQuit()
    {
        skyboxMaterial.SetColor("_Tint", new Color(0.5f, 0.5f, 0.5f));
    }
}

配置参数
在这里插入图片描述
配置20 25 30 70 75 80位置的灯光颜色,具体的需要根据自己的天空盒 环境等,调配出适合的颜色和过渡
在这里插入图片描述

效果
在这里插入图片描述
加眩光
在这里插入图片描述

参考

【视频】https://www.youtube.com/watch?v=ME6Bh9Hclgk

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,以便我第一时间收到反馈,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,出于兴趣爱好,最近开始自学unity,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!php是工作,unity是生活!如果你遇到任何问题,也欢迎你评论私信找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1430038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Oracle和Mysql数据库

数据库 Oracle 体系结构与基本概念体系结构基本概念表空间(users)和数据文件段、区、块Oracle数据库的基本元素 Oracle数据库启动和关闭Oracle数据库启动Oracle数据库关闭 Sqlplussqlplus 登录数据库管理系统使用sqlplus登录Oracle数据库远程登录解锁用户修改用户密码查看当前语…

Android学习之路(29) Gradle初探

前言: 大家回想一下自己第一次接触Gradle是什么时候? 相信大家也都是和我一样,在我们打开第一个AS项目的时候, 发现有很多带gradle字样的文件:setting.gradle, build.gradle,gradle.warpper,以及在gradle文件中各种配置&#xff…

来看看Tomcat和Web应用的目录结构

在前面两篇大致了解了Tomcat的架构和运行流程,以及Tomcat应用中的web.xml。 聊一聊Tomcat的架构和运行流程,尽量通俗易懂一点-CSDN博客 来吧,好好理解一下Tomcat下的web.xml-CSDN博客 那接下来,再看看Tomcat的目录,…

BeanDefinitionRegistry学习

Spring版本5.1.x 简介 在Spring框架中,BeanDefinitionRegistry是一个接口,它主要用于向注册表中注册BeanDefinition实例,完成注册的过程。该接口的主要方法是registerBeanDefinition,用于将一个BeanDefinition实例注册到注册表中…

分享一个WPF项目

最近在学习WPF开发方式,找到一些项目进行拆解学习;本位主要分享一个WPF项目,叫做WPFDevelopers,在git上大约有1.3K星,话不多说,先看看效果: 这个项目开发可以编译启动后直接查看样例、Xaml、Cha…

如何搭建私有云盘SeaFile并实现远程访问本地文件资料

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-hsDnDEybLME85dTx {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

让AI作为人类的“副驾驶”

让AI作为副驾驶,辅助人类完成工作,是人工智能技术在实际应用中的一个重要方向。这个设想在多个领域都有广泛应用的可能性: 驾驶场景:自动驾驶技术中,AI副驾驶可以实时监测路况、规划最优行驶路线、预警潜在危险&#x…

接口自动化测试详解

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 引言 与UI相比,接口一旦研发完成,通常变…

Unity | Spine动画记录

https://blog.csdn.net/linshuhe1/article/details/79792432 https://blog.csdn.net/winds_tide/article/details/128925407 1.需要的三个文件 通常制作好的 Spine 动画导出时会有三个文件: .png 、.json 和 .atlas: skeleton-name.json 或 skeleton-…

【10秒开服】雾锁王国服务器全自动部署教程

你是火焰之子,一个濒死种族最后的希望火苗。苏醒吧,克服腐化一切的迷雾所裹挟的恐怖,重新夺回你的王国所失落的瑰丽。置身于广袤世界,战胜难以想象的强大Boss,修造宏伟厅堂,在这款至多16名玩家的合作类生存…

LF will be replaced by CRLF the next time Git touches it

参考这篇文章git提示“warning: LF will be replaced by CRLF”的解决办法-CSDN博客

问题:魁奈在税收政策方面的主张是() #学习方法#其他#经验分享

问题:魁奈在税收政策方面的主张是() A.征收农业税 B.征收工商业税 C.征收间接税 D.征收地租税 参考答案如图所示

挑战杯 opencv 图像识别 指纹识别 - python

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于机器视觉的指纹识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 该项目较为新颖,适…

奇瑞瑞虎8,是真不能随便碰

文 | AUTO芯球 作者 | 李虎 我是实在看不下去了啊 这奔驰车主砸车 现在开始反转了啊 但卡住我喉咙的是定损5200的奇瑞引擎盖啊 我是真买不起,也不敢买啊 我怕A柱断了,要修20万啊 但我一算,这也不对啊 顶配的报价也只有16.18万啊 如果…

TCP TIME_WAIT 过多怎么处理

文章目录 1.什么是 TCP TIME_WAIT?2.为什么要 TIME_WAIT?3.TIME_WAIT 过多的影响4.解决办法4.1 调整短连接为长连接4.2 调整系统内核参数 5.小结参考文献 1.什么是 TCP TIME_WAIT? TCP 断开连接四次挥手过程中,主动断开连接的一方&#xff…

计算机毕业设计SSM基于的流浪宠物救助系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: vue mybatis Maven mysql5.7或8.0等等组成,B…

嵌入式中VMware 三种网络模式的详解与配置方法

今天梳理下 VMware虚拟机的三种网络工作模式。 相信通过这两篇文章,能够帮助你全面搞懂虚拟机的网络工作模式和配置。 VMware的三种网络工作模式 vmware为我们提供了三种网络工作模式, 它们分别是: Bridged(桥接模式)、NAT(网…

Pytest测试用例参数化

pytest.mark.parametrize(参数名1,参数名2...参数n, [(参数名1_data1,参数名2_data1...参数名n_data1),(参数名1_data2,参数名2_data2...参数名n_data2)]) 场景: 定义一个登录函数test_login,传入参数为name,password,需要用多个账号去测试登录功能 # …

八. 实战:CUDA-BEVFusion部署分析-学习spconv的优化方案(Implicit GEMM conv)

目录 前言0. 简述1. 什么是Implicit GEMM Conv2. Explicit GEMM Conv3. Implicit GEMM Conv4. Implicit GEMM Conv优化5. spconv和Implicit GEMM Conv总结下载链接参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》,链接。记录下个人学习笔记&#xff0…

量化交易学习4(投资组合基本认识)

1 如何衡量投资组合的收益率 1.1 投资组合收益率的计算方法 1.2 投资组合的绝对收益率和相对收益率 2 如何衡量投资组合的风险 2.1 风险的定义 风险是指在未来可能发生的不确定性事件所带来的潜在损失。 在投资领域中,风险通常指投资所面临的不确定性和潜在的损失…