Unity 动态添加烘焙贴图

场景中对预设体进行烘焙贴图后,然后删掉场景中的预设体,接着再通过代码实例化这个预设体或者直接拖一个预设体进入一个场景,都会发现场景光照信息丢失

光照信息丢失的主要原因是:

解决这个问题的办法如下:

先准备一个场景,如下:

上面的红色物体全部勾选为静态(static),蓝色物体作为参照不勾选静态

对lighting进行参数设置

经过上面准备工作做好后,开始烘焙 

此时 ,我们删掉场景中的Plane预设体,然后再重新向场景中拖入该Plane的预设体,你会发现,没有光照信息,场景很暗

但是此时运行场景,你会发现光照信息又有啦

using UnityEngine;
using System.Collections;
using System.Collections.Generic;public class PrefabLightmapData : MonoBehaviour
{[System.Serializable]struct RendererInfo{public Renderer     renderer;public int          lightmapIndex;public Vector4      lightmapOffsetScale;}[SerializeField]RendererInfo[]  m_RendererInfo;[SerializeField]Texture2D[]     m_Lightmaps;void Awake (){if (m_RendererInfo == null || m_RendererInfo.Length == 0)return;var lightmaps = LightmapSettings.lightmaps;var combinedLightmaps = new LightmapData[lightmaps.Length + m_Lightmaps.Length];lightmaps.CopyTo(combinedLightmaps, 0);for (int i = 0; i < m_Lightmaps.Length;i++){combinedLightmaps[i+lightmaps.Length] = new LightmapData();combinedLightmaps[i+lightmaps.Length].lightmapFar = m_Lightmaps[i];}ApplyRendererInfo(m_RendererInfo, lightmaps.Length);LightmapSettings.lightmaps = combinedLightmaps;}static void ApplyRendererInfo (RendererInfo[] infos, int lightmapOffsetIndex){for (int i=0;i<infos.Length;i++){var info = infos[i];info.renderer.lightmapIndex = info.lightmapIndex + lightmapOffsetIndex;info.renderer.lightmapScaleOffset = info.lightmapOffsetScale;}}#if UNITY_EDITOR[UnityEditor.MenuItem("Assets/Bake Prefab Lightmaps")]static void GenerateLightmapInfo (){if (UnityEditor.Lightmapping.giWorkflowMode != UnityEditor.Lightmapping.GIWorkflowMode.OnDemand){Debug.LogError("ExtractLightmapData requires that you have baked you lightmaps and Auto mode is disabled.");return;}UnityEditor.Lightmapping.Bake();PrefabLightmapData[] prefabs = FindObjectsOfType<PrefabLightmapData>();foreach (var instance in prefabs){var gameObject = instance.gameObject;var rendererInfos = new List<RendererInfo>();var lightmaps = new List<Texture2D>();GenerateLightmapInfo(gameObject, rendererInfos, lightmaps);instance.m_RendererInfo = rendererInfos.ToArray();instance.m_Lightmaps = lightmaps.ToArray();var targetPrefab = UnityEditor.PrefabUtility.GetPrefabParent(gameObject) as GameObject;if (targetPrefab != null){//UnityEditor.PrefabUnityEditor.PrefabUtility.ReplacePrefab(gameObject, targetPrefab);}}}static void GenerateLightmapInfo (GameObject root, List<RendererInfo> rendererInfos, List<Texture2D> lightmaps){var renderers = root.GetComponentsInChildren<MeshRenderer>();foreach (MeshRenderer renderer in renderers){if (renderer.lightmapIndex != -1){RendererInfo info = new RendererInfo();info.renderer = renderer;info.lightmapOffsetScale = renderer.lightmapScaleOffset;Texture2D lightmap = LightmapSettings.lightmaps[renderer.lightmapIndex].lightmapFar;info.lightmapIndex = lightmaps.IndexOf(lightmap);if (info.lightmapIndex == -1){info.lightmapIndex = lightmaps.Count;lightmaps.Add(lightmap);}rendererInfos.Add(info);}}}
#endif}

注意Directional Mode这个参数要设置成Non-Directional,否则运行场景会是黑的,得不到预期的烘焙效果

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity 烘焙问题

一、场景光照设置 1、ShadowLight 控制产生阴影 2、Directional Light 控制产生阴影的亮度 二、project setting Quality Shadow设置 三、模型(FBX)设置 1、模型UV设置 2、模型产生阴影设置&#xff08;Cast shadows&#xff09; 3、模型是否接受光照设置…

网页嵌入网易云音乐

方法一&#xff08;不能自动播放&#xff09;&#xff1a; 1.登录网页版网易云音乐&#xff0c;选择想要播放的音乐&#xff0c;点击“生成外链接播放器” 2.选择想要使用的插件&#xff0c;并将代码复制到自己的网页中

跟着网易云课堂一起学习高级Android开发知识

大家早上好&#xff0c;新一期的网易云课堂Android高级开发工程师免费直播课程又开始啦&#xff01; 每天晚上网易云课堂都会准时给大家带来非常适合于进阶的干货直播课程&#xff0c;内容主题丰富且形式不固定&#xff0c;在这里你可以学到Glide、组件化、插件化、网络框架、U…

自建网易云音乐解锁代理

自建网易云音乐解锁代理 简介使用方法基本用法音源选择转发为 Shadowsocks1.通过 glider 转发为Shadowsocks 客户端分流规则Client参考文章 简介 通过配置下文代理&#xff0c;可以解锁网易云音乐下架变灰歌曲。使用到的项目为 UnblockNeteaseMusic 和 glider。 使用方法 本…

下载网易云课堂和B站的视频

我们在平时的学习中&#xff0c;很有可能会接触 网易云课堂 和 BIlibili 这两个很棒的网站。 有的时候我们在线观看不方便&#xff0c;总是想把网站里面的视频下载到电脑&#xff0c;然后自己闲暇时间进行学习。 方法有很多&#xff0c;这里大家介绍两款软件&#xff0c;是我用…

网易云音乐接口

网易云接口 声明请求方式&#xff08;get&#xff09;接口调用参数表快速下载指定音乐&#xff08;mp3格式&#xff09;参数说明 song参数说明 typelyric参数说明 typecomments参数说明 typedetail参数说明 typeplaylist参数说明 typesearch个人建议关于普通评论歌词滚动播放 声…

网易云课堂前端微专业各部分作业解答

买了云课堂的前端微专业课程,在这里记录下解题的过程,一来防止自己偷懒,二来希望朋友们看到能提提意见,共同进步。 主要放大题自己写的答案,有些会提提思路,代码基本都在在线代码平台上。 注:除注明作者外,其他均为本人回答 PS部分 HTML部分 创建三个截图的HTML结构…

网易云播放器外链插入html,Wordpress网易云外链音乐播放调用

最近想写点音乐感受类的文章。中间穿插一些音乐播放效果肯定非常不错。于是网上搜寻了一会&#xff0c;经亲身实践后&#xff0c;找到两种靠谱的方法。现在分享出来。 首先我发现原来网易云音乐官方已经提供了这个生成外链音乐的功能。我们进入网易云音乐后&#xff0c;选择自己…

轻松下载网易云音乐中的歌曲

最近快毕业了&#xff0c;想做一个视频记录一下三年的学习时光&#xff0c;背景音乐准备使用《祝你一路顺风》&#xff0c;找到网易云音乐中的这首曲子&#xff0c;也是原唱&#xff0c;非常满意&#xff0c;但是下载的时候需要安装软件&#xff0c;这就不开心啦&#xff0c;于…

网易云音乐Mac上传云盘

网易云音乐上传助手 主要是为了解决 MAC 版本网易云音乐无上传音乐至云盘的功能&#xff0c;感觉很不方便&#xff0c;所以自己用 Electron 写了个工具&#xff0c;同时也希望能帮助到你 ~~ 首页 上传 使用方法&#xff08;GitHub地址&#xff09; 1. 你可以直接点击右侧 Re…

网易云音乐登陆显示服务器错误,网易云音乐-登录业务流程还原

网易云音乐-登录业务流程还原产品:网易云音乐 版本:Android V5.9.1.789389 时间:2019年3月17日 体验人:望见鱼 梳理绘制思路 1.梳理【登录】流程(仅:手机登录,微信登录) 2.通过暴力测试,发现有哪些异常情况,错误系统是如何系统,并记录异常的提示文案和系统对错误的反应…

网易云音乐——网易云云盘上传音乐自动改名的解决方法

文章目录&#xff1a; 1 问题描述2 解决办法2.1 出现这种问题的原因2.2 解决该问题的具体方式 1 问题描述 如下我选择要上传的mp3文件&#xff1a;005【情绪表达】想被人了解&#xff0c;就不要自己先捣乱——情绪表达误区.mp3 大家可以看到&#xff1a;上传的文件名为005【情…

实现网易云课堂《SSM高级整合视频教程》一课的项目(尚硅谷教育提供)

博主实现了网易云课堂中《SSM高级整合视频教程》一课讲述的项目&#xff0c;并对前端代码进行了一定程度上的解耦。 运行效果 源码地址 https://github.com/Hunter1023/SSM_CRUD&#xff0c;觉得有用麻烦Star/Fork&#xff0c;欢迎留言讨论。

arm64Linux网易云,网易云音乐arm版

网易云音乐arm版是一款采用arm打造的网易云音乐&#xff0c;能够支持Linux系统的正常实用&#xff0c;网易云音乐arm版有着同样优秀的画面你等着大家尝试&#xff0c;这里有着海量的歌曲一定可以让大家尝试到最棒的效果&#xff0c;与windows版本没有多少区别&#xff0c;快来下…

网易云课堂课程下载教程

网易云课堂不能下载视频,缓存打不开? 记: 网易云课堂、中国大学mooc这些学习平台确实大大方便了我们这些工作党学习,之前一直用的是手机客户端看视频,但是由于换手机啊,清理垃圾啊,手机储存容量各种原因,同一个课程下载了好几次,下完又被清除。今天发现了一个好东西,…

干货,下载网易云课堂和B站的视频

原文网址&#xff1a;https://www.jianshu.com/p/ad20e5a63353 我们在平时的学习中&#xff0c;很有可能会接触 网易云课堂 和 BIlibili 这两个很棒的网站。 有的时候我们在线观看不方便&#xff0c;总是想把网站里面的视频下载到电脑&#xff0c;然后自己闲暇时间进行学习。 方…

网易云课堂视频下载

1 通过网络分析找到视频的网址 2源代码如下&#xff1a; import requests import osimport optparseheaders {"User - Agent": "Mozilla / 5.0(Windows NT 10.0;WOW64) AppleWebKit / 537.36(KHTML, like Gecko) Chrome / 84.0.4147.105 Safari / 537.36"…

【工具】putty下载、安装、使用和常用设置教程

一&#xff0c;Putty简介 Putty是一个远程登录工具&#xff0c;适用于 Windows 和 Unix 平台的Telnet、SSH和 RLOGIN客户端。 跨平台支持&#xff1a;PuTTY 可以在多个操作系统上运行&#xff0c;包括 Windows、Linux、Mac 等&#xff0c;使得在不同的平台上使用相同的工具成为…

保姆级教程,龙蜥操作系统安装使用一步到位!

本文以龙蜥操作系统(Anolis OS) 8.4 为例&#xff0c;为龙蜥社区的用户提供安装指南&#xff0c;希望本文能帮助用户可使用图形化安装接口部署 Anolis OS 到目标平台上。 一、准备 ISO 安装镜像 登录龙蜥社区下载页面&#xff08;链接地址见文末&#xff09;获取适合自己架构及…