• Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by xproject2013 · May 20, 2015 at 12:21 PM · c#lightmapscritping

Multiple lightmapping for a scene

Hi, i need to have a scene with 2 different lightmap (the same scene with and without light) and i need to switch between the lightmaps by c# script. can anyone help me?

Thanks in advance!

Comment
Add comment · Show 1
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image xproject2013 · May 20, 2015 at 12:21 PM 0
Share

I use Unity 4.6

2 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by xproject2013 · May 20, 2015 at 01:22 PM

I found a solution by myself, i poste the code, hope that this can help:

 using UnityEngine;
 using System.Collections;
 
 public class LightmapController : MonoBehaviour {
 
     LightmapData[] lightmapData;
 
     void Start (){
         lightmapData = new LightmapData[1];
     }
 
 
     void setLightmap (int index){
         lightmapData[0] = new LightmapData();
         lightmapData[0].lightmapFar = Resources.Load( "lightmaps/test/LightmapFar-" + index.ToString(), typeof(Texture2D)) as Texture2D;
         LightmapSettings.lightmaps = lightmapData;
     }
 
     void Update () {
         if (Input.GetKeyDown("t")) setLightmap(0);
         if (Input.GetKeyDown("o")) setLightmap(1);
     }
     
 }
Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image
0

Answer by Halfbiscuit · May 20, 2015 at 01:28 PM

The way I swap light maps is I have a duplicate scene with different light settings, doing this means you only need to swap the images that change.

 m_Index = GetComponent<Renderer>().lightmapIndex;
 m_OriginalMap = LightmapSettings.lightmaps[m_Index].lightmapFar;

This is how you can get the current light map data for a renderer (for when you want to swap back).

I couldn't find any nicer way to access the alternate map than dragging it onto the script as a public variable.

The actual swap code is this:

 LightmapData[] data = LightmapSettings.lightmaps;
 if(m_UsingOriginal)
     data[m_Index].lightmapFar = m_AlternateMap;
 else
     data[m_Index].lightmapFar = m_OriginalMap;
 m_UsingOriginal = (!m_UsingOriginal);
 LightmapSettings.lightmaps = data;

My data only included far lightmaps, if yours had near lightmaps I assume you would swap those in the same way.

I would love for someone to come tell me there is a better way but this is how i did it.

Hope this helps.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

21 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Multiple Cars not working 1 Answer

Distribute terrain in zones 3 Answers

How to break all fixed joints connected to a particular rigidbody? 0 Answers

How do I set rectTransform properties of one image to another which differ in anchor and parent transforms (script)? 0 Answers

An OS design issue: File types associated with their appropriate programs 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges