Bake Sound to F-Curves para criar animação a partir de som

Versão
>= 2.75
Renderizador
Todos

O Bake Sound to F-Curves permite converter um ficheiro de som numa F-Curve, numa curva do Graph Editor. Imagine um cubo que muda de cor ou aumenta de dimensão de acordo com a Wave de um som.

A primeira tarefa é especificar a influência da F-Curve. Vai utilizar a F-Curve para definir o quê? Por exemplo, se pretende que o som sirva para mudar o material de um objeto: atribua um material ao objeto e insira uma keyframe no material. Se pretender utilizar o som para alterar a dimensão do objeto, insira uma keyframe no Scaling.

A segunda tarefa é inserir o som na curva pretendida. No janela Graph Editor, escolha a curva, aceda ao menu Key e escolha a opção Bake Sound to F-Curves. Depois é só escolher o ficheiro de som pretendido.

Atenção, o som só vai ser aplicado à curva selecionada. Se tiver escolhido a curva do Red (material RGB) ou do X Scale o seu objeto vai modificar apenas o valor de Red ou da escala no eixo X. Se pretende utilizar o som para influenciar mais curvas, pode repetir o processo ou seleciona previamente as várias curvas que pretende utilizar.

...

1. Vamos utilizar o cubo inicial e controlar o seu redimensionamento através do som

...

2. Selecione os 4 vértices da base do cubo. Pressione Shift+S para abrir menu Snap e escolha Cursor To Selected para o cursor 3D colocar-se no centro dos 4 vértices.

...

3. Em Object Mode, escolha agora a opção Origin To 3D Cursor para a origem do cubo ser colocada no centro da sua base. Deste modo, quando redimensionarmos o cubo em Z, este vai apenas aumentar numa direção.

...

4. Introduza uma keyframe de Scaling para criar um canal no Graph Editor.

...

5. No Graph Editor, escolha o canal de Scaling em Z. Nós apenas pretendemos que o cubo aumente a sua altura (estique) de acordo com o som. Depois, no menu Key, selecione a opção Bake Sound To F-Curves.

...

6. Navegue até ao ficheiro de som que pretende utilizar, selecione o ficheiro e pressione o botão Bake Sound To F-Curves.

...

7. A curva azul corresponde ao canal de Scaling em Z. As ondas correspondem à wavesound do ficheiro de som.

...

8. Para terminar, utilizamos dois arrays no cubo para criar uma visualização tipo equalizador :)

... ...

Originalmente, as curvas criadas deste modo não são editáveis. No entanto, é possível fazer unbake através de scripting. O script abaixo (disponível aqui) transforma a curva numa action, criando keyframes que podems ser depois manipuladas.

1. Selecione a curva em que pretende fazer unbake.

2. Abra uma nova janela do tipo Text Editor. Faça New para criar um novo bloco de texto.

3. Copie e cole o texto abaixo nessa janela.

#####################################
# unbake ¿? f-curve to a new action #
#####################################

import bpy
obj = bpy.context.object

for c in obj.animation_data.action.fcurves:
    if c.sampled_points and c.select:
        obj.animation_data.action = bpy.data.actions.new(name='Lot_of_Keys')
        fcu = obj.animation_data.action.fcurves.new(data_path=c.data_path, index=c.array_index)
        sam = c.sampled_points
        fcu.keyframe_points.add(len(sam))
        for i in range(len(sam)):
            w = fcu.keyframe_points[i]
            w.co = w.handle_left = w.handle_right = sam[i].co


4. No menu Text, escolha a opção Run Script. Ou então clique no botão direito do rato e escolha a mesma opção. Ou então utilize o atalho ALT+P.

5. A curva deverá ter sido substituída por uma linha de keyframes.