Search Unity

UniSky - real-time procedural sky tool - now available on the Asset Store

Discussion in 'Made With Unity' started by Chris Morris, Jan 7, 2011.

  1. paul.harden

    paul.harden

    Joined:
    Aug 8, 2011
    Posts:
    5
    Hi Chris,
    I've experienced severe fps drops on my little testbed (acer laptop core2 duo/nvidia8600m, Vista) so I had to sadly rip off unisky from the final release, Yet it runs flawlessly on the dev machine (I7 + radeon 6700 + windows7). dev machine=120fps little testbed=15fps
     
  2. Demostenes

    Demostenes

    Joined:
    Sep 10, 2010
    Posts:
    1,106
    Any progress with this?

    Btw, how big is performace impact of unisky? I mean difference between full scene with and without uniky.
     
  3. wholder

    wholder

    Joined:
    Mar 8, 2011
    Posts:
    1
    How well does UniSky work on iOS?

    Wayne
     
  4. x4000

    x4000

    Joined:
    Mar 17, 2010
    Posts:
    353
    In my experience, it varies incredibly by graphics card. With many newer graphics cards, it's so negligible that it is not even noticeable. With graphics cards from 4-5 years ago, sometimes it's creating 20ms or more of processing per frame for me. It's a great tool, but it's very GPU-bound.
     
  5. namoricoo

    namoricoo

    Joined:
    Apr 14, 2011
    Posts:
    534
    I think I found a way to optimize UniSky for Mobile platforms. Because it was so slow I started working a my own version. While doing research that's when I found what was wrong with the current version of Unisky. It's the terrain that's the problem. The current terrain is not optimize for mobile. That's where over 90% of the draw calls are coming from. When The terrain is present I get up to 122 draw calls at times. However, when I remove the terrain and the trees. The draw calls goes down to only 5 draw calls in any direction. So all we have to do is remove the old terrain and put in a new Terrain from Unity 3.4. The Terrain in 3.4 is optimized for mobile. The old terrain in unity 3.3 or earlier was not. It's that simple. I also to you to put a way to manually enter the time so I don't have to do it programmatically.
     
  6. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,241
    We just upgraded to 1.2.6 and now we can't make it rain. There is a "precipitation" slider but that only seems to change the color of the clouds. How do we bring on the rain?
     
  7. UnleadedGames

    UnleadedGames

    Joined:
    Feb 17, 2008
    Posts:
    242
    You have to write a script and attach it in your scene. Its in the directions and the included sample scene includes an example script you can "borrow" to get going.
     
  8. Mixality_KrankyBoy

    Mixality_KrankyBoy

    Joined:
    Mar 27, 2009
    Posts:
    737
    IN case anyone is interested I have written a "weather manager" which is basically the script you need to control the API, but allows for weather changes based on terrain type - it is a WIP and VERY rough (hacked it up in about 20min). But I was hoping if I put it "out there" people will add to it and refine it. I have commented out any parts that are my project specific but I appologize if I missed something.

    Code (csharp):
    1.  
    2. using UnityEngine;
    3. using System.Collections;
    4.  
    5. [AddComponentMenu("Scripts/Global/WeatherManager")]
    6. public class WeatherManager : MonoBehaviour
    7. {
    8.     public int timeMinFor24hrCycle = 0; //40 is a good value
    9.     public float startTime = 12f;
    10.     public float minutesToCheckForNextWeatherChange = 10f;
    11.     public float timeInSecToChangeWeather = 20f;
    12.     public WEATHER_ZONE WeatherZone = WEATHER_ZONE.PLAINS;
    13.  
    14.  
    15.     // instance of the API
    16.     private UniSkyAPI uniSky;
    17.     private bool weatherInHold = false;
    18.     private WEATHER_STATE currentWeatherState = WEATHER_STATE.NONE;
    19.     private Light sunLight;
    20.  
    21.     public struct WeatherChances
    22.     {
    23.         public float HeavyStorm;
    24.         public float HeavyRain;
    25.         public float LightRain;
    26.         public float Overcast;
    27.         public float SunShower;
    28.         public float Cloudy;
    29.         public float Cloudless;
    30.     }
    31.  
    32.     private void Awake()
    33.     {
    34.         // Define instance
    35.         uniSky = GameObject.Find("UniSkyAPI").GetComponent("UniSkyAPI") as UniSkyAPI;
    36.  
    37.         // Initiate and create default UniSky
    38.         uniSky.InstantiateUniSky();
    39.  
    40.         // Set some initial states
    41.         uniSky.SetTime(startTime);
    42.         //uniSky.SetAmbientLighting(new Color(0.1f, 0.1f, 0.1f, 0.1f));
    43.         uniSky.SetAmbientLighting(new Color(0f, 0f, 0f, 0f));
    44.         uniSky.SetStormCenter(new Vector3(0, 0, 0));
    45.         uniSky.SetSunShadows(LightShadows.Soft);
    46.  
    47.         //Start Sun - if applicable
    48.         ControlSun();
    49.  
    50.     }
    51.  
    52.     private void Start()
    53.     {
    54.         ////Set Sun and need to re-assign lightsources because the sun is created after global is initialized
    55.         //GlobalManager.Sun = GameObject.FindGameObjectWithTag("Sun");
    56.         //GlobalManager.LightSources = GameObject.FindGameObjectsWithTag("LightSource");
    57.         //sunLight = (Light)GlobalManager.Sun.GetComponent(typeof(Light));
    58.         //sunLight.shadowStrength = 1f;
    59.  
    60.         timeInSecToChangeWeather *= 1000f; //Change to milliseconds
    61.         float weatherCheckTime = minutesToCheckForNextWeatherChange * 60f;
    62.         InvokeRepeating("ManageWeather", 0f, weatherCheckTime);
    63.     }
    64.  
    65.     private void Update()
    66.     {
    67.     }
    68.  
    69.     private void ManageWeather()
    70.     {
    71.  
    72.         if (weatherInHold) { return; }
    73.  
    74.         //TODO - might change this so that there is only a chance
    75.         //to change to the NEXT weather pattern (one up or one down)
    76.         //So that we don't go from cloudless to heavyStorm suddenly
    77.  
    78.         //NOTE these percents should add to 100% (1f)
    79.         WeatherChances weatherChances = GetWeatherChancesBasedOnTerrain();
    80.  
    81.         float weatherForcast = UnityEngine.Random.Range(0f, 1f);
    82.  
    83.         float weatherLevel1 = weatherChances.Cloudless;
    84.         float weatherLevel2 = weatherLevel1 + weatherChances.Cloudy;
    85.         float weatherLevel3 = weatherLevel2 + weatherChances.SunShower;
    86.         float weatherLevel4 = weatherLevel3 + weatherChances.Overcast;
    87.         float weatherLevel5 = weatherLevel4 + weatherChances.LightRain;
    88.         float weatherLevel6 = weatherLevel5 + weatherChances.HeavyRain;
    89.         float weatherLevel7 = weatherLevel6 + weatherChances.HeavyStorm;
    90.  
    91.  
    92.         if (weatherForcast < weatherLevel1)
    93.         {
    94.             SetCloudless();
    95.         }
    96.         else if (weatherForcast < weatherLevel2)
    97.         {
    98.             SetCloudy();
    99.         }
    100.         else if (weatherForcast < weatherLevel3)
    101.         {
    102.             SetSunShower();
    103.         }
    104.         else if (weatherForcast < weatherLevel4)
    105.         {
    106.             SetOvercast();
    107.         }
    108.         else if (weatherForcast < weatherLevel5)
    109.         {
    110.             SetLightRain();
    111.         }
    112.         else if (weatherForcast < weatherLevel6)
    113.         {
    114.             SetHeavyRain();
    115.         }
    116.         else if (weatherForcast < weatherLevel7)
    117.         {
    118.             SetHeavyStorm();
    119.         }
    120.     }
    121.  
    122.     private WeatherChances GetWeatherChancesBasedOnTerrain()
    123.     {
    124.         WeatherChances weatherChances;
    125.         weatherChances.HeavyStorm = 0f;
    126.         weatherChances.HeavyRain = 0f;
    127.         weatherChances.LightRain = 0f;
    128.         weatherChances.Overcast = 0f;
    129.         weatherChances.SunShower = 0f;
    130.         weatherChances.Cloudy = 0f;
    131.         weatherChances.Cloudless = 0f;
    132.  
    133.         switch (WeatherZone)
    134.         {
    135.             case WEATHER_ZONE.DESERT:
    136.                 weatherChances.Overcast = .05f;
    137.                 weatherChances.SunShower = .05f;
    138.                 weatherChances.Cloudy = .40f;
    139.                 weatherChances.Cloudless = .50f;
    140.                 break;
    141.             case WEATHER_ZONE.PLAINS:
    142.                 weatherChances.HeavyStorm = .05f;
    143.                 weatherChances.HeavyRain = .10f;
    144.                 weatherChances.LightRain = .10f;
    145.                 weatherChances.Overcast = .15f;
    146.                 weatherChances.SunShower = .05f;
    147.                 weatherChances.Cloudy = .50f;
    148.                 weatherChances.Cloudless = .05f;
    149.                 break;
    150.             case WEATHER_ZONE.FOREST:
    151.                 weatherChances.HeavyStorm = .10f;
    152.                 weatherChances.HeavyRain = .10f;
    153.                 weatherChances.LightRain = .10f;
    154.                 weatherChances.Overcast = .10f;
    155.                 weatherChances.SunShower = .05f;
    156.                 weatherChances.Cloudy = .50f;
    157.                 weatherChances.Cloudless = .05f;
    158.                 break;
    159.             case WEATHER_ZONE.JUNGLE:
    160.                 weatherChances.HeavyStorm = .15f;
    161.                 weatherChances.HeavyRain = .15f;
    162.                 weatherChances.LightRain = .10f;
    163.                 weatherChances.Overcast = .05f;
    164.                 weatherChances.SunShower = .05f;
    165.                 weatherChances.Cloudy = .50f;
    166.                 break;
    167.             default:
    168.                 weatherChances.HeavyStorm = .05f;
    169.                 weatherChances.HeavyRain = .10f;
    170.                 weatherChances.LightRain = .10f;
    171.                 weatherChances.Overcast = .15f;
    172.                 weatherChances.SunShower = .05f;
    173.                 weatherChances.Cloudy = .50f;
    174.                 weatherChances.Cloudless = .05f;
    175.                 break;
    176.         }
    177.  
    178.         return weatherChances;
    179.     }
    180.  
    181.     private void ControlSun()
    182.     {
    183.         if (timeMinFor24hrCycle != 0)
    184.         {
    185.             // set up a 24-hour cycle with a framerate dependent speed of 1.0
    186.             uniSky.LerpTime(24f, 1000f * 60f * (float)timeMinFor24hrCycle);
    187.             //Debug.Log("Time is : " + uniSky.GetTime());
    188.         }
    189.         else
    190.         {
    191.             uniSky.SetSpeedOfTime(0f);
    192.         }
    193.     }
    194.  
    195.     private void SetHeavyStorm()
    196.     {
    197.         //Debug.Log("-----HEAVY STORM STARTING-----");
    198.         // Functions to interpolate parameters over time
    199.         uniSky.LerpCloudCover(5f, timeInSecToChangeWeather);
    200.         uniSky.LerpPrecipitationLevel(0.2f, timeInSecToChangeWeather);
    201.         uniSky.LerpStormCloudCover(-3.5f, timeInSecToChangeWeather * 2);
    202.         uniSky.LerpRainLevel(500f, 0.2f, timeInSecToChangeWeather * 2);
    203.         uniSky.LerpStormLevel(200f, 0.4f, timeInSecToChangeWeather * 4);
    204.         uniSky.LerpSunIntensity(0.1f, timeInSecToChangeWeather * 2);
    205.         uniSky.LerpFogLevel(0.03f, timeInSecToChangeWeather * 4);
    206.         uniSky.LerpAmbientLighting(new Color(0.0f, 0.0f, 0.0f, 0.0f), timeInSecToChangeWeather);
    207.         uniSky.ClearDropletBuffer();
    208.         uniSky.LerpDropletLevel(10f, timeInSecToChangeWeather * 4);
    209.         //sunLight.shadowStrength = 0f;
    210.  
    211.         currentWeatherState = WEATHER_STATE.STORM;
    212.     }
    213.  
    214.     private void SetHeavyRain()
    215.     {
    216.         //Debug.Log("-----HEAVY RAIN STARTING-----");
    217.         // Functions to interpolate parameters over time
    218.         uniSky.LerpCloudCover(5f, timeInSecToChangeWeather);
    219.         uniSky.LerpPrecipitationLevel(0.4f, timeInSecToChangeWeather);
    220.         uniSky.LerpStormCloudCover(-1.0f, timeInSecToChangeWeather * 2);
    221.         uniSky.LerpRainLevel(100f, 0.2f, timeInSecToChangeWeather * 2);
    222.         uniSky.LerpStormLevel(150f, 0.4f, timeInSecToChangeWeather * 4);
    223.         uniSky.LerpSunIntensity(0.1f, timeInSecToChangeWeather * 2);
    224.         uniSky.LerpFogLevel(0.02f, timeInSecToChangeWeather * 4);
    225.         uniSky.LerpAmbientLighting(new Color(0.0f, 0.0f, 0.0f, 0.0f), timeInSecToChangeWeather);
    226.         uniSky.ClearDropletBuffer();
    227.         uniSky.LerpDropletLevel(8f, timeInSecToChangeWeather * 4);
    228.         //sunLight.shadowStrength = 0f;
    229.  
    230.         currentWeatherState = WEATHER_STATE.HEAVY_RAIN;
    231.     }
    232.  
    233.     private void SetLightRain()
    234.     {
    235.         //Debug.Log("-----LIGHT RAIN STARTING-----");
    236.         // Functions to interpolate parameters over time
    237.         uniSky.LerpCloudCover(2.5f, timeInSecToChangeWeather);
    238.         uniSky.LerpPrecipitationLevel(0.6f, timeInSecToChangeWeather);
    239.         uniSky.LerpStormCloudCover(-1.0f, timeInSecToChangeWeather * 2);
    240.         uniSky.LerpRainLevel(100f, 0.2f, timeInSecToChangeWeather * 2);
    241.         uniSky.LerpStormLevel(0f, 0.4f, timeInSecToChangeWeather * 4);
    242.         uniSky.LerpSunIntensity(0.2f, timeInSecToChangeWeather * 2);
    243.         uniSky.LerpFogLevel(0.01f, timeInSecToChangeWeather * 4);
    244.         uniSky.LerpAmbientLighting(new Color(0.47f, 0.47f, .5f, 0.0f), timeInSecToChangeWeather);
    245.         uniSky.ClearDropletBuffer();
    246.         uniSky.LerpDropletLevel(2f, timeInSecToChangeWeather * 4);
    247.         //sunLight.shadowStrength = .2f;
    248.  
    249.         currentWeatherState = WEATHER_STATE.LIGHT_RAIN;
    250.     }
    251.  
    252.  
    253.     private void SetSunShower()
    254.     {
    255.         //Debug.Log("-----SUN SHOWER STARTING-----");
    256.         // Functions to interpolate parameters over time
    257.         uniSky.LerpCloudCover(0f, timeInSecToChangeWeather);
    258.         uniSky.LerpPrecipitationLevel(1.5f, timeInSecToChangeWeather);
    259.         uniSky.LerpStormCloudCover(0f, timeInSecToChangeWeather * 2);
    260.         uniSky.LerpRainLevel(50, 0.2f, timeInSecToChangeWeather * 2);
    261.         uniSky.LerpStormLevel(0, 0.4f, timeInSecToChangeWeather * 4);
    262.         uniSky.LerpSunIntensity(0.45f, timeInSecToChangeWeather * 2);
    263.         uniSky.LerpFogLevel(0f, timeInSecToChangeWeather * 4);
    264.         uniSky.LerpAmbientLighting(new Color(0.94f, 0.94f, 1.0f, 0.0f), timeInSecToChangeWeather);
    265.         uniSky.ClearDropletBuffer();
    266.         uniSky.LerpDropletLevel(0.5f, timeInSecToChangeWeather * 4);
    267.         //sunLight.shadowStrength = .8f;
    268.  
    269.         currentWeatherState = WEATHER_STATE.SUNSHOWER;
    270.     }
    271.  
    272.     private void SetOvercast()
    273.     {
    274.         //Debug.Log("-----OVERCAST STARTING-----");
    275.         // Functions to interpolate parameters over time
    276.         uniSky.LerpCloudCover(2f, timeInSecToChangeWeather);
    277.         uniSky.LerpPrecipitationLevel(1.2f, timeInSecToChangeWeather);
    278.         uniSky.LerpStormCloudCover(-5f, timeInSecToChangeWeather * 2);
    279.         uniSky.LerpRainLevel(0, 0.2f, timeInSecToChangeWeather * 2);
    280.         uniSky.LerpStormLevel(0, 0.4f, timeInSecToChangeWeather * 4);
    281.         uniSky.LerpSunIntensity(0.3f, timeInSecToChangeWeather * 2);
    282.         uniSky.LerpFogLevel(0.01f, timeInSecToChangeWeather * 4);
    283.         uniSky.LerpAmbientLighting(new Color(0.8f, 0.8f, .84f, 0.0f), timeInSecToChangeWeather);
    284.         uniSky.ClearDropletBuffer();
    285.         uniSky.LerpDropletLevel(0f, timeInSecToChangeWeather * 4);
    286.         //sunLight.shadowStrength = .4f;
    287.  
    288.         currentWeatherState = WEATHER_STATE.OVERCAST;
    289.     }
    290.  
    291.     private void SetCloudy()
    292.     {
    293.         //Debug.Log("-----CLOUDY STARTING-----");
    294.         // Functions to interpolate parameters over time
    295.         uniSky.LerpCloudCover(-2f, timeInSecToChangeWeather);
    296.         uniSky.LerpPrecipitationLevel(2f, timeInSecToChangeWeather);
    297.         uniSky.LerpStormCloudCover(-5f, timeInSecToChangeWeather * 2);
    298.         uniSky.LerpRainLevel(0, 0.2f, timeInSecToChangeWeather * 2);
    299.         uniSky.LerpStormLevel(0, 0.4f, timeInSecToChangeWeather * 4);
    300.         uniSky.LerpSunIntensity(0.45f, timeInSecToChangeWeather * 2);
    301.         uniSky.LerpFogLevel(0f, timeInSecToChangeWeather * 4);
    302.         uniSky.LerpAmbientLighting(new Color(0.94f, 0.94f, 1.0f, 0.0f), timeInSecToChangeWeather);
    303.         uniSky.ClearDropletBuffer();
    304.         uniSky.LerpDropletLevel(0, timeInSecToChangeWeather * 4);
    305.         //sunLight.shadowStrength = .8f;
    306.  
    307.         currentWeatherState = WEATHER_STATE.CLOUDY;
    308.     }
    309.  
    310.     private void SetCloudless()
    311.     {
    312.         //Debug.Log("-----CLOUDLESS STARTING-----");
    313.         // Functions to interpolate parameters over time
    314.         uniSky.LerpCloudCover(-5f, timeInSecToChangeWeather);
    315.         uniSky.LerpPrecipitationLevel(2f, timeInSecToChangeWeather);
    316.         uniSky.LerpStormCloudCover(-5f, timeInSecToChangeWeather * 2);
    317.         uniSky.LerpRainLevel(0, 0.2f, timeInSecToChangeWeather * 2);
    318.         uniSky.LerpStormLevel(0, 0.4f, 20000.0f);
    319.         uniSky.LerpSunIntensity(0.5f, timeInSecToChangeWeather * 2);
    320.         uniSky.LerpFogLevel(0f, 20000.0f);
    321.         uniSky.LerpAmbientLighting(new Color(0.94f, 0.94f, 1f, 0.0f), timeInSecToChangeWeather);
    322.         uniSky.ClearDropletBuffer();
    323.         uniSky.LerpDropletLevel(0, 20000.0f);
    324.         //sunLight.shadowStrength = 1f;
    325.  
    326.         currentWeatherState = WEATHER_STATE.CLOUDLESS;
    327.     }
    328.  
    329.  
    330.     public void ChangeWeather(WEATHER_STATE weatherState)
    331.     {
    332.         if (weatherState == WEATHER_STATE.CLOUDLESS)
    333.         {
    334.             SetCloudless();
    335.         }
    336.         else if (weatherState == WEATHER_STATE.CLOUDY)
    337.         {
    338.             SetCloudy();
    339.         }
    340.         else if (weatherState == WEATHER_STATE.SUNSHOWER)
    341.         {
    342.             SetSunShower();
    343.         }
    344.         else if (weatherState == WEATHER_STATE.OVERCAST)
    345.         {
    346.             SetOvercast();
    347.         }
    348.         else if (weatherState == WEATHER_STATE.LIGHT_RAIN)
    349.         {
    350.             SetLightRain();
    351.         }
    352.         else if (weatherState == WEATHER_STATE.HEAVY_RAIN)
    353.         {
    354.             SetHeavyRain();
    355.         }
    356.         else if (weatherState == WEATHER_STATE.STORM)
    357.         {
    358.             SetHeavyStorm();
    359.         }
    360.         else
    361.         {
    362.             SetCloudy(); //default
    363.         }
    364.     }
    365.  
    366.     public WEATHER_STATE GetCurrentWeatherState()
    367.     {
    368.         return currentWeatherState;
    369.     }
    370.  
    371.     public void EnableWeatherChange()
    372.     {
    373.         weatherInHold = false;
    374.     }
    375.  
    376.     public void DisableWeatherChange()
    377.     {
    378.         weatherInHold = true;
    379.     }
    380. }
    381.  
    382. public enum WEATHER_ZONE { DESERT = 0, PLAINS, FOREST, JUNGLE };
    383. public enum WEATHER_STATE { NONE, CLOUDLESS, CLOUDY, SUNSHOWER, OVERCAST, LIGHT_RAIN, HEAVY_RAIN, STORM };
    384.  
    385.  
    Also I should note that the values I have set in the inspector vars are set to debug values (in other words the weather will change too quickly and too often.
     
  9. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,241
    Thanks msken and KrankyBoy -- I can't believe that they'd remove the inspector parameters for weather, seems like a huge step backwards (and didn't Chris say they had put those back in after some pushback)?
     
  10. dgutierrezpalma

    dgutierrezpalma

    Joined:
    Dec 22, 2009
    Posts:
    404
    Hi Chris,

    After several months working on completely unrelated projects, it's a pleasure to work again on a project in which we use UniSky. We are going to use UniSky for weather simulation and we need the Sun position to match its real-world location, taking into account the time of the day, the month of the year and the longitude / latitude of a real-world of a city.

    We talked before about exposing as public instance variables the "longitude" and "latitude" parameters of the "SetPosition()" method in the "DirectionalSun" class, but after downloading the last version of UniSky from the Asset Store, I have seen that you haven't applied those changes yet. I think it would be even better if we could change those parameters from the API, but exposing those parameters as public variables would be good enough for me...


    In the "SetPosition()" method, we have the following variables:
    Code (csharp):
    1. float JULIANDATE = 80;
    2. float MERIDIAN = 0 * 15;
    3. float LATITUDE = Mathf.Deg2Rad * 0;
    4. float LONGITUDE =  0;
    The meaning of the "latitude" and "longitude" parameters are really obvious, but what is the meaning of the "meridian" parameter? And the "JULIANDATE" parameter? can that parameter be used for defining the month or only the year? how?
     
  11. dgutierrezpalma

    dgutierrezpalma

    Joined:
    Dec 22, 2009
    Posts:
    404
  12. duke

    duke

    Joined:
    Jan 10, 2007
    Posts:
    763
  13. dgutierrezpalma

    dgutierrezpalma

    Joined:
    Dec 22, 2009
    Posts:
    404
    I knew the meaning of the "meridian" word, I just wanted to know its use in UniSky. However, the link about JulianDate is greatly appreciated ;)
     
  14. rafaelfigueroa

    rafaelfigueroa

    Joined:
    Aug 24, 2011
    Posts:
    23
    Nice asset ! But it cause major fps drop on our project.. from 150fps to 20fps... this on a laptop with mobile radeon 4200.
    In newer pcs and laps it didin´t cause so much impact, but we´re aiming at the medium computers... any tip of how can we optimize ??

    Thanks
     
    Last edited: Oct 31, 2011
  15. inimart

    inimart

    Joined:
    Jun 28, 2011
    Posts:
    1
    Hi davidgutierrezpalma, I have the same necessity for our project: we want the sun match its real-world location, with time of the day / month / longitude / latitude. I am interested in buying unisky, but I need to know if it will be suitable for our puposes:

    • At the current state of Unisky, I can set "day / month / longitude / latitude" vars in "DirectionalSun.js/cs, right? But I have to modify them manually, not via an interface in the game because they are not public, right?
    • How we have to use "meridian" value in Unisky? Maybe it is related to the Greenwich Meridian Time offset? I mean, if I am in a zone with GMT+2.00, telling that I'm in meridian 2 at 8.00 a.m. will be translated in 8.00 + 2 = 10.00 a.m.

    can you tell me if you reached any kind of solution for that?
     
  16. divinity

    divinity

    Joined:
    May 30, 2011
    Posts:
    411
    I can't acces the unysky in a script in unity using c# for example public UniSky un;
    it won't show in the monodevelop code completion

    As I am trying to get the day and night cycles to sync with a photon cloud server as well as the camera assigning to each player.
     
  17. Rob13

    Rob13

    Joined:
    Sep 7, 2011
    Posts:
    3
    Anyone have any idea how to integrate UniSky with Smart Water with regards to getting the sun reflection on the water to follow the UniSky sun?
     
  18. henry96

    henry96

    Joined:
    Sep 28, 2011
    Posts:
    582
    This tool is magnificent. Well done!!!
     
  19. Toad

    Toad

    Joined:
    Aug 14, 2010
    Posts:
    298
    Hi Chris, is there any update on mobile support?
     
  20. SarperS

    SarperS

    Joined:
    Mar 10, 2009
    Posts:
    824
    Does anyone have the custom Sun Shafts for Unisky? Chris doesn't respond my e-mails.
     
  21. kurylo3d

    kurylo3d

    Joined:
    Nov 7, 2009
    Posts:
    1,123
    Yea I would like to know if there is an update on a mobile version as well
     
  22. keyboardcowboy

    keyboardcowboy

    Joined:
    Feb 8, 2012
    Posts:
    75
    @Chris of 6x nothing: Where is the fog controlled within unisky? I have added a setfogcolor and lerpfogcolor (matching the other set and lerp functions) in order to control the color of the fog within unisky. However, it never changes. Is this controlled within the shaders?
    What I am trying to do is control the color of the fog when I go "underwater".

    thanks
     
  23. artician

    artician

    Joined:
    Nov 27, 2009
    Posts:
    345
    What happened to these guys? They don't respond to my emails either. They updated Unisky which caused it to stop working in my scene. I've sent Chris countless emails to get help. Last I heard from him was late last year, late November I think.

    I've resisted posting about it this whole time because I don't know what their circumstances are, but seeing as other people have commented on the lack of communication I thought I would chime in. I had to abandon Unisky because I was unable to get it working again, and had to write my own weather system and day/night cycle. I've lost *so* much time because of it. I hope the guys at 6xnothing are okay, but I am more than a little upset about the whole ordeal. :(
     
  24. Chris Morris

    Chris Morris

    Joined:
    Dec 19, 2009
    Posts:
    259
    Hey guys,

    First off I want to apologize for the few late/no responses. I was hired a couple of months ago to a new full time job right during a crunch period to launch a product demo. I've tried to respond to as many emails as possible during this time, but I can see here that I haven't been able to help everyone. Really sorry, and I intend to answer these questions as soon as possible.

    For those of you whose deeper questions were unanswered, could you resend your original message to me?

    To answer some of the general questions:

    1.) UniSky performance reports have been all over the place, but generally seems to not do well on very old systems and laptops. However, testing it on my 5 year-old computer (GTX 8800) it runs with only a small increase in frame time, definitely acceptable for real-time games with other things going on in the scene.

    2.) Progress on UniSky updates pretty much came to a halt. Between my new job and the need to keep pushing our own game, we had to de-prioritize it. I know this is disappointing, but these things tend to happen in indie game development. This is by no means written off forever, but for right now I need to focus on our team's priorities to work on the game.

    3.) We did put the inspector back in after many people reported wanting to have it, however the rain is controlled only in script now. The reason for this is because many people wanted more control over when "events" happened, like weather changes etc. The API was brought in to give people more control, but probably did bring in a little more complexity for non-programmers. However, the sample script included should show how easy it is to set up some rain in no time at all.

    rafaelfigueroa: Optimizations can be tricky if you aren't familiar with shaders. Reducing the iterations in the cloud shader should help some, at the expense of some visual quality, but for the most part the big things are already optimized.

    keyboardcowboy: Fog color is automated to match the sky color so that it works properly with heavy rain etc. Comment out these areas and you should have full control of the fog:

    1.) In "LateUpdate()" of "RainCloudLayer.cs/js" you will see:

    RenderSettings.fogColor = sun.color * new Color(5.3f,5.3f,5.3f);

    2.) In "InitRain()" of "RainCloudLayer.cs/js" you will see:

    RenderSettings.fog = true;
    RenderSettings.fogColor = new Color(0.5f, 0.5f, 0.5f);
    RenderSettings.fogDensity = 0;

    artician: I've sent you a PM

    Thanks for your patience guys, and I'll work hard to keep support up as much as possible.

    - Chris
     
  25. keyboardcowboy

    keyboardcowboy

    Joined:
    Feb 8, 2012
    Posts:
    75
    Ah, that is the one place I didn't look :)

    Thanks for the info, Chris.
     
  26. Bluestrike

    Bluestrike

    Joined:
    Sep 26, 2009
    Posts:
    256
    Since Unity 3.5 there is a thunder sound heard once when the game starts. (happens to be at the same time as my player spawns :) )
    Any ideas how to fix this?
     
  27. keyboardcowboy

    keyboardcowboy

    Joined:
    Feb 8, 2012
    Posts:
    75
    @Bluestrike it has something to do with the thunder sound itself. I replaced it with a different thunder sound effect, no more thunder clap when the scene loads.
     
  28. HolBol

    HolBol

    Joined:
    Feb 9, 2010
    Posts:
    2,887
    Does it have "play on awake" enabled?
     
  29. keyboardcowboy

    keyboardcowboy

    Joined:
    Feb 8, 2012
    Posts:
    75
    I did not see a Play on Awake anywhere. That was the first thing I looked for.
     
  30. SarperS

    SarperS

    Joined:
    Mar 10, 2009
    Posts:
    824
    UniSky doesn't play well with the Linear Color Space and HDR, I guess I won't be able to use it anymore as it's safe to say that it's officially dead.
     
  31. jc_lvngstn

    jc_lvngstn

    Joined:
    Jul 19, 2006
    Posts:
    1,508
    And this is probably one of the biggest gotchas with purchasing assets I have seen, project abandonment. I understand why and how it happens, it's just painful when it does.
     
  32. SeeleyBoothe

    SeeleyBoothe

    Joined:
    Feb 23, 2012
    Posts:
    44
    My game makes use of multiple cameras. Switching them on and off depending on what the player is doing. Is it possible to use this with multiple cameras?

    I noticed in the tutorial video it has to be attached to a camera.
     
  33. Rabbit-Stew-dio

    Rabbit-Stew-dio

    Joined:
    Mar 10, 2012
    Posts:
    1
    Getting rid of the thunder at the start is easy:
    (1) Drag the "UniSky" prefab into a scene, dive into the "UniSky/Weather" object and you'll find all audio-objects as childs.
    (2) Go through each of them and uncheck the "Play on Start" setting.
    (3 Then use the "apply" button on top of the UniSky object in your scene to copy these settings to the prefab itself.
     
  34. Bluestrike

    Bluestrike

    Joined:
    Sep 26, 2009
    Posts:
    256
    Thanks,
    Still weird that this happened after an unity upgrade, play on awake is not new in unity 3.5 so i did not go check the audio sources themselves :)
     
  35. ippdev

    ippdev

    Joined:
    Feb 7, 2010
    Posts:
    3,853
    Where would the hack be put to make it play with Linear and/or HDR? My scene looks much better in linear than gamma though I haven't dropped UniSky in at this point. It looked great in other scenes used it in on a personal project.. I wonder if Chris would be kind enough to open source it for improvements like HDR and Linear color space proper behavior. Also to keep it up to date with current RC versions. Nice tool and I bet with the Unity community brain trust we can shave some FPS numbers and get it viable on iOS and Android devices and up performance on other platforms.

    Whatcha say Chris? We might put some good tweaks you can use in your game in it. If nothing else I am gonna hack the sky cloud shader for a skydome..if it is possible.



    Best Regards
    BTH
     
  36. UnleadedGames

    UnleadedGames

    Joined:
    Feb 17, 2008
    Posts:
    242
    I don't want to disrespect Black Horizon Studios, so this post is in response to Sándor's (Creative Lead @ Six Times Nothing) post here:

    http://forum.unity3d.com/threads/12...ystem-RELEASED?p=889038&viewfull=1#post889038

    That comment makes me kind of angry. Especially as a paying customer who bought into the claims that Unisky was going to be getting all these great wonderful new features in future updates. I've been waiting for these updates (snow storms, accumulating snow, mobile versions, cleaner code, and heck even some bug fixes to play nice with new 3.5 features would be nice too!!) for UniSky for quite some time now and the only time I've even seen a response from you guys (apart from saying you have better stuff to do then work on Unisky) is now when a similar if not better and lower price point product comes along and threatens your sales? Just check out this very thread, when people call your product abandon-ware you are supposed to step up and defend your OWN product.

    I'm sorry I don't normally get upset like this, but that comment was a HUGE slap in the face, especially when I feel I was suckered into purchasing what I feel was an Early Adopter of features that never came.
     
  37. Mixality_KrankyBoy

    Mixality_KrankyBoy

    Joined:
    Mar 27, 2009
    Posts:
    737
    msken - you are bang on. I feel the same way.
     
  38. SixTimesNothing

    SixTimesNothing

    Joined:
    Dec 26, 2007
    Posts:
    167
    Hi msken, KrankyBoyGames,

    I think you have somewhat misunderstood my comment. I hope you will allow me to expand on some of my thoughts and response below.

    Firstly, the purpose of my comment on that thread was to respond to the misinformation regarding performance and culling masks. The implication that a culling range of 10000 is required for all objects is false. I wanted to clear that point up. If people want to choose between the two systems on offer, they should do so based on facts, not misinformation.

    Secondly, the tone of my post was to reflect that I believe that competition is not a bad thing. On one hand, I could be quite angry at the way UniStorm is being marketed – the blatant rip off of the name (which may be confusing to consumers), as well as the false statements (as per the above) about our own product. Conversely I chose to keep in the good spirit of healthy commercial competition. Even if I feel slighted by the way UniStorm is being marketed, I believe that a second strong product in the market is ultimately a good thing.

    Admittedly, I may have worded part of my post badly. The emergence of a new product is not the only reason for us to continue development. I apologise if my words sounded like that was the case.

    Perhaps most importantly, UniSky is NOT abandonware – we are using it in our own game project and have every intention of continuing work on it. The principle behind our tools on the Asset Store was to share our in house development tools with the community, some of these tools were free, whereas UniSky was something a bit more specialised and substantial, hence why we charge for it. The idea being that as we add new functionality to our in-house version, we add functionality to the commercial version.

    We have been honest – and perhaps too much so – on the reasons UniSky hasn't seen an update for a while. I would certainly like to see future updates – in fact we NEED to create some of this functionality for our own needs anyway.

    As it stands, we are slammed with work and have very little in the way of resources or free time. I do not for one minute expect you or any other UniSky user to accept this as an excuse of any kind, but both Chris and myself are working fairly insane hours at the moment. UniSky updates ARE on our agenda, we're just struggling to find the time to get to them.

    So to sum up, I apologise for promised updates that have not yet been released – snow, mobile version and such. On the other hand, I would ask you to look at this from the initial proposition that we are in fact selling a base product at an initial pricepoint and adding features for free as we create them. This is what we promised, and while I regret that some features have not eventuated as quickly as I would have hoped, i don't believe it's something we have reneged on.

    Regards,

    Sándor.
     
  39. Eric5h5

    Eric5h5

    Volunteer Moderator Moderator

    Joined:
    Jul 19, 2006
    Posts:
    32,401
    Calling things Uni* is not a rip-off of your name. I have a utility called UniFileBrowser, I wrote an Asteroids clone called Unitroids, and in fact I had a thunder/lightning/rain utility partially completed quite a while before UniSky existed called UniStorm. (Maybe should have finished that one. ;) Ah well, so it goes....)

    --Eric
     
  40. SixTimesNothing

    SixTimesNothing

    Joined:
    Dec 26, 2007
    Posts:
    167
    The point was that the similarity may cause confusion for consumers, hence why this practice is generally avoided in marketing (think Panasonic/Palsonic).

    Obviously it's Unity Technologies who 'own' the Uni- prefix more than anyone else. Given the similar feature set of the existing product in market, it simply would have been better had they chosen a name that was clearly different.
     
  41. jc_lvngstn

    jc_lvngstn

    Joined:
    Jul 19, 2006
    Posts:
    1,508
    I understand if you are extremely busy, this happens. But It's a slap in the face to your customers who paid, who need support for your product which is still being sold (at a beefy price), to see your posts on the Unistorm forum but no answers here.

    There should be a mandatory "Supported Status" indicator on all assets in the store. I guess reviews can indicate this, though.

    I do hope you continue work on it, I think it had a great start. But I -have- to put my support behind a product that is still being supported now, regardless of your intentions.

    And speaking just for myself...I have confused Unisky with Unistorm...but I don't know that it really mattered, the confusion was brief. It wasn't like it resulted in the purchase of 100 licenses of Unisky instead of Unistorm, or vice versa. I think that's a very small point to focus on compared to Unisky support.
     
  42. SixTimesNothing

    SixTimesNothing

    Joined:
    Dec 26, 2007
    Posts:
    167
    It bothers me that you feel that way. That you feel it is 'a slap in the face' seems to be quite extreme. The post on the other thread was to dispel myths that the poster of that thread was writing about our product. It was fairly clear that he was attempting to falsely discredit us to drive more of his own sales. This kind of behaviour shouldn't be tolerated – I believe that commercial interests aside, there has always been a community aspect to Unity users, and in my mind that comes first. That was why I made the comment regarding friendly competition, though in retrospect I can see how that was a mistake.

    I think it's absolutely fair to level criticisms at us for not getting the snow feature out, or perhaps UniSky on mobile. But as it stands, we're still selling a completely usable, fully functional system which has already had 2 big features (rain and the API) thrown in for free since the initial release. $100 is not a beefy price. That would get you a technical artist for half a day, if even that. We're aware of a few issues such as a lack of support for HDR in deferred rendering mode, but those aren't show stoppers and you can rest assured that we'll come up with a solution for that.

    Even so, you're probably right that we should keen more of an eye on this thread. I'll be sure to pass that on to Chris, as well as check back more frequently myself. We do have a support system and I do endeavour to answer any questions regarding the product that are within my field of expertise – the others go to Chris.

    Lastly, the other features aren't cancelled. We didn't release for mobile because even with significant optimisations, it just wasn't fast enough for us to release it and expect people to pay for it. Snow will happen and we will continue to pursue a satisfactory mobile version. I just can't put a date on either of those right now.

    Lastly just a benchmark for UniSky in our own game:

    We're using UniSky with a 2 camera setup with culling masks with HDR on for both cameras and in forward rendering mode. The sky camera only draws the skydome, the main camera has a culling plane at 1000 units and draws all other scene objects plus UniSky effects such as rain. We haven't implemented occlusion culling or mesh batching yet, so our draw calls and poly count are stupidly high (over half a million polys). Even so, we still get a solid 60+ fps at full HD (1920 x 1080) on a 2 year old iMac.
     
  43. jc_lvngstn

    jc_lvngstn

    Joined:
    Jul 19, 2006
    Posts:
    1,508
    Ok, 'slap in the face' was a little extreme, my apologies.
    Regardless, I look forward to any improvements or further effort on UniSky.
     
  44. Chris Morris

    Chris Morris

    Joined:
    Dec 19, 2009
    Posts:
    259
    Hey guys - I will be working on a new update this week that includes snow and fixes to any recent bugs introduced with Unity's latest version.

    Keep an eye out for the new release. I understand it is overdue, and I apologize for that, but UniSky isn't abandoned. Just been hard to find time to do a proper update with new features.

    Thanks for understanding guys.
     
  45. Don Goddard

    Don Goddard

    Joined:
    Sep 25, 2010
    Posts:
    21
    I just downloaded the latest version (1.2.6) and I'm using it on a Mac with Unity version 3.5.0f5, here are my problems:

    Time does not wrap around from 24 to 0 so advancing time gets stuck at midnight. I tried using a 'mod 24' and setting the time to that value but it has no effect.

    Audio triggers immediately after hitting play (does a Play on Awake). A previous poster showed how to fix this but his method does not work on the Mac. There is no 'Play on Awake' option in any of the audio prefabs, only when instanced into the hierarchy. Yes, I stupidly tried putting the audio in the hierarchy and turning off Play on Awake and, as expected, it still plays the sound on awake.
     
  46. Deleted User

    Deleted User

    Guest

    Is this update had been set up already :) ? Its been 3 weeks and i don't see any new features, at all and i really want this project to work with the new promes updates its great work and it will be a shame to just abandoned.
     
  47. keyboardcowboy

    keyboardcowboy

    Joined:
    Feb 8, 2012
    Posts:
    75
    Anyone here have any ideas why the sky looks like this when it rains?



    Uploaded with ImageShack.us
     
  48. staincorb

    staincorb

    Joined:
    Mar 30, 2009
    Posts:
    123
    Hi um I have the new update of uniSky and have finally time to work on my project ... ...

    I HAve a problem that I cant seam to change the time in uniSky seams to be always the same time and even If I change the speed of day time it all seams to not change at all, I didint have this problem with previews version, so what em I doing wrong ??
     
  49. jfmmm

    jfmmm

    Joined:
    Jun 18, 2012
    Posts:
    7
    i'm not sure why but in 1.2.6 after a fresh install in the demo scene the moon appear in front of the cloud!?

    you have any idea why?

     
  50. Deleted User

    Deleted User

    Guest

    I don't understand whats going on here anymore :/ i been on the blog of Sixtimesnothing and nothing was written there for a YEAR. Plus here developer finally speaks to us and gives us information about update that suppose to come in a week well almost 2 months ago.
    Now Unisky haves a lot of bugs, and i feel like its highly left behind. If nothing will change to it than sorry but i will feel like i lost my money on this. :/
    Pity because its amazing work with huge potential.
     
    Last edited by a moderator: Jun 24, 2012