A friend of mine has closed the loop between maya and his system for doing IK track compensation moves. Ideal for multi-scale moves. Having looked into this myself years ago I know that this is non-trivial. Impressive work Gerald Thompson!
Demo showing creation of animated camera in Maya with export to Mantis Motion Control from Gerald Thompson on Vimeo.
Sunday, February 2, 2014
Saturday, July 14, 2012
PT785-S Pan and Tilt System + Arduino
You can find the product here:
servocity.com/html/pt785-s_pan___tilt_system.html
Thursday, August 18, 2011
My First Animation Editor (With Bezier Curves)
I've been working on this on and off for a while now. Ever since I got Maya talking with the Arduino. I thought to myself, "wouldn't it be nice if there was a free app that wasn't bloated and designed just for animating parameters?" Well, I just hit my first milestone for this goal. Eventually I would like to add multi-segment Bezier Curves. Then I would like to have multiple channels of animation. It's all written in Processing so serial communication with the Arduino should be simple. The trickiest thing to get working was the lookup of the Y value on the curve based on where the Time Slider is.
Many thanks to Ben Paschke for finding the function I needed in the Blender Source Code and helping me port it to Processing.
There is another Processing Tool out there called Timeline but it's heading in a different direction than I am and I wasn't a fan of it's mixed languages and non-realtime Y lookup function. Plus, I thought this would be a good challenge to set for myself considering the industry I am working in :)
Hotkeys:
Spacebar = Play/Pause
J = Play Forward
K = Play Backward
L = Pause
Left Arrow = Step Backward 1 Frame
Right Arrow = Step Forward 1 Frame
Click and Drag to Position the Handles or Timeslider
Friday, July 15, 2011
Genuflex Virtual Axis Formula

