3D Design Packages
Blender (open source)
Unreal Technology (open source)
Autodesk Maya
Autodesk MotionBuilder
Autodesk 3ds Max
Unity
Poser 8
Open Source Motion Capture Players (.bvh data)
BvhViewer (Windows 2000/XP)
BVHPlay (Linux, Win32)
MocapViewer
BVHacker
Bioviewer (Linux, Win32)
.bvh import tools (in development)
MATLAB
Flash
Processing
OpenFrameworks
Max/MSP
PureData
Digital Media Multimedia Packages
EyesWeb
Isadora
MaxMSP
Pure Data
OGRE
Open GL
Valve Source
Virtools
VRML/X3D
3D Design Packages

Blender is the free open source 3D content creation suite, available for all major operating systems under the GNU General Public License. The MiPP team are working on developing a Python-based scripting solution to enable users a simple means of creating video files from their mocap data. Check back soon!

Unreal Technology is under the hood of the most visually intensive and exciting games, training simulations, 3D visualizations and digital films around. From entertainment software to architectural visualization to animated content, Unreal Engine provides the platform and tools needed to develop cutting-edge 3D projects.The Unreal Development Kit (UDK) is the free edition of Unreal Engine 3 that offers uncompromised access to the same award-winning toolset used by many of the world’s best game developers.

Autodesk® Maya® software offers artists an end-to-end creative workflow with comprehensive tools for 3D animation, modeling, simulation, visual effects, rendering, matchmoving, and compositing on a highly extensible production platform.

Autodesk® MotionBuilder® real-time 3D character animation software can make film and game animation pipelines more efficient. MotionBuilder also enables you to create more and higher quality animation. You can create, edit, and play back complex character animation in a highly responsive, interactive environment that is ideal for high-volume animation, virtual cinematography, pre-visualization, and performance animation.

Autodesk® 3ds Max® and Autodesk® 3ds Max® Design software provide powerful, integrated 3D modeling, animation, rendering, and compositing that enable artists and designers to more quickly ramp up for production. The two versions share core technology and features, but offer differentiated experiences and specialized toolsets for game developers, visual effects artists, and graphic designers on the one hand, and architects, designers, engineers, and visualization specialists on the other.

Unity is a great tool for video game development, architectural visualizations, and interactive media installations.

Poser 8 is a commerical package for creating art and animation using 3D characters.
Open Source Motion Capture Players (.bvh data)

BvhViewer (Windows 2000/XP)
BvhViewer provides an easy and straightforward user interface for viewing and editing motion of each human body joint at each frame. BvhViewer includes a rich set of features.
http://vipbase.net/bvhviewer/
With BvhViewer, you can
- Quickly navigate through the motion sequence and view human body joints from different viewpoints at each frame
- View exact joint rotation angles and 3D joint positions in text
- View local coordinate system of any joint
- Change joint rotation angles
- Save the animation as an image sequence
- Switch motion each joint as a text file
- Highlight a joint
- Change, save or restore to the saved viewpoint
- Switch to a posing camera
- Show/Hide joint names
- Show/Hide joints or bones
- Change size of joints or bones
- Show/Hide ground plane or axis of world coordinate system

BVHPlay
A free, lightweight, Python-based, multi-OS, open-source playback utility for BVH animation files.
Linux 64 bit
Python Source
Win 32 bit
http://sites.google.com/a/cgspeed.com/cgspeed/bvhplay

MocapViewer
This is a small application written using OpenGL and MFC.
http://sourceforge.net/projects/mocapviewer/

BVHacker
A personal project started in November 2006 in order to make a bvh file conversion tool for Second Life. Since then it has evolved into a quick loading tool ideally suited for the viewing, analysing, converting, fault finding and preparing of bvh files. bvhacker is not for creating animations from scratch. bvhacker is for working on existing animation data. bvhacker is an animation tool designed by animators for animators. bvhacker is used extensively by commercial enterprises, educational establishments and hobbyists. Use bvhacker to simplify your animation production pipeline!
http://davedub.co.uk/bvhacker/

Bioviewer: Linux/Windows Biovision BVH Viewer
A very basic player using SDL and OpenGL and taking advantage of C++’s standard library.
http://bioviewer.sourceforge.net/
.bvh import tools (in development)
We are also exporing and developing mocap tools for the following packages:
MATLAB Motion Capture Toolbox
http://www.cs.man.ac.uk/~neill/mocap/
The MATLAB motion capture toolbox allows loading and playing of BVH and acclaim files in MATLAB.
Max/MSP
FTM (Ircam)?
http://ftm.ircam.fr/index.php/About
FTM is a shared library for Max/MSP providing a small and simple real-time object system and a set of optimized services to be used within Max/MSP externals.
FTM = data structures
+ visualization/editors
+ file import/export (SDIF, MIDI, …)
+ operators (expressions and externals)
The basic idea of FTM is to extend the data types exchanged between the objects in a Max/MSP patch by complex data structures such as sequences, matrices, dictionaries, break point functions, tuples and whatever might seem helpful for the processing of music, sound and motion capture data.
(Schnell et al. 2005)
Jamoma (GDIF)
http://www.jamoma.org/
The Gesture Description Interchange Format (GDIF) is being developed as a tool for streaming and storing data of music-related movements, actions and gestures. Current general purpose formats developed within the motion capture industry and biomechanical community (e.g. C3D) focus mainly on describing low-level motion of body joints. Similarly, music industry formats (e.g. MIDI) are limited to specific hardware and/or playing techniques. GDIF aims at describing gesture qualities, performer-instrument relationships, and movement-sound relationships in a coherent and consistent way. A common format will simplify working with different software, platforms and devices, and allow for sharing data between institutions.
MCMMax
http://music.arts.uci.edu/dobrian/motioncapture/mcmmax.htm
Motion Capture Music (MCM) is software for mapping motion capture data from a Vicon 8 system into music control data such as MIDI.
PureData
[PD] motion capture for Gem G4
chris clepper cgc at humboldtblvd.com On Apr 9, 2004, at 11:44 AM, shreeswifty wrote:
i am wondering if anyone has explored motion capture for Gem yet.
What sort of motion capture do you have in mind? Basic color tracking
is available, but more sophisticated processing and support for
professional motion capture devices are not.
If you want to rig up some sensors to a MIDI, HID or serial device then
you might have a shot at a home brew capture setup.
> Patrick Pagano, B.S.,M.F.A Candidate
> Research And Development Assistant
> Digital Worlds Institute
> University Of Florida
N.B. Very little mocap found in PD community (??_)
Note: FTM Port (see MaxMSP above): ZMÖLNIG (2006)
Processing
Initial research: Processing Community Bulletin
http://www.tom-carden.co.uk/p5/morph_dancer_skeleton/applet/
Re: BVH
Reply #3 – Dec 4th, 2006, 7:00am
I have uploaded a MoD_Demo and Library onto http://groups.msn.com/MotionData
The demo is located at Documents > dist > MoD_Demo
The doc is located at Documents > javadoc > index.html
The library will be updated soon.
…
…
Re: BVH
Reply #10 – Apr 4th, 2010, 7:43am
Can I get the library as well. Couldn’t find it!!!
Thanks for help
http://processing.org/discourse/yabb2/YaBB.pl?board=os_libraries_tools;action=display;num=1164867108;start=7
BVH integration
Reply #2 – Nov 7th, 2007, 8:42pm
Maybe it’s just a newbie error, but here’s the error message I get when I try to load my bvh file with the moD_demo.pde provided by Xer (http://processing.org/discourse/yabb_beta/YaBB.cgi?board=os_libraries_tools;action=display;num=1164867108;start=7#7)
Here’s the source code of moD_Demo.pde:
Code:
import processing.opengl.*;
MotionData motion_data; // <==================== Add MoD library
int NumOfSegs;
int NumOfFrames;
int FrameRate;
static final int _W=1; // joint width
static final int _F=100; // joint scaler
static final int _NUM_FILES=1;
static final int _START_FILE=1;
double [][][]p0;
double [][][]p1;
boolean [][]isEP;
int f;
void setup()
{
String []filename=new String [_NUM_FILES];
int i;
// init frame number
f=0;
// set filenames list
//
// I'm not using this loop to load the bvh files.
//
/* for(i=0;i<_NUM_FILES;i++)
{
if((i+_START_FILE)<10)
filename[i]= "//bvh\\motion0"+(i+_START_FILE)+".bvh";
else
filename[i]= "C:\\bvh\\motion"+(i+_START_FILE)+".bvh";
System.out.println(filename[i]);
}*/
//
// Instead I put my url in the first position of the array. Is that what causes
// the error ? Doesn't seem so.
//
filename[0] = "azumi.bvh";
// startup a class
MotionData motion_data = new MotionData(filename);
// get info
NumOfSegs = motion_data.GetNumberOfSegments();
NumOfFrames = motion_data.GetNumberOfFrames();
FrameRate = motion_data.GetFrameRate();
System.out.println("Number of Segments ="+NumOfSegs);
System.out.println("Number of Frames ="+NumOfFrames);
System.out.println("Number of FrameRate ="+FrameRate);
// set frame rate
frameRate(FrameRate);
// setup joint data
p0 = new double [NumOfFrames][NumOfSegs][3];
p1 = new double [NumOfFrames][NumOfSegs][3];
isEP = new boolean [NumOfFrames][NumOfSegs];
for(f=0; f
// smooth out the motion
motion_data.FilterObject(p0,p1,NumOfSegs,NumOfFrames);
System.out.println("===========================");
size(1024, 768, OPENGL);
noStroke();
}
void draw()
{
double vx,vy,vz;
translate(width/2, height/2);
// color of joints
fill(0, 0, 0);
background(200);
// render the frame
if(f==NumOfFrames) f=0;
for(int i=0; i
beginShape(QUADS);
vx = _F*p0[f][i][0]; vy = _F*p0[f][i][1]-_W; vz = _F*p0[f][i][2];
vertex((float)vx,(float)-vy,(float)vz);
vx = _F*p0[f][i][0]; vy = _F*p0[f][i][1]+_W; vz = _F*p0[f][i][2];
vertex((float)vx,(float)-vy,(float)vz);
vx = _F*p1[f][i][0]; vy = _F*p1[f][i][1]+_W; vz = _F*p1[f][i][2];
vertex((float)vx,(float)-vy,(float)vz);
vx = _F*p1[f][i][0]; vy = _F*p1[f][i][1]-_W; vz = _F*p1[f][i][2];
vertex((float)vx,(float)-vy,(float)vz);
endShape();
beginShape(QUADS);
vx = _F*p0[f][i][0]-_W; vy = _F*p0[f][i][1]; vz = _F*p0[f][i][2];
vertex((float)vx,(float)-vy,(float)vz);
vx = _F*p0[f][i][0]+_W; vy = _F*p0[f][i][1]; vz = _F*p0[f][i][2];
vertex((float)vx,(float)-vy,(float)vz);
vx = _F*p1[f][i][0]+_W; vy = _F*p1[f][i][1]; vz = _F*p1[f][i][2];
vertex((float)vx,(float)-vy,(float)vz);
vx = _F*p1[f][i][0]-_W; vy = _F*p1[f][i][1]; vz = _F*p1[f][i][2];
vertex((float)vx,(float)-vy,(float)vz);
endShape();
}
// update the next frame number
f++;
}
…
…
…
BVH integration
Reply #3 - Nov 8th, 2007, 2:26am
mmm... i think the lib is not perfect on the bvh you provided, i was using the bvh from http://www.e-motek.com/entertainment/downloads/index.html
, and I have retried their bvh file; it still fine.
Ok, so looks useful.
Posting on forums for more recent work. FAULT WITH LOGIN/ REGISTER (resolved)
Alternate code: http://www.xs4all.nl/~elout/proce55ing/mocap05/motioncapture005.pde
(Accessed 27.10.10)
// elout de kok - http://www.xs4all.nl/~elout/
// compiled in p5 v.0065
// 25 nov 2003
//inspiration & original p5 coding by
//http://www.tom-carden.co.uk/
//motion capture data from
//http://www.accad.ohio-state.edu/mocap/mocap_data.htm
float[][] frames;
float[] boxesX;
float[] boxesY;
float[] boxesZ;
int currentFrame = 0;
int numPoints = 0;
int frameStep = 8;
int framestart=144;
int frameend=206;
int totalframes=framestart-frameend;
//------mouse & stuff
int mx,my,sx=140,sy=120, middenx,middeny;
float zangle;
int midx,midy;
float zpos;
//create an oop array
int particlemax=2000;
particle bob[] = new particle[particlemax];
void setup()
{
size(400,400);
String[] lines = loadStrings("Aug210106.txt");
if (lines.length > 0) {
String[] cols = splitStrings(lines[0],’\t’);
numPoints = (cols.length – 2) / 3;
frames = new float[lines.length][cols.length];
for (int i = 1; i < lines.length; i++) { // i = 1 will skip headers
frames[i] = splitFloats(lines[i],'\t');
}
}
boxesX = new float[numPoints];
boxesY = new float[numPoints];
boxesZ = new float[numPoints];
for (int i = 0; i < numPoints; i++)
{
boxesX[i] = 0.0f;
boxesY[i] = 0.0f;
boxesZ[i] = 0.0f;
}
noLights();
currentFrame=framestart;
midx=width/2;
midy=height/2;
for (int i=0;i
bob[i] = new particle();
}
}
void loop()
{
// set the position to the middle of your screen
translate(midx, midy, zpos);
//check mouse for rotation
mx=mouseX;
my=mouseY;
if ( mx > middenx){sx=0-((midx-mx)/2);}
else{sx=((mx-midx)/2);}
if ( my > middeny){sy=0-((midy-my)/2);}
else{sy=((my-midy)/2);}
zangle= zangle+(sx/5000.0f);
rotateX(0.6+(sy/40.0));
rotateY(0.6+(sx/40.0));
rotateZ(zangle);
background(80);
push();
scale(0.16f);
for (int i = 0; i < numPoints; i++)
{
push();
boxesX[i] += ((frames[currentFrame][3*i+2] + 200.0f - (30.0f*(currentFrame-framestart))) -boxesX[i])/5.0f;
boxesY[i] += ((frames[currentFrame][3*i+3] + 1.0f - (24.0f*(currentFrame-framestart))) - boxesY[i])/5.0f;
boxesZ[i] += ((frames[currentFrame][3*i+4] - 900.0f) - boxesZ[i] )/5.0f;
translate(boxesX[i],boxesY[i],boxesZ[i]);
stroke(255,255,255);
fill(0,0,0,80);
box(180.0f);
pop();
}
currentFrame+=1;
if (currentFrame >= frameend) { currentFrame =framestart; }
for (int i=0;i
bob[i].calc();
}
pop();
}
class particle
{
//init a particle
int x,y,z,r,g,b,xspeed,yspeed,zspeed,live;
//init-start
particle()
{
xspeed=-(int)random(40);//-10;
yspeed=-(int)random(40);//-10;
zspeed=(int)random(10)-5;
live =(int)random(32);
}
//update a particle
void calc()
{
x=x+xspeed;
y=y+yspeed;
z=z+zspeed;
live--;
if(live<0)
{
int wit=(int)random(numPoints);
live=32;
x=(int)boxesX[wit];
y=(int)boxesY[wit];//(int)random(numPoints)];
z=(int)boxesZ[wit];//(int)random(numPoints)];//numPoints)];
}
push();
stroke(255-(live*8));
translate(x,y,z);
line(0,0,0,40,20,0);
pop();
}
}
Using above code with “Sue_3_bvh.txt’ in same dir – get the following error
processing.app.debug.RunnerException: The function splitStrings(String, char) does not exist.
at processing.app.Sketch.placeException(Sketch.java:1543)
at processing.app.debug.Compiler.compile(Compiler.java:149)
at processing.app.Sketch.build(Sketch.java:1573)
at processing.app.Sketch.build(Sketch.java:1553)
at processing.app.Editor$DefaultRunHandler.run(Editor.java:1485)
at java.lang.Thread.run(Thread.java:637)
OpenFrameworks
Open Asset Import Library
http://www.openframeworks.cc/forum/viewtopic.php?f=10&t=2166
Supports:
MOTION CAPTURE
Biovision BVH ( *.bvh ),CharacterStudio Motion ( *.csm )
OTHER FILE FORMATS (OTHERS TOO)
Collada ( *.dae ),,3D Studio Max 3DS ( *.3ds ),,3D Studio Max ASE ( *.ase ),,Wavefront Object ( *.obj ),,Stanford Polygon Library ( *.ply ),,AutoCAD DXF ( *.dxf ),,LightWave ( *.lwo ),
Stereolithography ( *.stl ),AC3D ( *.ac )
GAME FILE FORMATS
Valve Model ( *.smd,*.vta ),Quake I ( *.mdl ),Quake II ( *.md2 ),Quake III ( *.md3 ),,Return to Castle Wolfenstein ( *.mdc ),Doom 3 ( *.md5 )
“It comes with an Xcode project which was quite easy to build and get running.”
“All I had to do is add the NO_BOOST #define to AiDefine.h and “
#define AI_BUILD_NO_3D_IMPORTER
#define AI_BUILD_NO_OPTIMIZEGRAPH_PROCESS
#define AI_BUILD_NO_OPTIMIZEMESHES_PROCESS
#define AI_BUILD_NO_LWS_IMPORTER
#define AI_BUILD_NO_CSM_IMPORTER
to the top of Importer.cpp – AI_BUILD_NO_3D_IMPORTER means no Unreal support but I think it is easy to get working.
Update: Also remove the two boost libs from the sidebar.”
Digital Media Multimedia Packages
EyesWeb EyesWeb refers both to the research projects of InfoMus Lab on multimodal interactive systems and expressive gesture, and to the open software platform to support the development of real-time multimodal distributed interactive applications.
Isadora Isadora is the award-winning, graphic programming environment for Macintosh and Windows that provides interactive control over digital media, with special emphasis on the real-time manipulation of digital video. Isadora was initially created to realize the performances of Troika Ranch, a media intensive dance company co-directed by Isadora’s creator, composer and media-artist Mark Coniglio. Isadora reflects over 20 years of practical experience with real time interaction.
MaxMSP An interactive graphical programming environment for music, audio, and media. Max is the graphical programming environment that provides user interface, timing, communications, and MIDI support. MSP adds on real-time audio synthesis and DSP, Jitter extends Max with video and matrix data processing, and Vizzie is a set of modules for quick and unique video creation.
PureData Pd (aka Pure Data) is a real-time graphical programming environment for audio, video, and graphical processing. It is the third major branch of the family of patcher programming languages known as Max (Max/FTS, ISPW Max, Max/MSP, jMax, etc.) originally developed by Miller Puckette and company at IRCAM. The core of Pd is written and maintained by Miller Puckette and includes the work of many developers, making the whole package very much a community effort.
OGRE A scene-oriented, flexible 3D engine written in C++ designed to make it easier and more intuitive for developers to produce applications utilising hardware-accelerated 3D graphics. The class library abstracts all the details of using the underlying system libraries like Direct3D and OpenGL and provides an interface based on world objects and other intuitive classes.
Open GL OpenGL is the premier environment for developing portable, interactive 2D and 3D graphics applications. Since its introduction in 1992, OpenGL has become the industry’s most widely used and supported 2D and 3D graphics application programming interface (API), bringing thousands of applications to a wide variety of computer platforms.
Valve Source A flexible, comprehensive, and powerful proprietry game development environment.
Virtools 3DVIA Virtools is a complete development and deployment platform with an innovative approach to interactive 3D content creation.
X3D (vrml) X3D is a royalty-free open standards file format and run-time architecture to represent and communicate 3D scenes and objects using XML. It is an ISO ratified standard that provides a system for the storage, retrieval and playback of real time graphics content embedded in applications, all within an open architecture to support a wide array of domains and user scenarios.




