This is a very simple script I wrote to make BVH’s exported from DANCE (Dynamic Animation and Control Environment) able to be imported into Blender.
It just adds blank channels to joints if there are less than 3.
"""
DANCE BVH EXPORT THING
-Simple BVH file thing that adds blank channels of
position to JOINTS and FRAMES to allow BVH Exports from
DANCE (Dynamic Animation and Control Environment) to be
imported into Blender.
www.funkboxing.com
"""
infile = "c:\workspace\bvhMINE\bvhdata\skelORIG2.bvh"
outfile = "c:\workspace\bvhMINE\bvhdata\skelTESTOUT.bvh"
def loadDANCEBVH(fin, fout):
tab = chr(9)
f = open(fin, 'r')
lines = f.readlines()
f.close()
newlines = list(lines)
newlines[16] = str(tab+tab+tab+tab+"CHANNELS 3 Xrotation Yrotation Zrotationn")
newlines[30] = str(tab+tab+tab+tab+"CHANNELS 3 Yrotation Xrotation Zrotationn")
newlines[34] = str(tab+tab+tab+tab+"CHANNELS 3 Yrotation Zrotation Xrotationn")
newlines[49] = str(tab+tab+tab+tab+"CHANNELS 3 Yrotation Xrotation Zrotationn")
newlines[53] = str(tab+tab+tab+tab+"CHANNELS 3 Yrotation Zrotation Xrotationn")
newlines[69] = str(tab+tab+tab+tab+"CHANNELS 3 Xrotation Yrotation Zrotationn")
newlines[73] = str(tab+tab+tab+tab+"CHANNELS 3 Xrotation Zrotation Yrotationn")
newlines[88] = str(tab+tab+tab+tab+"CHANNELS 3 Xrotation Yrotation Zrotationn")
newlines[92] = str(tab+tab+tab+tab+"CHANNELS 3 Xrotation Zrotation Yrotationn")
for li in range(104, len(lines)):
vals = lines[li].split(" ")
vals.insert(12, '0')
vals.insert(12, '0')
vals.insert(19, '0')
vals.insert(21, '0')
vals.insert(27, '0')
vals.insert(30, '0')
vals.insert(30, '0')
vals.insert(35, '0')
vals.insert(35, '0')
vals.insert(39, '0')
vals.insert(44, '0')
vals.insert(44, '0')
vals.insert(48, '0')
newlines[li] = " ".join(vals)
fo = open(fout, 'w')
fo.writelines(newlines)
loadDANCEBVH(infile, outfile)