http://www.general-lift.com/GLMoCo/Products/Genuflex_Mk3/Prod_mk3_p1.html
Notice how the length of the Hypotenuse(c) stays fixed on the triangle no matter where you move the rig.
Please Note that this only demos the Z,Y axis an not the X,Z axis. But the principle is the same for X,Z and gives full 3D positional control of the rig as long as the boom (Hypotenuse) is long enough to accommodate the max distance of where you want to place the camera(mouse in this case).
Tuesday, December 21, 2010
My First Bezier Curve
Thursday, October 7, 2010
The Lindy Dolly + Kflop + BFG
Gerald Thompson continues to show us how it's done with his new light weight lindy rig. Driven by his modified kflop board and his own animation software. It may not look all that different to the timelapse dollys out there. But I can assure you it's a big step up from a timelapse rig to a true realtime repeatable system. Can't wait to build one of these myself!
Saturday, August 21, 2010
BFG + GAMEPAD
Saturday, August 14, 2010
Two Motors Are Better Than One
Progress has been slow lately. I've been very busy at work. But I managed to make some time to solder together a proto-board with two easydrivers on it for testing. Here's a quick video showing them in use. I have a more heavy duty Leadshine Stepper Driver and a bigger motor to test for high speed applications. But I need to save up for a suitable power supply first.
Saturday, July 17, 2010
KFLOP + BFG SOFTWARE
A new toy arrived this week. It's a modified KFLOP motion control board. Gerald Thompson is a Motion Control Operator who has set out to create his own software for the board with all of the features (and more!) he has come to expect over the years from using industry tools such as Kuper and the like.
I am very interested in his ventures. Coming from the post production side of the film industry, I have always been interested in repeatable motion control photography for use in visual effects. For the last couple of years I have been tinkering with the Arduino as an introduction to electronics and it has taught me a lot. But I have decided that a full featured dedicated motion control board is the way to go (for me) if I am ever going to make some images before I grow tired of the pursuit.
Gerald has shown me a relatively affordable way to do this. I am hoping to be able to consolidate some of the ideas previously mentioned on this blog for use with the KFLOP.
Saturday, May 22, 2010
EasyDriver 4.2 Tutorial
Finally I had some time to do a tutorial on the Easydriver v4.2 board. The following example code is just for demonstrating the board's new functionality. It is was tested on a sparkfun stepper motor. You will notice in the code that each time the step mode changes, so to does the delay time between steps and the number of steps per revolution. The is not absolutely necessary but it helps you compare the differences between stepping modes.
Make sure you have the serial monitor open in the Arduino IDE when running this code. This will give you some feedback about the various modes of the board as they switch on an off.
Note: For real world use I would recommend hard-wiring the MS1 and MS2 pins to some switches to pull them high or low. This way you can free up some more pins on your Arduino.
For a tutorial on how to use the Easydriver v3.1 check out this post
QUESTIONS ARE WELCOME (but please keep it related to the example in this post )
/////////////////////////////////////////////////////////// // Stepper Motor skecth for use with the EasyDriver v4.2 // /////////////////////////////////////////////////////////// // Dan Thompson 2010 // // Use this code at your own risk. // // For all the product details visit http://www.schmalzhaus.com/EasyDriver/ // For the full tutorial visit http://danthompsonsblog.blogspot.com/ ////// ED_v4 Step Mode Chart ////// // // // MS1 MS2 Resolution // // L L Full step (2 phase) // // H L Half step // // L H Quarter step // // H H Eighth step // // // //////////////////////////////////// int DIR = 3; // PIN 3 = DIR int STEP = 2; // PIN 2 = STEP int MS1 = 13; // PIN 13 = MS int MS2 = 9; // PIN 9 = MS2 int SLEEP = 12; // PIN 12 = SLP void setup() { Serial.begin(9600); // open the serial connection at 9600bps pinMode(DIR, OUTPUT); // set pin 3 to output pinMode(STEP, OUTPUT); // set pin 2 to output pinMode(MS1, OUTPUT); // set pin 13 to output pinMode(MS2, OUTPUT); // set pin 9 to output pinMode(SLEEP, OUTPUT); // set pin 12 to output } void loop() { int modeType = 1; // This number increases by multiple of 2 each through the while loop.. // ..to identify our step mode type. while (modeType<=8){ // loops the following block of code 4 times before repeating . digitalWrite(DIR, LOW); // Set the direction change LOW to HIGH to go in opposite direction digitalWrite(MS1, MS1_MODE(modeType)); // Set state of MS1 based on the returned value from the MS1_MODE() switch statement. digitalWrite(MS2, MS2_MODE(modeType)); // Set state of MS2 based on the returned value from the MS2_MODE() switch statement. digitalWrite(SLEEP, HIGH); // Set the Sleep mode to AWAKE. int i = 0; // Set the counter variable. while(i<(modeType*200)) // Iterate for 200, then 400, then 800, then 1600 steps. // Then reset to 200 and start again. { digitalWrite(STEP, LOW); // This LOW to HIGH change is what creates the.. digitalWrite(STEP, HIGH); // .."Rising Edge" so the easydriver knows to when to step. delayMicroseconds(1600/modeType); // This delay time determines the speed of the stepper motor. // Delay shortens from 1600 to 800 to 400 to 200 then resets i++; } modeType = modeType * 2; // Multiply the current modeType value by 2 and make the result the new value for modeType. // This will make the modeType variable count 1,2,4,8 each time we pass though the while loop. delay(500); } digitalWrite(SLEEP, LOW); // switch off the power to stepper Serial.print("SLEEPING.."); delay(1000); Serial.print("z"); delay(1000); Serial.print("z"); delay(1000); Serial.print("z"); delay(1000); Serial.println(""); digitalWrite(SLEEP, HIGH); Serial.println("AWAKE!!!"); // Switch on the power to stepper delay(1000); } int MS1_MODE(int MS1_StepMode){ // A function that returns a High or Low state number for MS1 pin switch(MS1_StepMode){ // Switch statement for changing the MS1 pin state // Different input states allowed are 1,2,4 or 8 case 1: MS1_StepMode = 0; Serial.println("Step Mode is Full..."); break; case 2: MS1_StepMode = 1; Serial.println("Step Mode is Half..."); break; case 4: MS1_StepMode = 0; Serial.println("Step Mode is Quarter..."); break; case 8: MS1_StepMode = 1; Serial.println("Step Mode is Eighth..."); break; } return MS1_StepMode; } int MS2_MODE(int MS2_StepMode){ // A function that returns a High or Low state number for MS2 pin switch(MS2_StepMode){ // Switch statement for changing the MS2 pin state // Different input states allowed are 1,2,4 or 8 case 1: MS2_StepMode = 0; break; case 2: MS2_StepMode = 0; break; case 4: MS2_StepMode = 1; break; case 8: MS2_StepMode = 1; break; } return MS2_StepMode; }
Friday, January 29, 2010
My First Animation Editor?
I made a curve editor thingy! Well, not really a curve. It only does Linear Interpolation. It's a start. ;)
Press the hotkeys 1 or 2 and move the mouse to change the keyframes. If it doesn't work first time, try clicking in the frame first.
Edit: Check out the latest progress with this curve editor here!
Friday, January 22, 2010
Tuesday, December 29, 2009
open moco touchscreen interface v002_001
Just another Iteration. This one has button images! Find out more in the Original Post
Tuesday, December 22, 2009
Open Moco Touchscreen Interface
I have started contributing to the OpenMoco project. It's basically a well thought out motion control engine and intervalometer that people can use to build their own motion control contraptions.
The first GUI is going to be based on the Touchshield Slide by liquidware. This is a very exciting time for us DIY moco enthusiasts.
The applet you see above is purely to test functionallity. There are already several people designing the look of GUI and I gotta say I like what I've seen so far. I will slowly add flashy buttons and sliders as the are discussed and agreed upon. If you want to contribute to the project I suggest you head on over to open moco forums and make yourself known!
You can check out the next iteration of the GUI here.
Friday, October 16, 2009
Servo Tools For Maya Release v1.0.1
I have finally taken the plunge and released Servo Tools For Maya to the world!
Servo Tools For Maya is a Python Plugin that sends rotational values over USB the the Arduino Micro Controller. These values are then converted in to Pulse Width Modulation which is used to control multiple Hobby RC Servo Motors.
Applications for the plugin are only limited to your imagination. Some popular examples could be to drive complex animatronic puppetry or kinetic sculpture art installations.
Current Features Include:
- Control up to 4 Servos simultaneously. (see tutorials on how to add support for more)
- High Level GUI for building servoWrite node network.
- Ability to calibrate you servo's range and limits directly from Maya.
- Serial Connection over USB cable to hardware
Hardware Requirements:
- USB Cable
- Arduino Micro Controller
- At least 1 RC hobby servo
Software Requirements:
- The Scripts and Plugin available from this page
- Python (separate from the one that comes with Maya 8.5+)
- PySerial Python Module for Serial Communication
- Maya 8.5 or Higher (32-bit only)
- Latest Arduino Software
PLEASE NOTE:
I'm still prepping the Documentation in Video Form. So unless you are familiar with all of the above concepts, I would wait for the videos before you dive in. They should be ready in a week or two when I get back from holiday.
Sunday, August 30, 2009
Propeller Platform Module
This looks awesome. Exactly the kind of thing I'm after. I love it's modular design.
Check out gadgetgangster.com for more info.
Saturday, August 22, 2009
Tuesday, August 18, 2009
Servo City PT-2100 Pan Tilt Head
A friend of mine recently brought this product to my attention. It looks to be acceptional value for money at an introductory price of $999.99(I'm assuming it's USD) . We are both curious about the timelapse and repeatable motion capabilities on this unit. From what I can tell, it's just a remote control speed and direction pan tilt head.
I'm wondering if anyone reading this has bought one or knows any more. If nothing else I imagine you could modify it with your own stepper or servo motors based on your moco requirements. This is the best value for money unit I have seen so far. As always, your comments are welcome.
Check out this link for more details on the PT-2100
Saturday, August 8, 2009
Open Moco Intervalometer Tutorial
Shutterdrone has done it again with another great tutorial. If you are into DIY timelapse photography then you can't go past this one. It's part of a fast growing body of knowledge on the open moco website. What is open moco? It's not to be confused with open moko(open source mobile phone platform). Openmoco.org is a website dedicated to DIY motion control.
This tutorial is not only an introduction to Inervalometers, but also a step by step guide on how to build your own with a few simple components.
For the full tutorial and more moco goodness visit the openmoco.org.
Monday, June 29, 2009
DIY Moco Update
So it's been several weeks since I posted any real progress on the DIY Moco front. So here is a bit of an update.
If I was just reading the move data from a file, all of this would be much easier. But I am really interested in the interactive position control for all six stepper motors at the same time. This is why I'm seriously considering the propeller for this for this project.
At my real place of work I have be learning pftrack. It's a piece of software used for extracting a moving 3D camera from 2D footage. It's not the funnest job I've had to do, but iteresting none the less.
I've also been learning Perl and Processing. Why Perl you ask? The current interface for the openMoco timelapse engine is written in Perl. So if I am to speak to it, I need to know it's language (well, a little :) Why Processing? It's visual! and it plays nice with Arduino and I am in the early stages of writing a generic animation editor. Like the ones you see in most animation packages, only much simpler.
Tomorrow night I am doing a talk for the Australian Video Producers Association. I'm tag teaming it with a friend of mine who is a professional timelapse photographer. Check out his work! I think it's beautiful.