Unity 预制动态绑定光照贴图遇到变白问题

news2024/11/17 6:21:21

预制绑定光照贴图,网上解决方案很多,已下是要点:

//烘培完场景之后,保存光照贴图信息
void StoreLightmapData()
{
    lightMap.Clear();
    LightmapData[] lds = LightmapSettings.lightmaps;
    foreach (LightmapData data in lds)
    {
        CustomLightMapData cd = new CustomLightMapData();
        cd.lightMapDir = data.lightmapDir;
        cd.shadowMask = data.shadowMask;
        cd.lightMapColor = data.lightmapColor;
        lightMap.Add(cd);
    }
}
//因为预制不保存光照信息
//保存预制中MeshRenderer 的光照信息到存储列表
private void GetChildData(Transform parent)
{
    if (parent.gameObject.isStatic)
    {
        var render = parent.GetComponent<MeshRenderer>();
        if (render != null && render.lightmapIndex >=0)
        {
            datas.Add(new RenderLightmapData(render, render.lightmapIndex, render.lightmapScaleOffset));
        }
    }

    for (int i = 0; i < parent.childCount; i++)
    {
        GetChildData(parent.GetChild(i));
    }
}
//加载预制是执行脚本方法

public void SetAllLightmapData()
{
 
    SetRenderSetting();

    LightmapData[] lightmapDatas = new LightmapData[lightMap.Count];
    for (int i = 0; i < lightMap.Count; i++)
    {
        CustomLightMapData cd = lightMap[i];
        LightmapData ld = new LightmapData();
        ld.lightmapDir = cd.lightMapDir;
        ld.lightmapColor = cd.lightMapColor;
        ld.shadowMask = cd.shadowMask;
        lightmapDatas[i] = ld;
    }
    LightmapSettings.lightmaps = lightmapDatas;
    
    for (int i = 0; i < datas.Count; i++)
    {
        if (datas[i]._renderer == null)
        {
            Debug.LogError("redner is null index="+i);
            continue;
        }
        datas[i]._renderer.lightmapIndex = datas[i]._lightmapIndex;
        datas[i]._renderer.lightmapScaleOffset = datas[i]._lightmapScaleOffset;
    }
}

以上大致代码,思路就是烘培完之后把光照信息绑定到脚本上,加载预制时脚本再还原光照信息

其中遇到的问题就是,加载完预制还原光照信息后,物体变白

原场景烘焙之后效果图:

加载到其他场景效果图:

显示效果变的特别白

问题的原因

问题原因及结论:

如果烘培场景光照贴图选择定向模式(Directional),那么使用预制场景可以设置定向或者非定向都可以

如果烘培场景光照贴图选择了非定向模式(Non-Directional),那么使用预制场景只能设置为非定向模式

我遇到的问题是烘培场景选择了Non-Directional ,但使用场景使用了定向模式

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

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

相关文章

无人机之科学防汛篇

随着全球气候变化的加剧&#xff0c;极端天气时间频发&#xff0c;汛期防汛工作面临着前所未有的挑战。传统的防汛手段&#xff0c;如人工巡堤、地面监测等&#xff0c;在复杂多变的自然环境下显得力不从心。而无人机技术的快速发展&#xff0c;为科学防汛提供了新的解决方案。…

Java面试八股之Spring AOP 和 AspectJ AOP 的区别

Spring AOP 和 AspectJ AOP 的区别 Spring AOP 和 AspectJ AOP 是两种不同的面向切面编程&#xff08;Aspect-Oriented Programming, AOP&#xff09;实现。它们各有特点&#xff0c;适用于不同的场景。下面是一些主要的区别&#xff1a; 1. 实现机制 Spring AOP: 基于代理…

Python NLTK 情感分析不正确

1、问题背景 一位 Reddit 用户使用 Python 的 NLTK 库来训练一个朴素贝叶斯分类器以研究其他句子的情感&#xff0c;但是无论输入什么句子&#xff0c;分类器总是预测为正面。 2、解决方案 经过仔细检查&#xff0c;发现原始代码中的问题在于 wordList 为空。因此&#xff0…

【LLM】-12-部署Langchain-Chatchat-0.3.x版本

目录 1、0.3与0.2的功能对比 2、0.3.x支持多种部署方式 2.3、源码安装 2.3.1、项目源码下载 2.3.2、创建conda环境 2.3.3、安装poetry 2.3.4、安装依赖库 2.3.5、项目初始化 2.3.6、初始化知识库 2.3.7、启动服务 2.3.8、配置说明 2.3.8.1、basic_settings.yaml 2…

一副穿戴甲背后,5万苏北宝妈如何硬控全球美甲潮流?

2019年的一天&#xff0c;张达在拼多多后台看到一个有趣的订单。“看姓名、联系方式&#xff0c;像表妹下的订单&#xff0c;但我的穿戴甲店才开第二天&#xff0c;她应该不可能知道。”张达回忆。 1993年出生的张达&#xff0c;是江苏东海县人&#xff0c;当地以水晶闻名。高…

达梦数据库的系统视图v$bufferpool

