How Do You Animate Non-Procedural Textures?

Is there a way to maybe make an image in Photoshop or ImageReady
with the different frames of animation on each layer, then pop that
image onto a character for animation?

What I have in mind, for example, is different eye expressions/blinks
all on different layers, but I want to only have them change/animate
using IPO curves to tell it when to change.

Know what i mean?

This example is how I’m imagining it being done. If not this way, is
there another way to do the same type of thing? Would it have to
be a folder with an image sequence? Does it have to be in the
form of a video file?

Attachments


Could you just put them all in texture channels, and turn them off and on via keyframing the color mapping of the texture? I mean, you add each as a texture and map to a parented empty like a decal and have them all set as 0 color except for the main one, then key them up n color and out of color to show up in the material?

Just a thought, instead of having to animate them separately and try to line them up to dialog later.

Could we preview texture in realtime?

There may be some spiffy procedural way to do this, but if not, you could probably accomplish it with a script linked python script.

Do you know of any scripts for this? That would be awesome. I don’t know how to
write them myself.

I’ll look into this. Still sounds a little more involved than I want it to be, but
if it works, cool.

I know Maya has the ability to do this using a video clip or image sequence…
something like that. http://www.wondertouch.com/tutorials/aharon/PI_with_3D/PI_with_3D.html
but I’m hoping to find a way that Blender will do this too, where you key what frame of
the video/image sequence is being displayed as the current texture.

You can also load movies and image sequences as image textures. Each image has it’s own start frame and number of frames to run. Load an image then click ‘movie’ or ‘sequence’.

That’s music to my eyes!

I will try this. If I can get this to work it’s going to drastically change
how I animate things.

Sweet! Making progress. I at least got the image sequence to showup
and see it advance as I press the arrow keys to change frames.
The only problem I have now is I can’t find any options to key
those frame advances so they don’t play as the entire animation
is played. So that brings me back to my original idea.
How to do this:

/uploads/default/original/3X/b/6/b650c7e068da9974bda0453837d9041bc1249449.jpgd=1219886477

Not sure I understand you. If you load each image as a separate texture, wouldn’t each texture have it’s own start frame and duration ?

Here is a blend for you of a simple example - i loaded 3 of your textures in the material, and I keyed the ‘all mapping’ on the texture pane while turning up and down the Col value slider of each one while watching the preview pane. I set it to render something short out - this is a lot of keying for something simple, and I wonder if it would be possible to use a pydriver in the ipo window to drive the texture col from a bone position. I’ll see if I can figure it out, but I don’t really know if this is possible - I thought it would be like the blendernation post about the mancandy details that were driven textures in the hand.

http://blenderartists.org/forum/showthread.php?t=123088&highlight=pydriver

I’ll read this thread and se if I can get a working example…

Attachments

animated_tex.blend (297 KB)

I’m trying to get my head around how this is working.
I see that it changes when I move the playhead back
and forth, but I’m not understanding how this makes
it switch images.

This is similar to what I’m looking for, but a little limited.
Maybe what I’m looking for is not a feature in Blender yet.

Say I have an image sequence of an animation of difference
facial expressions. When I press Alt+A in Blender
to animated everything in the scene, I don’t want my image
sequence to be in sync with the timeline. I want it to be
completely independent and only advance through the
different images using one IPO curve vertically. So if
the IPO is at 0.0 for the first 30 frams of the animation it
will be the first picture in the image sequence. if I have
the curve slope up to .9, depending on have fast the
change is, it would animate the image sequence frames
from 0 to 9, etc. If you take a glance at the video tutorial
I posted above, it explains it exactly how I mean. Only
they’re making the image sequence loop by setting
the IPO Extend mode to cyclic so it keep cycling from
image 1 -30(or whatever number). But that curve
could be used to cycle through or stay on any single frame
of the image sequence at any given time until you want to
move to a anoher, or animate a certain part of the
sequence, blah blah blah…

That’s all I’m trying do. Blender can load up the image
sequence, but I just can’t find a curve to control make it
“scrub” through the sequence…unless that Color
value is just another name for this.

So, animating each individual images’ visibility for each
slot they are loaded into seems like a bit of overkill to me. I
mean it’s perfect for a small number of images, but that
method seems like 100 times more work, plus you can only
use the amount of pictures there are slots, while an image
sequence is next to unlimited and with total control using
only one curve.

If I’m not explaining it well enough check out that tutorial video.
They start demonstrating it half way through.

The problem is trying to control an unlimited sequence with one curve - I don’t see how this could work based on the idea of trying to record values to a curve and correspond to a sequence as if scrubbing back and forth in the sequencer.

