Image sequences and UV animation


#1

Hi,

With the new particule system in the work, I was thinking that it would be great that Banshee could define “image sequences” that we could use the same as a single image for a texture or other purpose (GUI, 2D Image, particle billboard):

Feature 1: Image sequences

  • Could define the sequence, define the start and end (from named files), but could override and set the start and end by changing the numbers of the start and end frames…
  • Set the sequence to repeats, ping-pong, loop, and define the FPS
  • Set as auto-start
    Theses parameters could also be changed from scripting.

This could allow for stuff, like:

  • Create explosions on Billboard from animated footage
  • Create river textures (like rapids, or falls). by having a image sequence of water running in loop.
  • Lava textures with motion
  • Character faces changing (cartoon style), from script, or auto start in a cutscene.

Feature 2: UV animation
Being able to create an animation of the UV coordinate parameter (Animation window?), could allow textures to move on the model and allow for example a river texture to follow a specific direction, and give a sense of motion. This could be done in a UI way by using the animation windows (could set the animation to repeat, stop) and in a parametric way by scripting.


#2

I agree, all those systems should use a unified image sequence format. I will probably be extending the existing SpriteTexture class so it supports sequences of images. It’s already used by the GUI system so the entirety of the GUI should get support for sequences pretty easily.

I was planning on having all images in a sequence be a part of a single texture (i.e. in a grid), so you would just specify an UV for the first image, size of individual image in the sequence, and the total number of images to use. You wouldn’t be able to specify separate named images in the sequence. If there is a good use case for this situation let me know, and I will consider it. Generally most engines seem to do fine with the first approach approach (plus its more performant).

Regarding UV animation: I have recently exposed UV offset and size parameters to the default materials. They should be animable, but I haven’t tested using them for that purpose yet, so there might be issues (along with existing issues with the animation window in Banshee). But I don’t believe this is an ideal approach as it requires a lot of extra work from the user to animate the UVs manually. I haven’t thought it through yet but perhaps allowing the user to assign a SpriteTexture to the Material would be a good approach.


#3

Wow! Thanks!

Regarding the single texture, with all the images, wouldn’t it take a lot of video memory? With that method, I can still a way to playback a range, so that’s good.

Also good for the UV exposed, as it would allow to move, rotate and scale the UV of a object, I see lot of potential for FX on big objects with tiled textures like rivers (water, lava) (https://www.youtube.com/watch?v=U5hZsJk0G_4). Cartoon tornado (https://fr.wikipedia.org/wiki/Tornade#/media/File:F5_tornado_Elie_Manitoba_2007.jpg)


#4

It’s also great for moving pupils on character eyes.