达梦数据库的系统视图v$bufferpool 达梦数据库系统视图V$BUFFERPOOL的主要作用是监控和管理数据库缓冲池的性能。通过查询V$BUFFERPOOL视图&#xff0c;用户可以获取以下关键信息&#xff1a; 缓存命中率&#xff1a;显示缓冲池的命中率&#xff0c;即从缓冲池中成功获取数据的…

嵌入式☞第二组(壹)

C语言基础: 循环的构成&#xff1a; 循环体 循环条件 循环的分类&#xff1a; 无限循环&#xff1a;程序设计中尽量避免无限循环。(程序中的无限循环必须可控) 有限循环&#xff1a;循环限定循环次数或者循环的条件。 当型循环的实现&#xff1a; while 语法 while(循…

【MySQL】索引 【上】 {没有索引的查询/磁盘/mysql与磁盘IO/初识索引}

文章目录 1.没有索引存在的问题2. 认识磁盘MySQL与存储MySQL与磁盘交互基本单位建立共识图解IO认识索引 在关系数据库中&#xff0c;索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构&#xff0c;它是某个表中一列或若干列值的集合和相应的指向表中物…

初学Mybatis之缓存

所有的查询都需要连接数据库&#xff0c;而连接数据库消耗资源 我们可以把一次查询的结果暂时存在一个可以直接获取到的地方&#xff08;内存&#xff1a;缓存&#xff09; 我们再次查询相同数据的时候&#xff0c;直接走缓存&#xff0c;不走数据库 缓存&#xff1a;存在内…

3.5.1、查找和排序算法-算法介绍

算法特性 算法是对特定问题求解步骤的一种描述&#xff0c;它是指令的有限序列&#xff0c;其中每一条指令表示一个或多个操作。简单的说算法就是某个问题的解题思路&#xff0c;算法的五个重要特性如下&#xff1a; 有穷性。一个算法必须总是&#xff08;对任何合法的输入值…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十二章 设备树常用of函数

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

NAS变身云盘管理大师:群晖部署AList全攻略!

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒🔑 AList功能简介🚀 快速部署📝 操作步骤🐳 Docker容器部署:灵活与强大📝 操作步骤📝 群晖部署🎈 获取方式 🎈⚓️ 相关链接 ⚓️📖 介绍 📖 在这个数字化时代,我们似乎都不可避免地拥有多个…

【数据结构】:大厂面试经典链表OJ题目详解

反转链表 206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 思路解透 本题就是通过不停地将最先的 head 节点位置的后一位插到最前面&#xff0c;完成链表的反转 本题需要两个节点变量 cur&#xff1a;其任务就是定位到原 head 节点位置的前一位&#xff0c;然后将自己…

列表(list)—python

一、列表的定义方式 列表内的每一个数据称为元素&#xff0c;列表以[ ]作为标识&#xff0c;列表内的每个元素之间用逗号隔开。 列表的基本语法如下&#xff1a; #字面量 [元素1,元素2,元素3,元素4,……]#定义变量 变量名称[元素1,元素2,元素3,元素4,……]#定义空列表 变量名…

Linux的防火墙

一、防火墙概述 防火墙是一种计算机硬件和软件的结合&#xff0c;使internet和intranet之间建立一个安全网关&#xff08;Security Gateway&#xff09;&#xff0c;从而保护内网免受非法用户侵入的技术。 防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成。…

安防视频监控EasyCVR视频汇聚平台无法编辑设备通道信息的原因排查及解决

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台基于云边端一体化架构&#xff0c;兼容性强、支持多协议接入&#xff0c;包括国标GB/T 28181协议、部标JT808、GA/T 1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SD…

ECharts - 坐标轴刻度数值处理

写图表时&#xff0c;Y轴的数值过大&#xff0c;不太可能直接展示&#xff0c;这时候就得简写了&#xff0c;或者百分比展示的也要处理&#xff0c;如下图&#xff1a; yAxis: {type: value,// Y轴轴线axisLine: { show: false }, // 刻度线axisTick: { show: false },// 轴刻度…

ECharts实现按月统计和MTBF统计

一、数据准备 下表是小明最近一年的旅游记录 create_datecity_namecost_money2023-10-10 10:10:10北京14992023-11-11 11:11:11上海29992023-12-12 12:12:12上海19992024-01-24 12:12:12北京1232024-01-24 12:12:12上海2232024-02-24 12:12:12广州5642024-02-24 12:12:12北京…

学习笔记之Java篇(0729)

p 数组 大纲知识点数组的概念数组的定义、四个特点数组的常见操作普通遍历、for-each遍历、java.util.Array类用法多维数组多维数组的内存结构、存储表格、Javabean和数组存储表格常见算法冒泡排序基础算法、冒泡排序优化算法、二分法查找&#xff08;折半查找&#xff09; 1、…

【JavaWeb】Filter

基本使用 使用了过滤器之后&#xff0c;要想访问web服务器上的资源&#xff0c;必须先经过滤器&#xff0c;过滤器处理完毕之后&#xff0c;才可以访问对应的资源。过滤器一般完成一些通用的操作&#xff0c;比如&#xff1a;登录校验、统一编码处理、敏感字符处理等。 使用操…