I load a batch of images to the sequencer , and while I can scrub across to play them manually, I can only assign an ipo curve to the fac channel of the sequence that limits visibility of the channel strip, not the ability to position the view of the frame to playback.

If you were to assign a driver to each image in each channel, but make each cross to the position of a single armature, you might turn them on based on the rotation/location value of the armature. Then you might turn them off and on by keying a single bone instead of the overkill method of manually keying each channel col value slider.

edit: Actually after watching the video tutorial, I don’t think this is doing anything more han what we already have here in Blender. Loading an image sequence in Blender’s textures can be toggled cyclic in the texture pane, and that sequence will play starting on the specified frame and will use the numbers of frames indicated, but the cycle doesn’t show as an ipo curve that can be adjusted. Unless I am totally off, I think this tutorial only concerned cyclic replay of textures, not scrubbed or controlled replay.

If I understand the thread I was mentioning, it seems it might be possible to use the nodes somehow to turn on and off the sequence of images, but I doubt it would allow partial reordering of frames.

I am trying to help, but this is an area I am unfamiliar with. Perhaps someone with more experience with this topic will interject the best method or reveal the hidden feature for you.

Thanks for looking into it so much. You are helping. Even if we don’t
figure it out, this is at least making research happen and if it gets noticed
maybe someone will program a script or even make it an integrated feature.
(which would make me fall in love with Blender all over again.)

I didn’t mean using the sequencer and scrubbing through the time line.

I drew up a picture in Photoshop to better illustrate my my desire.

An image sequence is generally treated like it’s one video clip, but
each frame is stored as an individual image. If it were a video
clip instead of image sequence, replace “image” with “video clip frames”.

I want to know if Blender is capable of this at its current state.
If it were, then it would be the ultimate ultimate.

Attachments


Also, is there a section of the forum this could be moved to that is
more likely to get noticed by the programmers/developers?

You can also assign each image texture to a separate texture channel. Then, animate the color influence each has when you want that expression to show. Use the Material IPO and the little number next to it (the texture channel #). http://wiki.blender.org/index.php/Manual/Ipo_Types

OR, to be a little fancier, you could drive the texture influence with like a “dial” object and just animate the dial, pointing to the expression you want when you want it, using the RotZ as the key. see that wiki page for a walkthru on how as well.simple create a pointy triangle or arrow, and arrange text objects around it indicating the expression, and then just point the arrow to the text object. As the arrow turns, it drives the texture influence for the respective channel.

Very close to what I read on the other thread, but I still have to practice inserting the driver correctly and getting the ipo to actually do what I want.

Thanks Papa

Here’s a script link that does it (its not very robust right now, but it should work):


#!BPY

import Blender
from Blender import Ipo, Material

#####################
#
# Parameters
#
#####################

imagesPath = '/Users/username/whatever/imageChanger/'
imageType = '.png'

imageStart = 1
materialName = 'Material'
textureSlot = 0

ipoName = 'ImageIpo'


######################
#
# Script Execution
#
######################
frame = Blender.Get('curtime')

ipo = Ipo.Get(ipoName)
imIpo = ipo[Blender.Ipo.OB_LOCX]
imNum = int(imIpo[frame])

mat = Material.Get(materialName)
mtex = mat.getTextures()[textureSlot]
img = mtex.tex.getImage()
img.setFilename(imagesPath + str(imNum) + imageType)
img.reload()

Here’s an example of how to use it:
http://gamulabs.freepgs.com/blends/imageChanger.zip

In the example file:
You need to set the imagesPath variable to wherever you’ve extracted the images.

Also, the IPO used is the ob_locx, so the IPO is a fake user. You could change it so that it uses a parameter (like a softbody one) that you don’t use so that it’d be easier to edit/view updates without having the mesh move all over the place. If you want to do this, replace the Blender.Ipo.OB_LOCX with something like Blender.Ipo.OB_PERM or Blender.Ipo.OB_DAMPING.

(As a side note, you can get rid of the ‘Blender.’ and just use ‘Ipo.OB_SomeAttribute’, as well).

Also, the IPO uses whole numbers (1, 2, 3, 4, etc.), not .1, .2, .3, .4. That could be changed too, but this way seemed logical, too.

Thanks everybody for all the help.

I’m going to play around with it all and see what happens.

Check out the tutorial and script for replacement animation at the thread linked below. The script loads up all your images and you animate them by keying a switch (IPO curve).

http://blenderartists.org/forum/showthread.php?t=77196&highlight=replacement+animation
.