Страница 1 из 1

Смена Lightmap текстуры (Решено)

СообщениеДобавлено: 02 окт 2011, 00:29
Shi
Здравствуйте. Подскажите, есть ли способ как либо динамически сменять Lightmap текстуру на какую-либо другую (в основном, для для смены дня\ночи)?
Наткнулся на подобный инструмент http://forum.unity3d.com/threads/94813-Lightmap-Manager-2-Animated-Lightmaps-per-object-baking-and-saving?highlight=Lightmap+Manager обладающий схожими, но избыточными функциями.

Re: Смена Lightmap текстуры

СообщениеДобавлено: 02 окт 2011, 00:43
gnoblin

Re: Смена Lightmap текстуры (Решено)

СообщениеДобавлено: 02 окт 2011, 10:28
Shi
Спасибо!

Re: Смена Lightmap текстуры (Решено)

СообщениеДобавлено: 10 окт 2011, 12:06
Shi
Подскажите пожалуйста, почему ни один из способов не работает?
Объекту уже присвоена какая либо lightmap. Пробуем сменить, но на любую строчку подобного кода реакция нулевая.
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class LightmapChange : MonoBehaviour {

    public Texture2D[] SomeLightmaps;
        void Start () {
        //пробуем
        LightmapData[] LmData = new LightmapData[2];
        LmData[0].lightmapFar = SomeLightmaps[1];
        LmData[0].lightmapNear = SomeLightmaps[0];
        LightmapSettings.lightmaps = LmData;
        //пробуем получить хоть какую то реакцию
        LightmapSettings.lightmaps[0].lightmapFar = null;
        //пробуем по другому
        LightmapSettings.lightmaps[0].lightmapFar = SomeLightmaps[1];
        LightmapSettings.lightmaps[0].lightmapNear = SomeLightmaps[1]; ;
        }
}
 

Re: Смена Lightmap текстуры

СообщениеДобавлено: 10 окт 2011, 12:57
gnoblin
Чуть позже гляну как делал.

Re: Смена Lightmap текстуры

СообщениеДобавлено: 10 окт 2011, 18:46
Shi
Был бы очень благодарен. На офф. форуме есть 3-4 темы со схожим кодом, и утверждается, что он работает (работал - темы старые).

Re: Смена Lightmap текстуры

СообщениеДобавлено: 10 окт 2011, 19:36
gnoblin
Лайтмапы грузятся из бандля (не стал вырывать из контекста):

Синтаксис:
Используется csharp
LightmapData[] data = new LightmapData[s.lightmap_namings.Length];
        for (int i = 0; i < data.Length; i++)
        {
            data[i] = new LightmapData();
            if (www.assetBundle.Contains(s.lightmap_namings[i].far_name))
            {
                AssetBundleRequest bundleRequest = www.assetBundle.LoadAsync(s.lightmap_namings[i].far_name, typeof(Texture2D));
                yield return bundleRequest;
                data[i].lightmapFar = (Texture2D)bundleRequest.asset;
            }
            else
            {
                Debug.Log("far lighmap not found");
            }
           
            if (www.assetBundle.Contains(s.lightmap_namings[i].near_name))
            {
                AssetBundleRequest bundleRequest = www.assetBundle.LoadAsync(s.lightmap_namings[i].near_name, typeof(Texture2D));
                yield return bundleRequest;
                data[i].lightmapNear = (Texture2D)bundleRequest.asset;
            }
            else
            {
                Debug.Log("near lighmap not found");
            }
        }

        LightmapSettings.lightmaps = data;

Re: Смена Lightmap текстуры

СообщениеДобавлено: 11 окт 2011, 08:31
Shi
Сработало, спасибо большое! Почему не работало в первом случае - нужно было создавать каждый новый элемент массива, а я создавал только сам массив.
[curved_hands]