Page 1 of 2

Animated virtual textures

Posted: 21.01.2008, 22:09
by Toti
As an experiment, I implemented animated virtual textures for Celestia (in fact, this also works with "common" textures).

Here's a short video in (.ogg, ~12 MB, ~1.5 min length) showing full seasonal coverage for the whole Earth.

http://www.sendspace.com/file/d89kep

Some possible uses:
*Depiction of seasonal surface changes
*Geological phenomena (e.g. Io)
*More realistic cloud dynamics (also, Jupiter)
*Historical evolution of planetary cartography (knowledge masks), night lights, etc.
*Dynamics in overlay images (e.g. variations is chlorophyll or ozone levels, etc.)

Posted: 21.01.2008, 22:18
by Cham
Toti,

this is very nice ! I'm curious to know how you made this.

EDIT : Actually, this is absolutly extraordinary ! 8O I now see many possibilities with this ! Is there a chance it could be added to 1.5.0 ? Or is this for 1.5.1 ?? Can't wait to try out this feature.

How is the time frame working ? Is it cyclic (periodic) ? Or just defined between two dates ? We also need it to be periodic without boundaries.

Posted: 21.01.2008, 22:31
by cartrite
Toti,
This is really cool!! :D . This done by code? Lua?
8O 8O
cartrite

Posted: 21.01.2008, 22:49
by chris
That looks very nice Toti. What does the ssc file look like?

--Chris

Posted: 21.01.2008, 22:58
by Toti
This is coded within Celestia's core (C++). Most of the work is done by OpenGL using hardware acceleration.
Here's how an animated texture is declared, just expanding the usual texture definition:

Code: Select all

Modify "Earth" "Sol"
{
    # An animated albedo map spanning one year,
    # showing Earth's surface changes across seasons:
    Texture {
              Interpolate true
              Cycle       true
              Beginning   2446482.0
              Frames      ["seasons/january.*"
                           "seasons/february.*"
                           "seasons/march.*"
                           "seasons/april.*"
                           "seasons/may.*"
                           "seasons/june.*"
                           "seasons/july.*"
                           "seasons/august.*"
                           "seasons/september.*"
                           "seasons/october.*"
                           "seasons/november.*"
                           "seasons/december.*"]
              Durations    [31 28 31 30 31 30 31 31 29 31 30 29]
    }
}


This is highly experimental for now. There is plenty of work yet to be done, so I don't have any release date estimate.

Posted: 21.01.2008, 23:02
by Cham
Toti,

this work is extraordinary ! I love the way the SSC definitions are declared : they are simple and perfectly clear.

What else do you need to work on, before releasing that awesome code ? Looks like finished ! Optimisation ?

Posted: 21.01.2008, 23:08
by chris
Cham wrote:Toti,

this work is extraordinary ! I love the way the SSC definitions are declared : they are simple and perfectly clear.

What else do you need to work on, before releasing that awesome code ? Looks like finished ! Optimisation ?


For one thing, I'm guessing that the interpolation doesn't work in the OpenGL 2.0 path yet. Second, there needs to be a discussion about the expression within an SSC file: should it work for any texture, do frames in an animation have to be of identical size, etc. This is a great feature, but not one for 1.5.0.

--Chris

Posted: 21.01.2008, 23:15
by Cham
1- Is this technique working under any rendering path ?

2- Is it working on an asteroid or comet model too ?

3- Apparently, from the SSC example, it is periodic without any time boundary ?

4- Can it be applied on a billboard too ? (I guess not).

Posted: 21.01.2008, 23:40
by ajtribick
Oh, the possibilities of interesting add-ons based on eccentric planets... would be good to be able to even approximate something like these.

One concern I see with the format is that the durations should perhaps either be fractions of the orbital period, or in the same units as orbital period, but messingn around with that is presumably a low priority right now...

Posted: 22.01.2008, 06:49
by MKruer
Awesome. I would love to see Jupiter done like this.

Posted: 22.01.2008, 07:58
by tech2000
Very cool, melike it alot...

Posted: 22.01.2008, 16:26
by Toti
chris wrote:This is a great feature, but not one for 1.5.0.

I agree.

Posted: 23.01.2008, 08:12
by ElChristou
Excellent!!

Posted: 23.01.2008, 11:30
by buggs_moran
Fantastic. An old wish potentially realized http://celestiaproject.net/forum/viewtopic.php?t=8712

I see the word "cycle" in there Toti! I could realize the gas stream in my binary systems with this. Can't wait to play.

Posted: 23.01.2008, 23:12
by bdm
The cycle length needs a clearer method of being defined. At present, the cycle length is not defined directly, but must instead be found by adding up all the numbers. Also, the frame definition is separated from the duration of each frame. Both of these make maintenance more difficult. If the length of the cycle has to be changed, the user must modify the values separately, check them with a calculator, etc. This is time-consuming and error-prone.

I would suggest that the definition be as follows:

Code: Select all

Texture
{
              Interpolate true
              Cycle       true
              Beginning   2446482.0
              Duration     365.24219
              Frames      ["seasons/january.*" 1
                           "seasons/february.*" 1
                           "seasons/march.*" 1
                           "seasons/april.*" 1
                           "seasons/may.*" 1
                           "seasons/june.*" 1
                           "seasons/july.*" 1
                           "seasons/august.*" 1
                           "seasons/september.*" 1
                           "seasons/october.*" 1
                           "seasons/november.*" 1
                           "seasons/december.*" 1]
    }

Here, the length of each frame is encoded with the frame filename, and the length is given as a proportion of the whole. The cycle length is defined separately which makes it easier to see and to modify the length of a cycle as a whole.

Posted: 23.01.2008, 23:21
by chris
ajtribick wrote:Oh, the possibilities of interesting add-ons based on eccentric planets... would be good to be able to even approximate something like these.

One concern I see with the format is that the durations should perhaps either be fractions of the orbital period, or in the same units as orbital period, but messingn around with that is presumably a low priority right now...


This would be great. When I saw this post, the exoplanet atmosphere simulations from oklo.org were my first thought too.

--Chris

Re: Animated virtual textures

Posted: 01.08.2008, 11:00
by happywoman50
by Toti
Here's a short video in (.ogg, ~12 MB, ~1.5 min length) showing full seasonal coverage for the whole Earth.

www sendspace.com/file/d89kep.

This link doesn’t work. I receive the following message “Sorry, the file you requested is not available.”

Re: Animated virtual textures

Posted: 01.08.2008, 15:04
by Hungry4info
happywoman50 wrote:This link doesn’t work. I receive the following message “Sorry, the file you requested is not available.”

I get the same thing o_O

Re: Animated virtual textures

Posted: 29.08.2008, 18:07
by conj
same. i want to see the animation... :(

Re: Animated virtual textures

Posted: 05.12.2008, 11:52
by cartrite
This may be premature but I found this to be interesting for possible 1.7 developement. I also posted these links at CM but the thread never got a reply.
I've been using some software called hdflook to process MODIS images. I've been in contact with the authors of this software and Louis Gonzalez expressed some interest in collaborating with Celestia in doing some possible animations. They have data in 8 day intervals from 2006 that is very similar to the BMNG series.
http://loafds.univ-lille1.fr/cgi-bin/Fo ... i?langue=1
Here is an animation he did from South America showing some land being cleared.
http://loaamma.univ-lille1.fr/Movies/LOUIS/Fh12v11.html
If this data can be made available in full global data sets, it would make for much smoother animation than the monthly BMNG texture data. It is in 8 day intervals instead of 30 day.
cartrite