From BlenderWiki

Jump to: navigation, search
Note: This is an archived version of the Blender Developer Wiki. The current and active wiki is available on wiki.blender.org.

Introduction

An often overlooked feature of Blender in the IPO editor is the Record Mouse Movement feature (R) or under the Point menu. I have to admit that I only found out about this a few months ago, event though I've used Blender for quite a while.

With one or two ipo curves selected, the movement of the mouse on one axis is translated into delta change for the curve for that frame-step. Mouse movement axis is assigned to curves based on selections and the order that the curve(s) occur. You hold Ctrl to turn 'recording' on.

While thinking over what can be done to make it affect more curves/channels at a time, I came to think how it would be neat to be able to arbitarily connect input events to resulting keyframes/effects on targets.

The resulting concept I came up with resembled a basic version of what Weta Digital had developed for controlling the facial expressions of Gollum and also the faces of characters in the 'Jane and the Dragon' series they produced. Their system involved linking maya's shape keys to buttons on a game-controller, thus enabling the animator to quickly 'act out' the scene, and speed up the production process.

I cannot code this at the moment, as I am busy for the next little while, and also as this work is heavily dependant on any events/ghost refactor that is going to happen soon. So until then, this is just a doc for any interested persons to stare and slobber over :-)

Record Tool

Fate of Record Mouse Movement

Firstly, the existing Record Mouse Movement tool will need to be removed from the IPO editor. It doesn't really belong there anyway. Besides that, the new tool will be far superior to it, so it should be removed to make way for better tools.

The Successor

The Record Tool will probably get a home in the buttons window, probably as another sub-tab of the object buttons. The interface for this will be divided into two panels: one for the generic controls and settings for this tool; the other for all the mappings (in a style similar to constraints or modifiers, exanding to fit all entries as needed).

The strength of this tool lies in the fact that the user will be able to connect any event recognised by ghost to control any curve. There are a few exceptions to this, which will be covered later.

If game-controllers and even midi-keyboards become devices that are handled by ghost, then there is the possibility of using Blender without plugins, to do what Weta already does with their own maya plugin for quicker animation (useful in tv industry), or use by VJ's who create imagery in realtime to music.

General Settings and Modes of this Tool

Settings:

  • Performance Limits -> Start frame, End frame. These are independant to the start and end frames of the scene, so that you can have fade in-out times before and after scene animation.
  • Infinite Performance -> performance runs for an unspecified amount of time. Note that when actually recording, Blender's upper frame-limit or memory available may end up limiting this.
  • Keyframe sampling frequency -> how many frames should pass between each sample taken.
  • Rest time -> number of frames before/after each performance when no recording is done. Allows user to prepare.

Mappings: (events mapped to these things will not be available for mapping to other things)

  • Start event -> event which starts performance.
  • End event -> event which stops performance, either for indefinite performance or prematurely ending a limited performance.
  • Pause event -> event which pauses performance.

Modes:

  • Recording mode -> keyframes are made to mapped curves. Aimed more towards 'prepared' work.
  • Rehersal mode -> no keyframes are made. Aimed more towards 'realtime', vj-ing work.

Mappings

A source event is mapped to a target curve.

Source events fall into two catergories: Delta-Movement, and Active-Status.

  • Delta Movement -> applies to things like mouse co-ordinates, which can be divided into movement along x-axis, movement along y-axis in the given time space. Values are mapped in a custom way, such that a-movement along m-axis, results in b-movement along n-axis.
  • Active-Status -> applies to things like key-presses, mouse-clicks. When button is active/on/pressed, user-defined change is applied.

Target Curves are chosen in the following way:

  • IPO block where curve is found
  • IPO curve to map to



Aligorith