├── MyAotudata ├── picture.png ├── findcontours.py ├── Mysliders.json ├── read.txt ├── getcontourspoint.py ├── normalize.py ├── MyPicture.bvh ├── OUTPUT MODEL.bvh └── ORIGINAL MODEL.bvh ├── README.md ├── .gitignore └── src ├── 7_AotuHumanBodyRegistration.py └── 7_AotuHumanPoseRegistration.py /MyAotudata/picture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qinghuizhao/AutoWidgetsForMakeHuman/HEAD/MyAotudata/picture.png -------------------------------------------------------------------------------- /MyAotudata/findcontours.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qinghuizhao/AutoWidgetsForMakeHuman/HEAD/MyAotudata/findcontours.py -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AotuWidgetsForMakeHuman 2 | 本Python源码是编写的基于开源3D软件MakeHuman的插件。 3 | 7_AotuHumanBodyRegistration.py主要功能是输入二维人体图片,通过改变三维人体模型的体态, 并把模型的映射到二维空间,通过轮廓迭代求优算法,得到三维模型与二维图片的配准。 4 | 7_AotuHumanPoseRegistration.py的功能是通过改变人体姿态来得到模型与二维图片的配准。 5 | -------------------------------------------------------------------------------- /MyAotudata/Mysliders.json: -------------------------------------------------------------------------------- 1 | { 2 | "AotuMyClass2": { 3 | "sortOrder": 3, 4 | "showMacroStats": true, 5 | "modifiers": { 6 | "AotuClass2": [ 7 | {"mod": "macrodetails-universal/Muscle", "label": "Muscle"}, 8 | {"mod": "macrodetails-universal/Weight", "label": "Weight"}, 9 | {"mod": "macrodetails-height/Height", "label": "Height"}, 10 | {"mod": "macrodetails-proportions/BodyProportions", "label": "Proportions"}, 11 | {"mod": "macrodetails/Asian", "label": "Asian"} 12 | ] 13 | } 14 | } 15 | 16 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | 27 | # PyInstaller 28 | # Usually these files are written by a python script from a template 29 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 30 | *.manifest 31 | *.spec 32 | 33 | # Installer logs 34 | pip-log.txt 35 | pip-delete-this-directory.txt 36 | 37 | # Unit test / coverage reports 38 | htmlcov/ 39 | .tox/ 40 | .coverage 41 | .coverage.* 42 | .cache 43 | nosetests.xml 44 | coverage.xml 45 | *,cover 46 | .hypothesis/ 47 | 48 | # Translations 49 | *.mo 50 | *.pot 51 | 52 | # Django stuff: 53 | *.log 54 | 55 | # Sphinx documentation 56 | docs/_build/ 57 | 58 | # PyBuilder 59 | target/ 60 | 61 | #Ipython Notebook 62 | .ipynb_checkpoints 63 | -------------------------------------------------------------------------------- /MyAotudata/read.txt: -------------------------------------------------------------------------------- 1 | FindContours 2 | picture.png 3 | filepicture=os.path.abspath(os.path.join(os.path.dirname('7_AotuPose.py'),os.path.pardir))+'/makehuman/data/MyAotudata/picture.png' 4 | def GetDeltValue(img,filename2): 5 | contour1 = FindContours1(img) 6 | contour2 = FindContours(filename2) 7 | 8 | #cv2.drawContours(img,contour1,-1,(0,0,255),1) 9 | #cv2.imshow("img1",img) 10 | #cv2.waitKey(1000) 11 | 12 | #cv2.drawContours(filename2,contour2,-1,(0,0,255),1) 13 | #cv2.imshow("img2",filename2) 14 | #cv2.waitKey(1000) 15 | num1 = len(contour1) 16 | num2 = len(contour2) 17 | # print(num1) 18 | # print(num2) 19 | C1 = GetFinalContour(contour1,num1) 20 | C2 = GetFinalContour(contour2,num2) 21 | 22 | cv2.drawContours(img,C1,-1,(0,0,255),1) 23 | cv2.imshow("img1",img) 24 | #cv2.waitKey(1000) 25 | 26 | cv2.drawContours(filename2,C2,-1,(0,0,255),1) 27 | cv2.imshow("img2",filename2) 28 | cv2.waitKey(1000) 29 | 30 | #print(len(C1)) 31 | #print(len(C2)) 32 | deltV = MatchContours(C1,C2) 33 | return deltV 34 | -------------------------------------------------------------------------------- /MyAotudata/getcontourspoint.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ''' 3 | Created on 2015.06.29 4 | 5 | @author: Haar_Mao 6 | ''' 7 | import numpy as np 8 | import cv2 9 | import math 10 | global ContourNum 11 | ContourNum = 128 12 | 13 | #计算2点之间的距离 14 | def Length2D(point_2,point_1): 15 | t1 = math.pow(float(point_2[0]-point_1[0]),2) 16 | t2 = math.pow(float(point_2[1]-point_1[1]),2) 17 | t3 = math.pow(float(t1+t2),float(0.5)) 18 | return t3 19 | 20 | #bilinear interpolation 双线性插值 21 | def BilInter(point_2,point_1,length): 22 | ratio = length/Length2D(point_2,point_1) 23 | #print ratio 24 | x = point_2[0]+(point_1[0]-point_2[0])*ratio 25 | y = point_2[1]+(point_1[1]-point_2[1])*ratio 26 | return x,y 27 | 28 | def GetImgContour(filename): 29 | img = cv2.imread(filename) 30 | #img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 31 | #ret,thresh = cv2.threshold(img_gray,100,255,0) 32 | #img,contours,hierarchy = cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) 33 | img,contours,hierarchy = cv2.findContours(img,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) 34 | ''' 35 | cv2.drawContours(img,contours,-1,(0,0,255),3) 36 | cv2.imshow("img",img) 37 | cv2.waitKey(0) 38 | ''' 39 | return contours 40 | #得到128个轮廓点 41 | def GetPoint(contours): 42 | global ContourNum 43 | cnt = contours[0] 44 | ContourLength = cv2.arcLength(cnt,True) #求轮廓周长 45 | Avelenth = (float(ContourLength))/ContourNum #每份轮廓的长度 46 | TotalNum = len(cnt)#轮廓点的个数 47 | Point_1 = []#原始点数的存储 48 | for x in cnt: 49 | Point_1.append(x[0]) 50 | Point_2 = []#所求轮廓点存储 51 | #初始化 52 | for n in range(ContourNum): 53 | Point_2.append(np.array([0,0])) 54 | Point_2[0][0] = Point_1[0][0] 55 | Point_2[0][1] = Point_1[0][1] 56 | d=len(Point_2) 57 | print d 58 | j=1 59 | #求取最佳轮廓点 60 | for i in range(ContourNum-1): 61 | j = int(math.fmod(j,TotalNum)) 62 | if(float(Length2D(Point_2[i],Point_1[j])) > Avelenth): 63 | x,y = BilInter(Point_2[i],Point_1[j],Avelenth) 64 | 65 | Point_2[i+1][0] = x 66 | Point_2[i+1][1] = y 67 | 68 | i = i+1 69 | else: 70 | s1 = float(Length2D(Point_2[i],Point_1[j])) 71 | 72 | while(s1+float(Length2D(Point_1[j],Point_1[j+1]))1): 36 | cnt = GetFinalContour(contours,ContourNum) 37 | else: 38 | cnt = contours[0] 39 | 40 | M = cv2.moments(cnt) 41 | #求质心 42 | cx = int(M['m10']/M['m00']) 43 | cy = int(M['m01']/M['m00']) 44 | return cx,cy,cnt 45 | 46 | #求头部质心 47 | def GetHeadMeans(imgH): 48 | 49 | imgT= imgH 50 | contours,hierarchy = cv2.findContours(imgH,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) 51 | ContourNum = len(contours) 52 | if(ContourNum>1): 53 | cnt = GetFinalContour(contours,ContourNum) 54 | else: 55 | cnt = contours[0] 56 | 57 | #求取最高点和最低点 58 | topmost = tuple(cnt[cnt[:,:,1].argmin()][0]) 59 | bottommost = tuple(cnt[cnt[:,:,1].argmax()][0]) 60 | log.message("Topmost= %d bottommost=%d", topmost[1],bottommost[1]) 61 | 62 | height1,width1=imgT.shape[:2] 63 | Nheight = height1*0.12 #头为整个身长的10%左右 64 | thresh = imgT[topmost[1]:topmost[1]+Nheight, 1:width1] 65 | #cv2.imshow("Head",imgT) 66 | #cv2.waitKey(1000) 67 | 68 | contours,hierarchy = cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) 69 | ContourNum = len(contours) 70 | if(ContourNum>1): 71 | cnt1 = GetFinalContour(contours,ContourNum) 72 | else: 73 | cnt1 = contours[0] 74 | 75 | M1 = cv2.moments(cnt1) 76 | M = cv2.moments(cnt) 77 | 78 | ##求质心 79 | cx = int(M1['m10']/M1['m00']) 80 | cy = int(M['m01']/M['m00']) 81 | 82 | 83 | return cx,cy,cnt 84 | 85 | 86 | #此处的x表示cols即320,y表示rows即240 87 | def GetNormalPic(imgm): 88 | global HEIGHT 89 | global WIDTH 90 | img = ReadImg(imgm) 91 | #img1 = cv2.imread(filename)#重新读入图片不然后面移动时会出问题 92 | img1=imgm.copy() 93 | A = img.shape #320*240图片 rows=240 cols=320 94 | rows = A[0] 95 | cols = A[1] 96 | Cx,Cy,cnt = GetHeadMeans(img) #GetMeans(img)#质心cx=278(cols) cy=127(rows) 97 | #求取最高点和最低点 98 | topmost = tuple(cnt[cnt[:,:,1].argmin()][0]) 99 | bottommost = tuple(cnt[cnt[:,:,1].argmax()][0]) 100 | #人的身高(detrows) 101 | Height = bottommost[1] - topmost[1] 102 | New_X = Cx - Height*(float(1))/3 #剪切开始的坐标x 103 | NewWidth = Height*float(2.0)/3 #剪切的人的宽度 104 | M = np.float32([[1,0,0],[0,1,0]])#初始化需要移动的矩阵 105 | if(New_X+NewWidth>cols):#需要左移 106 | delt_X = cols-(New_X + NewWidth) 107 | M[0][2] = float(delt_X) 108 | dst = cv2.warpAffine(img1,M,(cols,rows)) 109 | Person = dst[topmost[1]:bottommost[1],(New_X+delt_X):cols]#y,x 需要剪切的人的范围 110 | elif(New_X<0):#需要右移 111 | M[0][2] = float(abs(New_X)) 112 | dst = cv2.warpAffine(img1,M,(cols,rows)) 113 | Person = dst[topmost[1]:bottommost[1],0:NewWidth] 114 | else:#不需要移动 115 | dst = img1 116 | Person = dst[topmost[1]:bottommost[1],New_X:(New_X+NewWidth)] 117 | res = cv2.resize(Person,(WIDTH,HEIGHT)) 118 | 119 | #CxNew,CyNew,cntNew = GetHeadMeans(res) #GetMeans(img)#质心cx=278(cols) cy=127(rows) 120 | 121 | return res 122 | #调用该函数传入图片地址和最后存储图片地址即可得到归一化后的图 123 | def Normalize(im): 124 | img = GetNormalPic(im) 125 | return img 126 | #cv2.imwrite(savename,img) 127 | ''' 128 | if __name__ == "__main__": 129 | img=cv2.imread("F:/Aotu3Dpicture/2015-07-07_17.04.35.png") 130 | img2 = GetNormalPic(img) 131 | savename = "F:/Aotu3Dpicture/Norm.png" 132 | cv2.imwrite(savename,img2) 133 | ''' 134 | 135 | 136 | 137 | 138 | 139 | -------------------------------------------------------------------------------- /src/7_AotuHumanBodyRegistration.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python2.7 2 | # -*- coding: utf-8 -*- 3 | import gui 4 | import gui3d 5 | import humanmodifier 6 | import modifierslider 7 | import getpath 8 | import sys 9 | from core import G 10 | import OpenGL 11 | OpenGL.ERROR_CHECKING = G.args.get('debugopengl', False) 12 | OpenGL.ERROR_LOGGING = G.args.get('debugopengl', False) 13 | OpenGL.FULL_LOGGING = G.args.get('fullloggingopengl', False) 14 | OpenGL.ERROR_ON_COPY = True 15 | from OpenGL.GL import * 16 | from OpenGL.GLU import * 17 | from OpenGL.GL.framebufferobjects import * 18 | from OpenGL.GL.ARB.transpose_matrix import * 19 | from OpenGL.GL.ARB.multisample import * 20 | from OpenGL.GL.ARB.texture_multisample import * 21 | import time 22 | import os.path 23 | import glmodule 24 | import numpy as np 25 | import cv2 26 | import os 27 | fileAotuDate=os.path.abspath(os.path.join(os.path.dirname('7_AotuHumanPoseRegistration.py'),os.path.pardir))+'/makehuman/data/MyAotudata' 28 | fileResult=os.path.abspath(os.path.join(os.path.dirname('7_AotuHumanPoseRegistration'),os.path.pardir))+'/makehuman/data/MyAotudata/' 29 | filepicture=os.path.abspath(os.path.join(os.path.dirname('7_AotuHumanPoseRegistration'),os.path.pardir))+'/makehuman/data/MyAotudata/picture.png' 30 | from collections import OrderedDict 31 | import language 32 | import log 33 | import mh 34 | sys.path.append(fileAotuDate) 35 | import findcontours 36 | import getcontourspoint 37 | import normalize 38 | fileAotupicture=r"F:/Aotu3DImage" 39 | if os.path.exists(fileAotupicture): 40 | pass 41 | else: 42 | os.mkdir(fileAotupicture) 43 | 44 | class Modifier1TaskView(gui3d.TaskView): 45 | def __init__(self, category, name, label=None, saveName=None, cameraView=None): 46 | if label is None: 47 | label = name.capitalize() 48 | if saveName is None: 49 | saveName = name 50 | 51 | super(Modifier1TaskView, self).__init__(category, name, label=label) 52 | 53 | self.saveName = saveName 54 | self.cameraFunc = _getCamFunc(cameraView) 55 | 56 | self.groupBoxes = OrderedDict() 57 | self.radioButtons = [] 58 | self.sliders = [] 59 | self.modifiers = {} 60 | 61 | self.categoryBox = self.addRightWidget(gui.GroupBox('Category')) 62 | self.groupBox = self.addLeftWidget(gui.StackedBox()) 63 | 64 | self.showMacroStats = False 65 | self.human = gui3d.app.selectedHuman 66 | a=[0] 67 | deltvalue=[100] 68 | deltva=[0] 69 | box = self.addLeftWidget(gui.GroupBox(u'体态自动化')) 70 | self.aButton = box.addWidget(gui.Button(u'体态变化')) 71 | @self.aButton.mhEvent 72 | def onClicked(event): 73 | log.message('start...') 74 | for slider in self.sliders: 75 | for valuenum in range(0,105,5): 76 | valuenums=valuenum/100.000000 77 | slider.update() 78 | #log.message(slider.modifier.getValue()) 79 | #if slider.enabledCondition: 80 | #log.message(slider) 81 | slider.modifier.setValue(valuenums) 82 | #log.message(slider.modifier.getValue()) 83 | sli=modifierslider.ModifierSlider(slider.modifier) 84 | value=slider.modifier.getValue() 85 | valuesli=sli.getValue() 86 | #sli.onChanging(slider.modifier.getValue()) 87 | action = humanmodifier.ModifierAction(slider.modifier, value, valuesli, sli.update) 88 | log.message(str(valuesli)) 89 | log.message(str(value)) 90 | if valuesli != value: 91 | G.app.do(action) 92 | else: 93 | action.do() 94 | 95 | filenameImage='F:/Aotu3DImage/'+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 96 | filenameIma='F:/Aotu3DImage/'+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 97 | filenameIma1='F:/Aotu3DImage/result'+str(time.strftime("%Y-%m-%d_%H.%M.%S")),'.png' 98 | width = G.windowWidth; 99 | height = G.windowHeight; 100 | width1 = width - 3; 101 | height1 = height - 3; 102 | #log.message(filenameImage) 103 | mh.grabScreen(0,0,width,height,filenameImage) 104 | img=cv2.imread(filenameImage) 105 | height1,width1=img.shape[:2] 106 | #print height,width 107 | for i in range(height1): 108 | for j in range(width1): 109 | r,b,g= img[i][j] 110 | rb=abs(r-b) 111 | rg=abs(r-g) 112 | bg=abs(b-g) 113 | if rb<10 and rg<10 and bg<10: 114 | img[i][j]=[0,0,0] 115 | else: 116 | img[i][j]=[255,255,255] 117 | 118 | 119 | 120 | imsave=normalize.Normalize(img) 121 | cv2.imwrite(filenameIma,imsave) 122 | #cv2.imshow("img",imsave) 123 | # cv2.waitKey(10) 124 | delt=onpicture() 125 | log.message(str(delt)) 126 | if delt<=deltvalue[0]: 127 | deltvalue[0]=delt 128 | deltva[0]=valuenums 129 | 130 | num=deltva[0]*20+1 131 | result=cv2.imread(fileResult+str(num)+'.png') 132 | cv2.imshow("Result",result) 133 | cv2.waitKey(0) 134 | log.message(deltvalue) 135 | log.message(num) 136 | 137 | slider.modifier.setValue(valuenums) 138 | #log.message(slider.modifier.getValue()) 139 | sli=modifierslider.ModifierSlider(slider.modifier) 140 | value=slider.modifier.getValue() 141 | valuesli=sli.getValue() 142 | #sli.onChanging(slider.modifier.getValue()) 143 | action = humanmodifier.ModifierAction(slider.modifier, value, valuesli, sli.update) 144 | G.app.do(action) 145 | mh.grabScreen(0,0,width,height,filenameImage) 146 | imgw=cv2.imread(filenameImage) 147 | height1,width1=imgw.shape[:2] 148 | #print height,width 149 | for i in range(height1): 150 | for j in range(width1): 151 | r,b,g= imgw[i][j] 152 | rb=abs(r-b) 153 | rg=abs(r-g) 154 | bg=abs(b-g) 155 | if rb<10 and rg<10 and bg<10: 156 | imgw[i][j]=[0,0,0] 157 | else: 158 | imgw[i][j]=[255,255,255] 159 | 160 | 161 | 162 | imsavew=normalize.Normalize(imgw) 163 | cv2.imwrite(filenameIma1,imsavew) 164 | #sli.resetValue() 165 | #syncSliders() 166 | #slider.modifier.human 167 | #enabled = getattr(slider.modifier.human, slider.enabledCondition)() 168 | #slider.setEnabled(str(2)) 169 | #log.message(str(enabled)) 170 | 171 | def grabMyScreen(x, y, width, height,filename = None, productionRender=False): 172 | if width <= 0 or height <= 0: 173 | raise RuntimeError("width or height is 0") 174 | 175 | log.debug('grabScreen: %d %d %d %d', x, y, width, height) 176 | # Draw before grabbing, to make sure we grab a rendering and not a picking buffer 177 | glmodule.draw(productionRender) 178 | sx0 = x 179 | sy0 = G.windowHeight - y - height 180 | sx1 = sx0 + width 181 | sy1 = sy0 + height 182 | sx0 = max(sx0, 0) 183 | sx1 = min(sx1, G.windowWidth) 184 | sy0 = max(sy0, 0) 185 | sy1 = min(sy1, G.windowHeight) 186 | rwidth = sx1 - sx0 187 | rwidth -= rwidth % 4 188 | sx1 = sx0 + rwidth 189 | rheight = sy1 - sy0 190 | surface = np.empty((rheight, rwidth, 3), dtype = np.uint8) 191 | log.debug('glReadPixels: %d %d %d %d', sx0, sy0, rwidth, rheight) 192 | glmodule.glReadPixels(sx0, sy0, rwidth, rheight, GL_RGB, GL_UNSIGNED_BYTE, surface) 193 | if width != rwidth or height != rheight: 194 | surf = np.zeros((height, width, 3), dtype = np.uint8) + 127 195 | surf[...] = surface[:1,:1,:] 196 | dx0 = (width - rwidth) / 2 197 | dy0 = (height - rheight) / 2 198 | dx1 = dx0 + rwidth 199 | dy1 = dy0 + rheight 200 | surf[dy0:dy1,dx0:dx1] = surface 201 | surface = surf 202 | 203 | surface = np.ascontiguousarray(surface[::-1,:,:]) 204 | #surface = Image(data = surface) 205 | return surface 206 | 207 | def onpicture(): 208 | #filenameImage='F:/Aotu3DImage/'+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 209 | #filenameIma='F:/Aotu3DImage/'+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 210 | width = G.windowWidth; 211 | height = G.windowHeight; 212 | width = width - 3; 213 | height = height - 3; 214 | #log.message(filenameImage) 215 | #mh.grabScreen(0,0,width,height,filenameImage) 216 | img=grabMyScreen(0,0,width,height) 217 | #log.message(str(imgs)) 218 | #img=cv2.imread(filenameImage) 219 | height,width=img.shape[:2] 220 | #print height,width 221 | for i in range(height): 222 | for j in range(width): 223 | r,b,g= img[i][j] 224 | rb=abs(r-b) 225 | rg=abs(r-g) 226 | bg=abs(b-g) 227 | if rb<10 and rg<10 and bg<10: 228 | img[i][j]=[0,0,0] 229 | else: 230 | img[i][j]=[255,255,255] 231 | 232 | 233 | 234 | # cv2.imwrite(filenameIma,img) 235 | imsave=normalize.Normalize(img) 236 | delt=findcontours.GetDeltValue(imsave,filepicture) 237 | return delt 238 | 239 | 240 | def addSlider(self, sliderCategory, slider, enabledCondition=None): 241 | # Get category groupbox 242 | categoryName = sliderCategory.capitalize() 243 | if categoryName not in self.groupBoxes: 244 | # Create box 245 | box = self.groupBox.addWidget(gui.GroupBox(categoryName)) 246 | self.groupBoxes[categoryName] = box 247 | 248 | # Create radiobutton 249 | isFirstBox = len(self.radioButtons) == 0 250 | self.categoryBox.addWidget(GroupBoxRadioButton(self, self.radioButtons, categoryName, box, selected=isFirstBox)) 251 | if isFirstBox: 252 | self.groupBox.showWidget(self.groupBoxes.values()[0]) 253 | else: 254 | box = self.groupBoxes[categoryName] 255 | 256 | # Add slider to groupbox 257 | self.modifiers[slider.modifier.fullName] = slider.modifier 258 | box.addWidget(slider) 259 | slider.enabledCondition = enabledCondition 260 | self.sliders.append(slider) 261 | #log.message(str(sliders.getValue())) 262 | 263 | def updateMacro(self): 264 | self.human.updateMacroModifiers() 265 | 266 | def getModifiers(self): 267 | return self.modifiers 268 | 269 | def onShow(self, event): 270 | gui3d.TaskView.onShow(self, event) 271 | 272 | # Only show macro statistics in status bar for Macro modeling task 273 | # (depends on the correct task name being defined) 274 | if self.showMacroStats: 275 | self.showMacroStatus() 276 | 277 | if G.app.getSetting('cameraAutoZoom'): 278 | self.setCamera() 279 | 280 | self.syncSliders() 281 | 282 | def syncSliders(self): 283 | for slider in self.sliders: 284 | slider.update() 285 | if slider.enabledCondition: 286 | enabled = getattr(slider.modifier.human, slider.enabledCondition)() 287 | slider.setEnabled(enabled) 288 | 289 | 290 | def onHide(self, event): 291 | super(Modifier1TaskView, self).onHide(event) 292 | 293 | if self.name == "Macro modelling": 294 | self.setStatus('') 295 | 296 | def onHumanChanged(self, event): 297 | # Update sliders to modifier values 298 | self.syncSliders() 299 | 300 | if event.change in ('reset', 'load', 'random'): 301 | self.updateMacro() 302 | 303 | if self.showMacroStats and self.isVisible(): 304 | self.showMacroStatus() 305 | 306 | def loadHandler(self, human, values, strict): 307 | pass 308 | 309 | def saveHandler(self, human, file): 310 | pass 311 | 312 | def setCamera(self): 313 | if self.cameraFunc: 314 | f = getattr(G.app, self.cameraFunc) 315 | f() 316 | 317 | def showMacroStatus(self): 318 | human = G.app.selectedHuman 319 | 320 | if human.getGender() == 0.0: 321 | gender = G.app.getLanguageString('female') 322 | elif human.getGender() == 1.0: 323 | gender = G.app.getLanguageString('male') 324 | elif abs(human.getGender() - 0.5) < 0.01: 325 | gender = G.app.getLanguageString('neutral') 326 | else: 327 | gender = G.app.getLanguageString('%.2f%% female, %.2f%% male') % ((1.0 - human.getGender()) * 100, human.getGender() * 100) 328 | 329 | age = human.getAgeYears() 330 | muscle = (human.getMuscle() * 100.0) 331 | weight = (50 + (150 - 50) * human.getWeight()) 332 | height = human.getHeightCm() 333 | if G.app.getSetting('units') == 'metric': 334 | units = 'cm' 335 | else: 336 | units = 'in' 337 | height *= 0.393700787 338 | 339 | self.setStatus([ ['Gender',': %s '], ['Age',': %d '], ['Muscle',': %.2f%% '], ['Weight',': %.2f%% '], ['Height',': %.2f %s'] ], gender, age, muscle, weight, height, units) 340 | 341 | def setStatus(self, format, *args): 342 | G.app.statusPersist(format, *args) 343 | 344 | class GroupBoxRadioButton(gui.RadioButton): 345 | def __init__(self, task, group, label, groupBox, selected=False): 346 | super(GroupBoxRadioButton, self).__init__(group, label, selected) 347 | self.groupBox = groupBox 348 | self.task = task 349 | 350 | def onClicked(self, event): 351 | self.task.groupBox.showWidget(self.groupBox) 352 | #self.task.onSliderFocus(self.groupBox.children[0]) # TODO needed for measurement 353 | 354 | 355 | def _getCamFunc(cameraName): 356 | if cameraName: 357 | if hasattr(gui3d.app, cameraName) and callable(getattr(gui3d.app, cameraName)): 358 | return cameraName 359 | 360 | return "set" + cameraName.upper()[0] + cameraName[1:] 361 | else: 362 | return None 363 | 364 | 365 | 366 | def loadModifierTaskViews(filename, human, category, taskviewClass=None): 367 | """ 368 | Create modifier task views from modifiersliders defined in slider definition 369 | file. 370 | """ 371 | import json 372 | 373 | if not taskviewClass: 374 | taskviewClass = Modifier1TaskView 375 | 376 | data = json.load(open(filename, 'rb'), object_pairs_hook=OrderedDict) 377 | taskViews = [] 378 | # Create task views 379 | for taskName, taskViewProps in data.items(): 380 | sName = taskViewProps.get('saveName', None) 381 | label = taskViewProps.get('label', None) 382 | taskView = taskviewClass(category, taskName, label, sName) 383 | taskView.sortOrder = taskViewProps.get('sortOrder', None) 384 | taskView.showMacroStats = taskViewProps.get('showMacroStats', None) 385 | category.addTask(taskView) 386 | 387 | # Create sliders 388 | for sliderCategory, sliderDefs in taskViewProps['modifiers'].items(): 389 | for sDef in sliderDefs: 390 | modifierName = sDef['mod'] 391 | modifier = human.getModifier(modifierName) 392 | log.message(str(modifierName)) 393 | log.message(str(modifier)) 394 | label = sDef.get('label', None) 395 | camFunc = _getCamFunc( sDef.get('cam', None) ) 396 | slider = modifierslider.ModifierSlider(modifier, label=label, cameraView=camFunc) 397 | enabledCondition = sDef.get("enabledCondition", None) 398 | taskView.addSlider(sliderCategory, slider, enabledCondition) 399 | 400 | if taskView.saveName is not None: 401 | gui3d.app.addLoadHandler(taskView.saveName, taskView.loadHandler) 402 | gui3d.app.addSaveHandler(taskView.saveHandler) 403 | 404 | taskViews.append(taskView) 405 | 406 | return taskViews 407 | 408 | def load(app): 409 | category = app.getCategory('Utilities') 410 | #taskview = category.addTask(AotuclassTaskView(category)) 411 | loadModifierTaskViews(getpath.getSysDataPath('MyAotudata/Mysliders.json'), app.selectedHuman, category) 412 | 413 | def unload(app): 414 | pass 415 | 416 | -------------------------------------------------------------------------------- /MyAotudata/MyPicture.bvh: -------------------------------------------------------------------------------- 1 | HIERARCHY 2 | ROOT root 3 | { 4 | OFFSET 0.000000 0.517567 -0.647733 5 | CHANNELS 6 Xposition Yposition Zposition Zrotation Xrotation Yrotation 6 | JOINT spine05 7 | { 8 | OFFSET 0.000000 0.042200 0.779775 9 | CHANNELS 3 Zrotation Xrotation Yrotation 10 | JOINT spine04 11 | { 12 | OFFSET 0.000000 0.797708 -0.387333 13 | CHANNELS 3 Zrotation Xrotation Yrotation 14 | JOINT spine03 15 | { 16 | OFFSET 0.000000 0.662592 0.154175 17 | CHANNELS 3 Zrotation Xrotation Yrotation 18 | JOINT spine02 19 | { 20 | OFFSET 0.000000 0.750542 0.017317 21 | CHANNELS 3 Zrotation Xrotation Yrotation 22 | JOINT breast.L 23 | { 24 | OFFSET 0.000000 1.439192 -0.103200 25 | CHANNELS 3 Zrotation Xrotation Yrotation 26 | End Site 27 | { 28 | OFFSET 1.02097 -0.248667 1.6741 29 | } 30 | } 31 | JOINT breast.R 32 | { 33 | OFFSET 0.000000 1.439192 -0.103200 34 | CHANNELS 3 Zrotation Xrotation Yrotation 35 | End Site 36 | { 37 | OFFSET -1.02097 -0.248667 1.6741 38 | } 39 | } 40 | JOINT spine01 41 | { 42 | OFFSET 0.000000 1.439192 -0.103200 43 | CHANNELS 3 Zrotation Xrotation Yrotation 44 | JOINT __clavicle.L 45 | { 46 | OFFSET 0.000000 1.749783 0.238133 47 | CHANNELS 3 Zrotation Xrotation Yrotation 48 | JOINT clavicle.L 49 | { 50 | OFFSET 0.227362 -0.711566 0.165075 51 | CHANNELS 3 Zrotation Xrotation Yrotation 52 | JOINT shoulder01.L 53 | { 54 | OFFSET 0.763133 0.160829 0.000450 55 | CHANNELS 3 Zrotation Xrotation Yrotation 56 | JOINT upperarm01.L 57 | { 58 | OFFSET 0.709900 -0.387504 -0.023546 59 | CHANNELS 3 Zrotation Xrotation Yrotation 60 | JOINT upperarm02.L 61 | { 62 | OFFSET 0.469617 -0.541788 -0.016363 63 | CHANNELS 3 Zrotation Xrotation Yrotation 64 | JOINT lowerarm01.L 65 | { 66 | OFFSET 1.143496 -1.264158 0.024512 67 | CHANNELS 3 Zrotation Xrotation Yrotation 68 | JOINT lowerarm02.L 69 | { 70 | OFFSET 0.609827 -0.621146 0.815894 71 | CHANNELS 3 Zrotation Xrotation Yrotation 72 | JOINT wrist.L 73 | { 74 | OFFSET 0.609827 -0.621146 0.815894 75 | CHANNELS 3 Zrotation Xrotation Yrotation 76 | JOINT __finger1-1.L 77 | { 78 | OFFSET 0.107112 -0.156708 0.260654 79 | CHANNELS 3 Zrotation Xrotation Yrotation 80 | JOINT finger1-1.L 81 | { 82 | OFFSET -0.096138 0.081371 0.177996 83 | CHANNELS 3 Zrotation Xrotation Yrotation 84 | JOINT finger1-2.L 85 | { 86 | OFFSET -0.209020 -0.086808 0.209750 87 | CHANNELS 3 Zrotation Xrotation Yrotation 88 | JOINT finger1-3.L 89 | { 90 | OFFSET -0.123863 -0.139496 0.310367 91 | CHANNELS 3 Zrotation Xrotation Yrotation 92 | End Site 93 | { 94 | OFFSET -0.0550003 -0.173975 0.212975 95 | } 96 | } 97 | } 98 | } 99 | } 100 | JOINT metacarpal1.L 101 | { 102 | OFFSET 0.107112 -0.156708 0.260654 103 | CHANNELS 3 Zrotation Xrotation Yrotation 104 | JOINT finger2-1.L 105 | { 106 | OFFSET 0.170596 -0.249150 0.683021 107 | CHANNELS 3 Zrotation Xrotation Yrotation 108 | JOINT finger2-2.L 109 | { 110 | OFFSET 0.033467 -0.150733 0.207083 111 | CHANNELS 3 Zrotation Xrotation Yrotation 112 | JOINT finger2-3.L 113 | { 114 | OFFSET -0.005638 -0.162925 0.163396 115 | CHANNELS 3 Zrotation Xrotation Yrotation 116 | End Site 117 | { 118 | OFFSET -0.036675 -0.201583 0.175733 119 | } 120 | } 121 | } 122 | } 123 | } 124 | JOINT metacarpal2.L 125 | { 126 | OFFSET 0.107112 -0.156708 0.260654 127 | CHANNELS 3 Zrotation Xrotation Yrotation 128 | JOINT finger3-1.L 129 | { 130 | OFFSET 0.333233 -0.358058 0.504750 131 | CHANNELS 3 Zrotation Xrotation Yrotation 132 | JOINT finger3-2.L 133 | { 134 | OFFSET 0.072066 -0.259625 0.204521 135 | CHANNELS 3 Zrotation Xrotation Yrotation 136 | JOINT finger3-3.L 137 | { 138 | OFFSET 0.026600 -0.215121 0.171142 139 | CHANNELS 3 Zrotation Xrotation Yrotation 140 | End Site 141 | { 142 | OFFSET -0.00199604 -0.225358 0.148383 143 | } 144 | } 145 | } 146 | } 147 | } 148 | JOINT __metacarpal3.L 149 | { 150 | OFFSET 0.107112 -0.156708 0.260654 151 | CHANNELS 3 Zrotation Xrotation Yrotation 152 | JOINT metacarpal3.L 153 | { 154 | OFFSET 0.116754 -0.152017 -0.104283 155 | CHANNELS 3 Zrotation Xrotation Yrotation 156 | JOINT finger4-1.L 157 | { 158 | OFFSET 0.291812 -0.282558 0.438125 159 | CHANNELS 3 Zrotation Xrotation Yrotation 160 | JOINT finger4-2.L 161 | { 162 | OFFSET 0.092821 -0.244712 0.140671 163 | CHANNELS 3 Zrotation Xrotation Yrotation 164 | JOINT finger4-3.L 165 | { 166 | OFFSET 0.042458 -0.209796 0.125225 167 | CHANNELS 3 Zrotation Xrotation Yrotation 168 | End Site 169 | { 170 | OFFSET 0.0244298 -0.241179 0.112092 171 | } 172 | } 173 | } 174 | } 175 | } 176 | } 177 | JOINT __metacarpal4.L 178 | { 179 | OFFSET 0.107112 -0.156708 0.260654 180 | CHANNELS 3 Zrotation Xrotation Yrotation 181 | JOINT metacarpal4.L 182 | { 183 | OFFSET 0.116754 -0.152017 -0.104283 184 | CHANNELS 3 Zrotation Xrotation Yrotation 185 | JOINT finger5-1.L 186 | { 187 | OFFSET 0.306746 -0.369133 0.244533 188 | CHANNELS 3 Zrotation Xrotation Yrotation 189 | JOINT finger5-2.L 190 | { 191 | OFFSET 0.058950 -0.190654 0.074425 192 | CHANNELS 3 Zrotation Xrotation Yrotation 193 | JOINT finger5-3.L 194 | { 195 | OFFSET 0.017250 -0.144346 0.056883 196 | CHANNELS 3 Zrotation Xrotation Yrotation 197 | End Site 198 | { 199 | OFFSET 0.0265584 -0.184342 0.0690708 200 | } 201 | } 202 | } 203 | } 204 | } 205 | } 206 | } 207 | } 208 | } 209 | } 210 | } 211 | } 212 | } 213 | } 214 | JOINT __clavicle.R 215 | { 216 | OFFSET 0.000000 1.749783 0.238133 217 | CHANNELS 3 Zrotation Xrotation Yrotation 218 | JOINT clavicle.R 219 | { 220 | OFFSET -0.227362 -0.711566 0.165075 221 | CHANNELS 3 Zrotation Xrotation Yrotation 222 | JOINT shoulder01.R 223 | { 224 | OFFSET -0.763133 0.160829 0.000450 225 | CHANNELS 3 Zrotation Xrotation Yrotation 226 | JOINT upperarm01.R 227 | { 228 | OFFSET -0.709900 -0.387504 -0.023546 229 | CHANNELS 3 Zrotation Xrotation Yrotation 230 | JOINT upperarm02.R 231 | { 232 | OFFSET -0.469617 -0.541788 -0.016363 233 | CHANNELS 3 Zrotation Xrotation Yrotation 234 | JOINT lowerarm01.R 235 | { 236 | OFFSET -1.143496 -1.264158 0.024512 237 | CHANNELS 3 Zrotation Xrotation Yrotation 238 | JOINT lowerarm02.R 239 | { 240 | OFFSET -0.609827 -0.621146 0.815894 241 | CHANNELS 3 Zrotation Xrotation Yrotation 242 | JOINT wrist.R 243 | { 244 | OFFSET -0.609827 -0.621146 0.815894 245 | CHANNELS 3 Zrotation Xrotation Yrotation 246 | JOINT __finger1-1.R 247 | { 248 | OFFSET -0.107112 -0.156708 0.260654 249 | CHANNELS 3 Zrotation Xrotation Yrotation 250 | JOINT finger1-1.R 251 | { 252 | OFFSET 0.096138 0.081371 0.177996 253 | CHANNELS 3 Zrotation Xrotation Yrotation 254 | JOINT finger1-2.R 255 | { 256 | OFFSET 0.209020 -0.086808 0.209750 257 | CHANNELS 3 Zrotation Xrotation Yrotation 258 | JOINT finger1-3.R 259 | { 260 | OFFSET 0.123863 -0.139496 0.310367 261 | CHANNELS 3 Zrotation Xrotation Yrotation 262 | End Site 263 | { 264 | OFFSET 0.0550003 -0.173975 0.212975 265 | } 266 | } 267 | } 268 | } 269 | } 270 | JOINT metacarpal1.R 271 | { 272 | OFFSET -0.107112 -0.156708 0.260654 273 | CHANNELS 3 Zrotation Xrotation Yrotation 274 | JOINT finger2-1.R 275 | { 276 | OFFSET -0.170596 -0.249150 0.683021 277 | CHANNELS 3 Zrotation Xrotation Yrotation 278 | JOINT finger2-2.R 279 | { 280 | OFFSET -0.033467 -0.150733 0.207083 281 | CHANNELS 3 Zrotation Xrotation Yrotation 282 | JOINT finger2-3.R 283 | { 284 | OFFSET 0.005638 -0.162925 0.163396 285 | CHANNELS 3 Zrotation Xrotation Yrotation 286 | End Site 287 | { 288 | OFFSET 0.036675 -0.201583 0.175733 289 | } 290 | } 291 | } 292 | } 293 | } 294 | JOINT metacarpal2.R 295 | { 296 | OFFSET -0.107112 -0.156708 0.260654 297 | CHANNELS 3 Zrotation Xrotation Yrotation 298 | JOINT finger3-1.R 299 | { 300 | OFFSET -0.333233 -0.358058 0.504750 301 | CHANNELS 3 Zrotation Xrotation Yrotation 302 | JOINT finger3-2.R 303 | { 304 | OFFSET -0.072066 -0.259625 0.204521 305 | CHANNELS 3 Zrotation Xrotation Yrotation 306 | JOINT finger3-3.R 307 | { 308 | OFFSET -0.026600 -0.215121 0.171142 309 | CHANNELS 3 Zrotation Xrotation Yrotation 310 | End Site 311 | { 312 | OFFSET 0.00199604 -0.225358 0.148383 313 | } 314 | } 315 | } 316 | } 317 | } 318 | JOINT __metacarpal3.R 319 | { 320 | OFFSET -0.107112 -0.156708 0.260654 321 | CHANNELS 3 Zrotation Xrotation Yrotation 322 | JOINT metacarpal3.R 323 | { 324 | OFFSET -0.116754 -0.152017 -0.104283 325 | CHANNELS 3 Zrotation Xrotation Yrotation 326 | JOINT finger4-1.R 327 | { 328 | OFFSET -0.291812 -0.282558 0.438125 329 | CHANNELS 3 Zrotation Xrotation Yrotation 330 | JOINT finger4-2.R 331 | { 332 | OFFSET -0.092821 -0.244712 0.140671 333 | CHANNELS 3 Zrotation Xrotation Yrotation 334 | JOINT finger4-3.R 335 | { 336 | OFFSET -0.042458 -0.209796 0.125225 337 | CHANNELS 3 Zrotation Xrotation Yrotation 338 | End Site 339 | { 340 | OFFSET -0.0244298 -0.241179 0.112092 341 | } 342 | } 343 | } 344 | } 345 | } 346 | } 347 | JOINT __metacarpal4.R 348 | { 349 | OFFSET -0.107112 -0.156708 0.260654 350 | CHANNELS 3 Zrotation Xrotation Yrotation 351 | JOINT metacarpal4.R 352 | { 353 | OFFSET -0.116754 -0.152017 -0.104283 354 | CHANNELS 3 Zrotation Xrotation Yrotation 355 | JOINT finger5-1.R 356 | { 357 | OFFSET -0.306746 -0.369133 0.244533 358 | CHANNELS 3 Zrotation Xrotation Yrotation 359 | JOINT finger5-2.R 360 | { 361 | OFFSET -0.058950 -0.190654 0.074425 362 | CHANNELS 3 Zrotation Xrotation Yrotation 363 | JOINT finger5-3.R 364 | { 365 | OFFSET -0.017250 -0.144346 0.056883 366 | CHANNELS 3 Zrotation Xrotation Yrotation 367 | End Site 368 | { 369 | OFFSET -0.0265584 -0.184342 0.0690708 370 | } 371 | } 372 | } 373 | } 374 | } 375 | } 376 | } 377 | } 378 | } 379 | } 380 | } 381 | } 382 | } 383 | } 384 | JOINT neck01 385 | { 386 | OFFSET 0.000000 1.749783 0.238133 387 | CHANNELS 3 Zrotation Xrotation Yrotation 388 | JOINT neck02 389 | { 390 | OFFSET 0.000000 0.312145 0.113831 391 | CHANNELS 3 Zrotation Xrotation Yrotation 392 | JOINT neck03 393 | { 394 | OFFSET 0.000000 0.369505 0.106444 395 | CHANNELS 3 Zrotation Xrotation Yrotation 396 | JOINT head 397 | { 398 | OFFSET 0.000000 0.327050 0.171467 399 | CHANNELS 3 Zrotation Xrotation Yrotation 400 | JOINT __jaw 401 | { 402 | OFFSET 0.000000 1.479859 -0.069342 403 | CHANNELS 3 Zrotation Xrotation Yrotation 404 | JOINT jaw 405 | { 406 | OFFSET 0.000000 -1.415601 0.190750 407 | CHANNELS 3 Zrotation Xrotation Yrotation 408 | JOINT special04 409 | { 410 | OFFSET 0.000000 -0.777041 0.504983 411 | CHANNELS 3 Zrotation Xrotation Yrotation 412 | JOINT oris02 413 | { 414 | OFFSET 0.000000 0.178750 0.253875 415 | CHANNELS 3 Zrotation Xrotation Yrotation 416 | JOINT oris01 417 | { 418 | OFFSET 0.000000 0.096384 0.104392 419 | CHANNELS 3 Zrotation Xrotation Yrotation 420 | End Site 421 | { 422 | OFFSET 0.0 0.138533 0.0571666 423 | } 424 | } 425 | } 426 | JOINT oris06.L 427 | { 428 | OFFSET 0.000000 0.178750 0.253875 429 | CHANNELS 3 Zrotation Xrotation Yrotation 430 | JOINT oris07.L 431 | { 432 | OFFSET 0.123900 0.044917 0.072592 433 | CHANNELS 3 Zrotation Xrotation Yrotation 434 | End Site 435 | { 436 | OFFSET 0.0477666 0.125733 0.0310667 437 | } 438 | } 439 | } 440 | JOINT oris06.R 441 | { 442 | OFFSET 0.000000 0.178750 0.253875 443 | CHANNELS 3 Zrotation Xrotation Yrotation 444 | JOINT oris07.R 445 | { 446 | OFFSET -0.123900 0.044917 0.072592 447 | CHANNELS 3 Zrotation Xrotation Yrotation 448 | End Site 449 | { 450 | OFFSET -0.0477666 0.125733 0.0310667 451 | } 452 | } 453 | } 454 | } 455 | JOINT tongue00 456 | { 457 | OFFSET 0.000000 -0.777041 0.504983 458 | CHANNELS 3 Zrotation Xrotation Yrotation 459 | JOINT tongue01 460 | { 461 | OFFSET 0.000000 0.436792 -0.379717 462 | CHANNELS 3 Zrotation Xrotation Yrotation 463 | JOINT tongue02 464 | { 465 | OFFSET 0.000000 0.036667 0.288650 466 | CHANNELS 3 Zrotation Xrotation Yrotation 467 | JOINT tongue03 468 | { 469 | OFFSET 0.000000 -0.001984 0.202392 470 | CHANNELS 3 Zrotation Xrotation Yrotation 471 | JOINT tongue04 472 | { 473 | OFFSET 0.000000 -0.044971 0.081646 474 | CHANNELS 3 Zrotation Xrotation Yrotation 475 | End Site 476 | { 477 | OFFSET 0.0 -0.0449705 0.0816457 478 | } 479 | } 480 | JOINT tongue07.L 481 | { 482 | OFFSET 0.000000 -0.044971 0.081646 483 | CHANNELS 3 Zrotation Xrotation Yrotation 484 | End Site 485 | { 486 | OFFSET 0.114267 -0.0346708 0.00222921 487 | } 488 | } 489 | JOINT tongue07.R 490 | { 491 | OFFSET 0.000000 -0.044971 0.081646 492 | CHANNELS 3 Zrotation Xrotation Yrotation 493 | End Site 494 | { 495 | OFFSET -0.114267 -0.0346708 0.00222921 496 | } 497 | } 498 | } 499 | JOINT tongue06.L 500 | { 501 | OFFSET 0.000000 -0.001984 0.202392 502 | CHANNELS 3 Zrotation Xrotation Yrotation 503 | End Site 504 | { 505 | OFFSET 0.1617 -0.0521078 -0.0211251 506 | } 507 | } 508 | JOINT tongue06.R 509 | { 510 | OFFSET 0.000000 -0.001984 0.202392 511 | CHANNELS 3 Zrotation Xrotation Yrotation 512 | End Site 513 | { 514 | OFFSET -0.1617 -0.0521078 -0.0211251 515 | } 516 | } 517 | } 518 | JOINT tongue05.L 519 | { 520 | OFFSET 0.000000 0.036667 0.288650 521 | CHANNELS 3 Zrotation Xrotation Yrotation 522 | End Site 523 | { 524 | OFFSET 0.194 -0.0396581 0.0224 525 | } 526 | } 527 | JOINT tongue05.R 528 | { 529 | OFFSET 0.000000 0.036667 0.288650 530 | CHANNELS 3 Zrotation Xrotation Yrotation 531 | End Site 532 | { 533 | OFFSET -0.194 -0.0396581 0.0224 534 | } 535 | } 536 | } 537 | } 538 | } 539 | } 540 | JOINT __levator02.L 541 | { 542 | OFFSET 0.000000 1.479859 -0.069342 543 | CHANNELS 3 Zrotation Xrotation Yrotation 544 | JOINT levator02.L 545 | { 546 | OFFSET 0.031033 -1.270642 1.111667 547 | CHANNELS 3 Zrotation Xrotation Yrotation 548 | JOINT levator03.L 549 | { 550 | OFFSET 0.167200 -0.118366 -0.119233 551 | CHANNELS 3 Zrotation Xrotation Yrotation 552 | JOINT levator04.L 553 | { 554 | OFFSET 0.060933 -0.184367 0.003766 555 | CHANNELS 3 Zrotation Xrotation Yrotation 556 | JOINT levator05.L 557 | { 558 | OFFSET 0.017533 -0.174167 0.001434 559 | CHANNELS 3 Zrotation Xrotation Yrotation 560 | End Site 561 | { 562 | OFFSET -0.0282 -0.0835328 0.00309992 563 | } 564 | } 565 | } 566 | } 567 | } 568 | } 569 | JOINT __levator02.R 570 | { 571 | OFFSET 0.000000 1.479859 -0.069342 572 | CHANNELS 3 Zrotation Xrotation Yrotation 573 | JOINT levator02.R 574 | { 575 | OFFSET -0.031033 -1.270642 1.111667 576 | CHANNELS 3 Zrotation Xrotation Yrotation 577 | JOINT levator03.R 578 | { 579 | OFFSET -0.167200 -0.118366 -0.119233 580 | CHANNELS 3 Zrotation Xrotation Yrotation 581 | JOINT levator04.R 582 | { 583 | OFFSET -0.060933 -0.184367 0.003766 584 | CHANNELS 3 Zrotation Xrotation Yrotation 585 | JOINT levator05.R 586 | { 587 | OFFSET -0.017533 -0.174167 0.001434 588 | CHANNELS 3 Zrotation Xrotation Yrotation 589 | End Site 590 | { 591 | OFFSET 0.0282 -0.0835328 0.00309992 592 | } 593 | } 594 | } 595 | } 596 | } 597 | } 598 | JOINT __special01 599 | { 600 | OFFSET 0.000000 1.479859 -0.069342 601 | CHANNELS 3 Zrotation Xrotation Yrotation 602 | JOINT special01 603 | { 604 | OFFSET 0.000000 -1.486775 -0.630000 605 | CHANNELS 3 Zrotation Xrotation Yrotation 606 | JOINT oris04.L 607 | { 608 | OFFSET 0.000000 -0.087800 1.749500 609 | CHANNELS 3 Zrotation Xrotation Yrotation 610 | JOINT oris03.L 611 | { 612 | OFFSET 0.134267 -0.064000 -0.023067 613 | CHANNELS 3 Zrotation Xrotation Yrotation 614 | End Site 615 | { 616 | OFFSET 0.0299333 -0.0594006 -0.00363338 617 | } 618 | } 619 | } 620 | JOINT oris04.R 621 | { 622 | OFFSET 0.000000 -0.087800 1.749500 623 | CHANNELS 3 Zrotation Xrotation Yrotation 624 | JOINT oris03.R 625 | { 626 | OFFSET -0.134267 -0.064000 -0.023067 627 | CHANNELS 3 Zrotation Xrotation Yrotation 628 | End Site 629 | { 630 | OFFSET -0.0299333 -0.0594006 -0.00363338 631 | } 632 | } 633 | } 634 | JOINT oris06 635 | { 636 | OFFSET 0.000000 -0.087800 1.749500 637 | CHANNELS 3 Zrotation Xrotation Yrotation 638 | JOINT oris05 639 | { 640 | OFFSET 0.000000 -0.051367 0.006967 641 | CHANNELS 3 Zrotation Xrotation Yrotation 642 | End Site 643 | { 644 | OFFSET 0.0 -0.0644331 0.0332333 645 | } 646 | } 647 | } 648 | } 649 | } 650 | JOINT __special03 651 | { 652 | OFFSET 0.000000 1.479859 -0.069342 653 | CHANNELS 3 Zrotation Xrotation Yrotation 654 | JOINT special03 655 | { 656 | OFFSET 0.000000 -1.415601 0.190750 657 | CHANNELS 3 Zrotation Xrotation Yrotation 658 | JOINT __levator06.L 659 | { 660 | OFFSET 0.000000 0.007859 1.020917 661 | CHANNELS 3 Zrotation Xrotation Yrotation 662 | JOINT levator06.L 663 | { 664 | OFFSET 0.056567 -0.061866 -0.007633 665 | CHANNELS 3 Zrotation Xrotation Yrotation 666 | End Site 667 | { 668 | OFFSET 0.1126 0.0388665 -0.186133 669 | } 670 | } 671 | } 672 | JOINT __levator06.R 673 | { 674 | OFFSET 0.000000 0.007859 1.020917 675 | CHANNELS 3 Zrotation Xrotation Yrotation 676 | JOINT levator06.R 677 | { 678 | OFFSET -0.056567 -0.061866 -0.007633 679 | CHANNELS 3 Zrotation Xrotation Yrotation 680 | End Site 681 | { 682 | OFFSET -0.1126 0.0388665 -0.186133 683 | } 684 | } 685 | } 686 | } 687 | } 688 | JOINT special06.L 689 | { 690 | OFFSET 0.000000 1.479859 -0.069342 691 | CHANNELS 3 Zrotation Xrotation Yrotation 692 | JOINT special05.L 693 | { 694 | OFFSET 0.186867 -0.149642 0.560300 695 | CHANNELS 3 Zrotation Xrotation Yrotation 696 | JOINT eye.L 697 | { 698 | OFFSET 0.102071 -0.943371 0.246954 699 | CHANNELS 3 Zrotation Xrotation Yrotation 700 | End Site 701 | { 702 | OFFSET 0.0177666 -0.0295334 0.379779 703 | } 704 | } 705 | JOINT orbicularis03.L 706 | { 707 | OFFSET 0.102071 -0.943371 0.246954 708 | CHANNELS 3 Zrotation Xrotation Yrotation 709 | End Site 710 | { 711 | OFFSET 0.0170417 0.0883579 0.359529 712 | } 713 | } 714 | JOINT orbicularis04.L 715 | { 716 | OFFSET 0.102071 -0.943371 0.246954 717 | CHANNELS 3 Zrotation Xrotation Yrotation 718 | End Site 719 | { 720 | OFFSET 0.0180083 -0.142329 0.354171 721 | } 722 | } 723 | } 724 | } 725 | JOINT special06.R 726 | { 727 | OFFSET 0.000000 1.479859 -0.069342 728 | CHANNELS 3 Zrotation Xrotation Yrotation 729 | JOINT special05.R 730 | { 731 | OFFSET -0.186867 -0.149642 0.560300 732 | CHANNELS 3 Zrotation Xrotation Yrotation 733 | JOINT eye.R 734 | { 735 | OFFSET -0.102071 -0.943371 0.246954 736 | CHANNELS 3 Zrotation Xrotation Yrotation 737 | End Site 738 | { 739 | OFFSET -0.0177666 -0.0295334 0.379779 740 | } 741 | } 742 | JOINT orbicularis03.R 743 | { 744 | OFFSET -0.102071 -0.943371 0.246954 745 | CHANNELS 3 Zrotation Xrotation Yrotation 746 | End Site 747 | { 748 | OFFSET -0.0170417 0.0883579 0.359529 749 | } 750 | } 751 | JOINT orbicularis04.R 752 | { 753 | OFFSET -0.102071 -0.943371 0.246954 754 | CHANNELS 3 Zrotation Xrotation Yrotation 755 | End Site 756 | { 757 | OFFSET -0.0180083 -0.142329 0.354171 758 | } 759 | } 760 | } 761 | } 762 | JOINT __temporalis01.L 763 | { 764 | OFFSET 0.000000 1.479859 -0.069342 765 | CHANNELS 3 Zrotation Xrotation Yrotation 766 | JOINT temporalis01.L 767 | { 768 | OFFSET 0.604533 -1.023042 0.663167 769 | CHANNELS 3 Zrotation Xrotation Yrotation 770 | JOINT oculi02.L 771 | { 772 | OFFSET -0.081933 -0.003500 0.176233 773 | CHANNELS 3 Zrotation Xrotation Yrotation 774 | JOINT oculi01.L 775 | { 776 | OFFSET -0.202467 0.146833 0.179934 777 | CHANNELS 3 Zrotation Xrotation Yrotation 778 | End Site 779 | { 780 | OFFSET -0.1676 0.0124006 0.0413332 781 | } 782 | } 783 | } 784 | } 785 | } 786 | JOINT __temporalis01.R 787 | { 788 | OFFSET 0.000000 1.479859 -0.069342 789 | CHANNELS 3 Zrotation Xrotation Yrotation 790 | JOINT temporalis01.R 791 | { 792 | OFFSET -0.604533 -1.023042 0.663167 793 | CHANNELS 3 Zrotation Xrotation Yrotation 794 | JOINT oculi02.R 795 | { 796 | OFFSET 0.081933 -0.003500 0.176233 797 | CHANNELS 3 Zrotation Xrotation Yrotation 798 | JOINT oculi01.R 799 | { 800 | OFFSET 0.202467 0.146833 0.179934 801 | CHANNELS 3 Zrotation Xrotation Yrotation 802 | End Site 803 | { 804 | OFFSET 0.1676 0.0124006 0.0413332 805 | } 806 | } 807 | } 808 | } 809 | } 810 | JOINT __temporalis02.L 811 | { 812 | OFFSET 0.000000 1.479859 -0.069342 813 | CHANNELS 3 Zrotation Xrotation Yrotation 814 | JOINT temporalis02.L 815 | { 816 | OFFSET 0.623067 -1.246776 0.641000 817 | CHANNELS 3 Zrotation Xrotation Yrotation 818 | JOINT risorius02.L 819 | { 820 | OFFSET -0.097267 0.049901 0.177300 821 | CHANNELS 3 Zrotation Xrotation Yrotation 822 | JOINT risorius03.L 823 | { 824 | OFFSET -0.050400 -0.276733 0.060533 825 | CHANNELS 3 Zrotation Xrotation Yrotation 826 | End Site 827 | { 828 | OFFSET 0.0464 -0.197434 -0.157766 829 | } 830 | } 831 | } 832 | } 833 | } 834 | JOINT __temporalis02.R 835 | { 836 | OFFSET 0.000000 1.479859 -0.069342 837 | CHANNELS 3 Zrotation Xrotation Yrotation 838 | JOINT temporalis02.R 839 | { 840 | OFFSET -0.623067 -1.246776 0.641000 841 | CHANNELS 3 Zrotation Xrotation Yrotation 842 | JOINT risorius02.R 843 | { 844 | OFFSET 0.097267 0.049901 0.177300 845 | CHANNELS 3 Zrotation Xrotation Yrotation 846 | JOINT risorius03.R 847 | { 848 | OFFSET 0.050400 -0.276733 0.060533 849 | CHANNELS 3 Zrotation Xrotation Yrotation 850 | End Site 851 | { 852 | OFFSET -0.0464 -0.197434 -0.157766 853 | } 854 | } 855 | } 856 | } 857 | } 858 | } 859 | } 860 | } 861 | } 862 | } 863 | } 864 | } 865 | } 866 | } 867 | JOINT pelvis.L 868 | { 869 | OFFSET 0.000000 0.042200 0.779775 870 | CHANNELS 3 Zrotation Xrotation Yrotation 871 | JOINT upperleg01.L 872 | { 873 | OFFSET 1.013817 -0.080867 -0.082737 874 | CHANNELS 3 Zrotation Xrotation Yrotation 875 | JOINT upperleg02.L 876 | { 877 | OFFSET 0.010650 -0.780900 0.247546 878 | CHANNELS 3 Zrotation Xrotation Yrotation 879 | JOINT lowerleg01.L 880 | { 881 | OFFSET 0.400371 -3.128596 0.076942 882 | CHANNELS 3 Zrotation Xrotation Yrotation 883 | JOINT lowerleg02.L 884 | { 885 | OFFSET 0.190494 -2.027762 -0.073498 886 | CHANNELS 3 Zrotation Xrotation Yrotation 887 | JOINT foot.L 888 | { 889 | OFFSET 0.190494 -2.027762 -0.073498 890 | CHANNELS 3 Zrotation Xrotation Yrotation 891 | JOINT __toe1-1.L 892 | { 893 | OFFSET 0.027325 -0.300888 0.583994 894 | CHANNELS 3 Zrotation Xrotation Yrotation 895 | JOINT toe1-1.L 896 | { 897 | OFFSET -0.272733 -0.104125 0.735544 898 | CHANNELS 3 Zrotation Xrotation Yrotation 899 | JOINT toe1-2.L 900 | { 901 | OFFSET 0.021337 -0.064567 0.242679 902 | CHANNELS 3 Zrotation Xrotation Yrotation 903 | End Site 904 | { 905 | OFFSET 0.0401834 -0.0827665 0.272558 906 | } 907 | } 908 | } 909 | } 910 | JOINT __toe2-1.L 911 | { 912 | OFFSET 0.027325 -0.300888 0.583994 913 | CHANNELS 3 Zrotation Xrotation Yrotation 914 | JOINT toe2-1.L 915 | { 916 | OFFSET -0.045029 -0.129121 0.748890 917 | CHANNELS 3 Zrotation Xrotation Yrotation 918 | JOINT toe2-2.L 919 | { 920 | OFFSET 0.017700 -0.032283 0.203875 921 | CHANNELS 3 Zrotation Xrotation Yrotation 922 | JOINT toe2-3.L 923 | { 924 | OFFSET 0.006646 -0.044042 0.124838 925 | CHANNELS 3 Zrotation Xrotation Yrotation 926 | End Site 927 | { 928 | OFFSET 0.00430012 -0.0647416 0.166113 929 | } 930 | } 931 | } 932 | } 933 | } 934 | JOINT __toe3-1.L 935 | { 936 | OFFSET 0.027325 -0.300888 0.583994 937 | CHANNELS 3 Zrotation Xrotation Yrotation 938 | JOINT toe3-1.L 939 | { 940 | OFFSET 0.112262 -0.145263 0.723885 941 | CHANNELS 3 Zrotation Xrotation Yrotation 942 | JOINT toe3-2.L 943 | { 944 | OFFSET 0.016117 -0.024770 0.180971 945 | CHANNELS 3 Zrotation Xrotation Yrotation 946 | JOINT toe3-3.L 947 | { 948 | OFFSET 0.003271 -0.044146 0.120183 949 | CHANNELS 3 Zrotation Xrotation Yrotation 950 | End Site 951 | { 952 | OFFSET -0.00320411 -0.043354 0.127175 953 | } 954 | } 955 | } 956 | } 957 | } 958 | JOINT __toe4-1.L 959 | { 960 | OFFSET 0.027325 -0.300888 0.583994 961 | CHANNELS 3 Zrotation Xrotation Yrotation 962 | JOINT toe4-1.L 963 | { 964 | OFFSET 0.261421 -0.147129 0.653673 965 | CHANNELS 3 Zrotation Xrotation Yrotation 966 | JOINT toe4-2.L 967 | { 968 | OFFSET 0.016012 -0.033209 0.149108 969 | CHANNELS 3 Zrotation Xrotation Yrotation 970 | JOINT toe4-3.L 971 | { 972 | OFFSET -0.003596 -0.025008 0.113933 973 | CHANNELS 3 Zrotation Xrotation Yrotation 974 | End Site 975 | { 976 | OFFSET 0.00889158 -0.0568876 0.0969625 977 | } 978 | } 979 | } 980 | } 981 | } 982 | JOINT __toe5-1.L 983 | { 984 | OFFSET 0.027325 -0.300888 0.583994 985 | CHANNELS 3 Zrotation Xrotation Yrotation 986 | JOINT toe5-1.L 987 | { 988 | OFFSET 0.398479 -0.145787 0.587231 989 | CHANNELS 3 Zrotation Xrotation Yrotation 990 | JOINT toe5-2.L 991 | { 992 | OFFSET 0.004554 -0.026646 0.098192 993 | CHANNELS 3 Zrotation Xrotation Yrotation 994 | JOINT toe5-3.L 995 | { 996 | OFFSET -0.008646 -0.037117 0.079117 997 | CHANNELS 3 Zrotation Xrotation Yrotation 998 | End Site 999 | { 1000 | OFFSET 0.00443339 -0.0555582 0.1086 1001 | } 1002 | } 1003 | } 1004 | } 1005 | } 1006 | } 1007 | } 1008 | } 1009 | } 1010 | } 1011 | } 1012 | JOINT pelvis.R 1013 | { 1014 | OFFSET 0.000000 0.042200 0.779775 1015 | CHANNELS 3 Zrotation Xrotation Yrotation 1016 | JOINT upperleg01.R 1017 | { 1018 | OFFSET -1.013817 -0.080867 -0.082737 1019 | CHANNELS 3 Zrotation Xrotation Yrotation 1020 | JOINT upperleg02.R 1021 | { 1022 | OFFSET -0.010650 -0.780900 0.247546 1023 | CHANNELS 3 Zrotation Xrotation Yrotation 1024 | JOINT lowerleg01.R 1025 | { 1026 | OFFSET -0.400371 -3.128596 0.076942 1027 | CHANNELS 3 Zrotation Xrotation Yrotation 1028 | JOINT lowerleg02.R 1029 | { 1030 | OFFSET -0.190494 -2.027762 -0.073498 1031 | CHANNELS 3 Zrotation Xrotation Yrotation 1032 | JOINT foot.R 1033 | { 1034 | OFFSET -0.190494 -2.027762 -0.073498 1035 | CHANNELS 3 Zrotation Xrotation Yrotation 1036 | JOINT __toe1-1.R 1037 | { 1038 | OFFSET -0.027325 -0.300888 0.583994 1039 | CHANNELS 3 Zrotation Xrotation Yrotation 1040 | JOINT toe1-1.R 1041 | { 1042 | OFFSET 0.272733 -0.104125 0.735544 1043 | CHANNELS 3 Zrotation Xrotation Yrotation 1044 | JOINT toe1-2.R 1045 | { 1046 | OFFSET -0.021337 -0.064567 0.242679 1047 | CHANNELS 3 Zrotation Xrotation Yrotation 1048 | End Site 1049 | { 1050 | OFFSET -0.0401834 -0.0827665 0.272558 1051 | } 1052 | } 1053 | } 1054 | } 1055 | JOINT __toe2-1.R 1056 | { 1057 | OFFSET -0.027325 -0.300888 0.583994 1058 | CHANNELS 3 Zrotation Xrotation Yrotation 1059 | JOINT toe2-1.R 1060 | { 1061 | OFFSET 0.045029 -0.129121 0.748890 1062 | CHANNELS 3 Zrotation Xrotation Yrotation 1063 | JOINT toe2-2.R 1064 | { 1065 | OFFSET -0.017700 -0.032283 0.203875 1066 | CHANNELS 3 Zrotation Xrotation Yrotation 1067 | JOINT toe2-3.R 1068 | { 1069 | OFFSET -0.006646 -0.044042 0.124838 1070 | CHANNELS 3 Zrotation Xrotation Yrotation 1071 | End Site 1072 | { 1073 | OFFSET -0.00430012 -0.0647416 0.166113 1074 | } 1075 | } 1076 | } 1077 | } 1078 | } 1079 | JOINT __toe3-1.R 1080 | { 1081 | OFFSET -0.027325 -0.300888 0.583994 1082 | CHANNELS 3 Zrotation Xrotation Yrotation 1083 | JOINT toe3-1.R 1084 | { 1085 | OFFSET -0.112262 -0.145263 0.723885 1086 | CHANNELS 3 Zrotation Xrotation Yrotation 1087 | JOINT toe3-2.R 1088 | { 1089 | OFFSET -0.016117 -0.024770 0.180971 1090 | CHANNELS 3 Zrotation Xrotation Yrotation 1091 | JOINT toe3-3.R 1092 | { 1093 | OFFSET -0.003271 -0.044146 0.120183 1094 | CHANNELS 3 Zrotation Xrotation Yrotation 1095 | End Site 1096 | { 1097 | OFFSET 0.00320411 -0.043354 0.127175 1098 | } 1099 | } 1100 | } 1101 | } 1102 | } 1103 | JOINT __toe4-1.R 1104 | { 1105 | OFFSET -0.027325 -0.300888 0.583994 1106 | CHANNELS 3 Zrotation Xrotation Yrotation 1107 | JOINT toe4-1.R 1108 | { 1109 | OFFSET -0.261421 -0.147129 0.653673 1110 | CHANNELS 3 Zrotation Xrotation Yrotation 1111 | JOINT toe4-2.R 1112 | { 1113 | OFFSET -0.016012 -0.033209 0.149108 1114 | CHANNELS 3 Zrotation Xrotation Yrotation 1115 | JOINT toe4-3.R 1116 | { 1117 | OFFSET 0.003596 -0.025008 0.113933 1118 | CHANNELS 3 Zrotation Xrotation Yrotation 1119 | End Site 1120 | { 1121 | OFFSET -0.00889158 -0.0568876 0.0969625 1122 | } 1123 | } 1124 | } 1125 | } 1126 | } 1127 | JOINT __toe5-1.R 1128 | { 1129 | OFFSET -0.027325 -0.300888 0.583994 1130 | CHANNELS 3 Zrotation Xrotation Yrotation 1131 | JOINT toe5-1.R 1132 | { 1133 | OFFSET -0.398479 -0.145787 0.587231 1134 | CHANNELS 3 Zrotation Xrotation Yrotation 1135 | JOINT toe5-2.R 1136 | { 1137 | OFFSET -0.004554 -0.026646 0.098192 1138 | CHANNELS 3 Zrotation Xrotation Yrotation 1139 | JOINT toe5-3.R 1140 | { 1141 | OFFSET 0.008646 -0.037117 0.079117 1142 | CHANNELS 3 Zrotation Xrotation Yrotation 1143 | End Site 1144 | { 1145 | OFFSET -0.00443339 -0.0555582 0.1086 1146 | } 1147 | } 1148 | } 1149 | } 1150 | } 1151 | } 1152 | } 1153 | } 1154 | } 1155 | } 1156 | } 1157 | } 1158 | MOTION 1159 | Frames: 1 1160 | Frame Time: -1.000000 1161 | 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -35.0 10 0.0 0.0 0.0 0.0 0.0 35 0.0 10.0 10.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 35.0 0 0.0 0.0 0.0 0.0 0.0 35 0.0 -10.0 10.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -10.0 0 0.0 0.0 0.0 0.0 -0.0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10.0 0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1162 | -------------------------------------------------------------------------------- /MyAotudata/OUTPUT MODEL.bvh: -------------------------------------------------------------------------------- 1 | HIERARCHY 2 | ROOT root 3 | { 4 | OFFSET 0.000000 0.517567 -0.647733 5 | CHANNELS 6 Xposition Yposition Zposition Zrotation Xrotation Yrotation 6 | JOINT spine05 7 | { 8 | OFFSET 0.000000 0.042200 0.779775 9 | CHANNELS 3 Zrotation Xrotation Yrotation 10 | JOINT spine04 11 | { 12 | OFFSET 0.000000 0.797708 -0.387333 13 | CHANNELS 3 Zrotation Xrotation Yrotation 14 | JOINT spine03 15 | { 16 | OFFSET 0.000000 0.662592 0.154175 17 | CHANNELS 3 Zrotation Xrotation Yrotation 18 | JOINT spine02 19 | { 20 | OFFSET 0.000000 0.750542 0.017317 21 | CHANNELS 3 Zrotation Xrotation Yrotation 22 | JOINT breast.L 23 | { 24 | OFFSET 0.000000 1.439192 -0.103200 25 | CHANNELS 3 Zrotation Xrotation Yrotation 26 | End Site 27 | { 28 | OFFSET 1.02097 -0.248667 1.6741 29 | } 30 | } 31 | JOINT breast.R 32 | { 33 | OFFSET 0.000000 1.439192 -0.103200 34 | CHANNELS 3 Zrotation Xrotation Yrotation 35 | End Site 36 | { 37 | OFFSET -1.02097 -0.248667 1.6741 38 | } 39 | } 40 | JOINT spine01 41 | { 42 | OFFSET 0.000000 1.439192 -0.103200 43 | CHANNELS 3 Zrotation Xrotation Yrotation 44 | JOINT __clavicle.L 45 | { 46 | OFFSET 0.000000 1.749783 0.238133 47 | CHANNELS 3 Zrotation Xrotation Yrotation 48 | JOINT clavicle.L 49 | { 50 | OFFSET 0.227362 -0.711566 0.165075 51 | CHANNELS 3 Zrotation Xrotation Yrotation 52 | JOINT shoulder01.L 53 | { 54 | OFFSET 0.763133 0.160829 0.000450 55 | CHANNELS 3 Zrotation Xrotation Yrotation 56 | JOINT upperarm01.L 57 | { 58 | OFFSET 0.709900 -0.387504 -0.023546 59 | CHANNELS 3 Zrotation Xrotation Yrotation 60 | JOINT upperarm02.L 61 | { 62 | OFFSET 0.469617 -0.541788 -0.016363 63 | CHANNELS 3 Zrotation Xrotation Yrotation 64 | JOINT lowerarm01.L 65 | { 66 | OFFSET 1.143496 -1.264158 0.024512 67 | CHANNELS 3 Zrotation Xrotation Yrotation 68 | JOINT lowerarm02.L 69 | { 70 | OFFSET 0.609827 -0.621146 0.815894 71 | CHANNELS 3 Zrotation Xrotation Yrotation 72 | JOINT wrist.L 73 | { 74 | OFFSET 0.609827 -0.621146 0.815894 75 | CHANNELS 3 Zrotation Xrotation Yrotation 76 | JOINT __finger1-1.L 77 | { 78 | OFFSET 0.107112 -0.156708 0.260654 79 | CHANNELS 3 Zrotation Xrotation Yrotation 80 | JOINT finger1-1.L 81 | { 82 | OFFSET -0.096138 0.081371 0.177996 83 | CHANNELS 3 Zrotation Xrotation Yrotation 84 | JOINT finger1-2.L 85 | { 86 | OFFSET -0.209020 -0.086808 0.209750 87 | CHANNELS 3 Zrotation Xrotation Yrotation 88 | JOINT finger1-3.L 89 | { 90 | OFFSET -0.123863 -0.139496 0.310367 91 | CHANNELS 3 Zrotation Xrotation Yrotation 92 | End Site 93 | { 94 | OFFSET -0.0550003 -0.173975 0.212975 95 | } 96 | } 97 | } 98 | } 99 | } 100 | JOINT metacarpal1.L 101 | { 102 | OFFSET 0.107112 -0.156708 0.260654 103 | CHANNELS 3 Zrotation Xrotation Yrotation 104 | JOINT finger2-1.L 105 | { 106 | OFFSET 0.170596 -0.249150 0.683021 107 | CHANNELS 3 Zrotation Xrotation Yrotation 108 | JOINT finger2-2.L 109 | { 110 | OFFSET 0.033467 -0.150733 0.207083 111 | CHANNELS 3 Zrotation Xrotation Yrotation 112 | JOINT finger2-3.L 113 | { 114 | OFFSET -0.005638 -0.162925 0.163396 115 | CHANNELS 3 Zrotation Xrotation Yrotation 116 | End Site 117 | { 118 | OFFSET -0.036675 -0.201583 0.175733 119 | } 120 | } 121 | } 122 | } 123 | } 124 | JOINT metacarpal2.L 125 | { 126 | OFFSET 0.107112 -0.156708 0.260654 127 | CHANNELS 3 Zrotation Xrotation Yrotation 128 | JOINT finger3-1.L 129 | { 130 | OFFSET 0.333233 -0.358058 0.504750 131 | CHANNELS 3 Zrotation Xrotation Yrotation 132 | JOINT finger3-2.L 133 | { 134 | OFFSET 0.072066 -0.259625 0.204521 135 | CHANNELS 3 Zrotation Xrotation Yrotation 136 | JOINT finger3-3.L 137 | { 138 | OFFSET 0.026600 -0.215121 0.171142 139 | CHANNELS 3 Zrotation Xrotation Yrotation 140 | End Site 141 | { 142 | OFFSET -0.00199604 -0.225358 0.148383 143 | } 144 | } 145 | } 146 | } 147 | } 148 | JOINT __metacarpal3.L 149 | { 150 | OFFSET 0.107112 -0.156708 0.260654 151 | CHANNELS 3 Zrotation Xrotation Yrotation 152 | JOINT metacarpal3.L 153 | { 154 | OFFSET 0.116754 -0.152017 -0.104283 155 | CHANNELS 3 Zrotation Xrotation Yrotation 156 | JOINT finger4-1.L 157 | { 158 | OFFSET 0.291812 -0.282558 0.438125 159 | CHANNELS 3 Zrotation Xrotation Yrotation 160 | JOINT finger4-2.L 161 | { 162 | OFFSET 0.092821 -0.244712 0.140671 163 | CHANNELS 3 Zrotation Xrotation Yrotation 164 | JOINT finger4-3.L 165 | { 166 | OFFSET 0.042458 -0.209796 0.125225 167 | CHANNELS 3 Zrotation Xrotation Yrotation 168 | End Site 169 | { 170 | OFFSET 0.0244298 -0.241179 0.112092 171 | } 172 | } 173 | } 174 | } 175 | } 176 | } 177 | JOINT __metacarpal4.L 178 | { 179 | OFFSET 0.107112 -0.156708 0.260654 180 | CHANNELS 3 Zrotation Xrotation Yrotation 181 | JOINT metacarpal4.L 182 | { 183 | OFFSET 0.116754 -0.152017 -0.104283 184 | CHANNELS 3 Zrotation Xrotation Yrotation 185 | JOINT finger5-1.L 186 | { 187 | OFFSET 0.306746 -0.369133 0.244533 188 | CHANNELS 3 Zrotation Xrotation Yrotation 189 | JOINT finger5-2.L 190 | { 191 | OFFSET 0.058950 -0.190654 0.074425 192 | CHANNELS 3 Zrotation Xrotation Yrotation 193 | JOINT finger5-3.L 194 | { 195 | OFFSET 0.017250 -0.144346 0.056883 196 | CHANNELS 3 Zrotation Xrotation Yrotation 197 | End Site 198 | { 199 | OFFSET 0.0265584 -0.184342 0.0690708 200 | } 201 | } 202 | } 203 | } 204 | } 205 | } 206 | } 207 | } 208 | } 209 | } 210 | } 211 | } 212 | } 213 | } 214 | JOINT __clavicle.R 215 | { 216 | OFFSET 0.000000 1.749783 0.238133 217 | CHANNELS 3 Zrotation Xrotation Yrotation 218 | JOINT clavicle.R 219 | { 220 | OFFSET -0.227362 -0.711566 0.165075 221 | CHANNELS 3 Zrotation Xrotation Yrotation 222 | JOINT shoulder01.R 223 | { 224 | OFFSET -0.763133 0.160829 0.000450 225 | CHANNELS 3 Zrotation Xrotation Yrotation 226 | JOINT upperarm01.R 227 | { 228 | OFFSET -0.709900 -0.387504 -0.023546 229 | CHANNELS 3 Zrotation Xrotation Yrotation 230 | JOINT upperarm02.R 231 | { 232 | OFFSET -0.469617 -0.541788 -0.016363 233 | CHANNELS 3 Zrotation Xrotation Yrotation 234 | JOINT lowerarm01.R 235 | { 236 | OFFSET -1.143496 -1.264158 0.024512 237 | CHANNELS 3 Zrotation Xrotation Yrotation 238 | JOINT lowerarm02.R 239 | { 240 | OFFSET -0.609827 -0.621146 0.815894 241 | CHANNELS 3 Zrotation Xrotation Yrotation 242 | JOINT wrist.R 243 | { 244 | OFFSET -0.609827 -0.621146 0.815894 245 | CHANNELS 3 Zrotation Xrotation Yrotation 246 | JOINT __finger1-1.R 247 | { 248 | OFFSET -0.107112 -0.156708 0.260654 249 | CHANNELS 3 Zrotation Xrotation Yrotation 250 | JOINT finger1-1.R 251 | { 252 | OFFSET 0.096138 0.081371 0.177996 253 | CHANNELS 3 Zrotation Xrotation Yrotation 254 | JOINT finger1-2.R 255 | { 256 | OFFSET 0.209020 -0.086808 0.209750 257 | CHANNELS 3 Zrotation Xrotation Yrotation 258 | JOINT finger1-3.R 259 | { 260 | OFFSET 0.123863 -0.139496 0.310367 261 | CHANNELS 3 Zrotation Xrotation Yrotation 262 | End Site 263 | { 264 | OFFSET 0.0550003 -0.173975 0.212975 265 | } 266 | } 267 | } 268 | } 269 | } 270 | JOINT metacarpal1.R 271 | { 272 | OFFSET -0.107112 -0.156708 0.260654 273 | CHANNELS 3 Zrotation Xrotation Yrotation 274 | JOINT finger2-1.R 275 | { 276 | OFFSET -0.170596 -0.249150 0.683021 277 | CHANNELS 3 Zrotation Xrotation Yrotation 278 | JOINT finger2-2.R 279 | { 280 | OFFSET -0.033467 -0.150733 0.207083 281 | CHANNELS 3 Zrotation Xrotation Yrotation 282 | JOINT finger2-3.R 283 | { 284 | OFFSET 0.005638 -0.162925 0.163396 285 | CHANNELS 3 Zrotation Xrotation Yrotation 286 | End Site 287 | { 288 | OFFSET 0.036675 -0.201583 0.175733 289 | } 290 | } 291 | } 292 | } 293 | } 294 | JOINT metacarpal2.R 295 | { 296 | OFFSET -0.107112 -0.156708 0.260654 297 | CHANNELS 3 Zrotation Xrotation Yrotation 298 | JOINT finger3-1.R 299 | { 300 | OFFSET -0.333233 -0.358058 0.504750 301 | CHANNELS 3 Zrotation Xrotation Yrotation 302 | JOINT finger3-2.R 303 | { 304 | OFFSET -0.072066 -0.259625 0.204521 305 | CHANNELS 3 Zrotation Xrotation Yrotation 306 | JOINT finger3-3.R 307 | { 308 | OFFSET -0.026600 -0.215121 0.171142 309 | CHANNELS 3 Zrotation Xrotation Yrotation 310 | End Site 311 | { 312 | OFFSET 0.00199604 -0.225358 0.148383 313 | } 314 | } 315 | } 316 | } 317 | } 318 | JOINT __metacarpal3.R 319 | { 320 | OFFSET -0.107112 -0.156708 0.260654 321 | CHANNELS 3 Zrotation Xrotation Yrotation 322 | JOINT metacarpal3.R 323 | { 324 | OFFSET -0.116754 -0.152017 -0.104283 325 | CHANNELS 3 Zrotation Xrotation Yrotation 326 | JOINT finger4-1.R 327 | { 328 | OFFSET -0.291812 -0.282558 0.438125 329 | CHANNELS 3 Zrotation Xrotation Yrotation 330 | JOINT finger4-2.R 331 | { 332 | OFFSET -0.092821 -0.244712 0.140671 333 | CHANNELS 3 Zrotation Xrotation Yrotation 334 | JOINT finger4-3.R 335 | { 336 | OFFSET -0.042458 -0.209796 0.125225 337 | CHANNELS 3 Zrotation Xrotation Yrotation 338 | End Site 339 | { 340 | OFFSET -0.0244298 -0.241179 0.112092 341 | } 342 | } 343 | } 344 | } 345 | } 346 | } 347 | JOINT __metacarpal4.R 348 | { 349 | OFFSET -0.107112 -0.156708 0.260654 350 | CHANNELS 3 Zrotation Xrotation Yrotation 351 | JOINT metacarpal4.R 352 | { 353 | OFFSET -0.116754 -0.152017 -0.104283 354 | CHANNELS 3 Zrotation Xrotation Yrotation 355 | JOINT finger5-1.R 356 | { 357 | OFFSET -0.306746 -0.369133 0.244533 358 | CHANNELS 3 Zrotation Xrotation Yrotation 359 | JOINT finger5-2.R 360 | { 361 | OFFSET -0.058950 -0.190654 0.074425 362 | CHANNELS 3 Zrotation Xrotation Yrotation 363 | JOINT finger5-3.R 364 | { 365 | OFFSET -0.017250 -0.144346 0.056883 366 | CHANNELS 3 Zrotation Xrotation Yrotation 367 | End Site 368 | { 369 | OFFSET -0.0265584 -0.184342 0.0690708 370 | } 371 | } 372 | } 373 | } 374 | } 375 | } 376 | } 377 | } 378 | } 379 | } 380 | } 381 | } 382 | } 383 | } 384 | JOINT neck01 385 | { 386 | OFFSET 0.000000 1.749783 0.238133 387 | CHANNELS 3 Zrotation Xrotation Yrotation 388 | JOINT neck02 389 | { 390 | OFFSET 0.000000 0.312145 0.113831 391 | CHANNELS 3 Zrotation Xrotation Yrotation 392 | JOINT neck03 393 | { 394 | OFFSET 0.000000 0.369505 0.106444 395 | CHANNELS 3 Zrotation Xrotation Yrotation 396 | JOINT head 397 | { 398 | OFFSET 0.000000 0.327050 0.171467 399 | CHANNELS 3 Zrotation Xrotation Yrotation 400 | JOINT __jaw 401 | { 402 | OFFSET 0.000000 1.479859 -0.069342 403 | CHANNELS 3 Zrotation Xrotation Yrotation 404 | JOINT jaw 405 | { 406 | OFFSET 0.000000 -1.415601 0.190750 407 | CHANNELS 3 Zrotation Xrotation Yrotation 408 | JOINT special04 409 | { 410 | OFFSET 0.000000 -0.777041 0.504983 411 | CHANNELS 3 Zrotation Xrotation Yrotation 412 | JOINT oris02 413 | { 414 | OFFSET 0.000000 0.178750 0.253875 415 | CHANNELS 3 Zrotation Xrotation Yrotation 416 | JOINT oris01 417 | { 418 | OFFSET 0.000000 0.096384 0.104392 419 | CHANNELS 3 Zrotation Xrotation Yrotation 420 | End Site 421 | { 422 | OFFSET 0.0 0.138533 0.0571666 423 | } 424 | } 425 | } 426 | JOINT oris06.L 427 | { 428 | OFFSET 0.000000 0.178750 0.253875 429 | CHANNELS 3 Zrotation Xrotation Yrotation 430 | JOINT oris07.L 431 | { 432 | OFFSET 0.123900 0.044917 0.072592 433 | CHANNELS 3 Zrotation Xrotation Yrotation 434 | End Site 435 | { 436 | OFFSET 0.0477666 0.125733 0.0310667 437 | } 438 | } 439 | } 440 | JOINT oris06.R 441 | { 442 | OFFSET 0.000000 0.178750 0.253875 443 | CHANNELS 3 Zrotation Xrotation Yrotation 444 | JOINT oris07.R 445 | { 446 | OFFSET -0.123900 0.044917 0.072592 447 | CHANNELS 3 Zrotation Xrotation Yrotation 448 | End Site 449 | { 450 | OFFSET -0.0477666 0.125733 0.0310667 451 | } 452 | } 453 | } 454 | } 455 | JOINT tongue00 456 | { 457 | OFFSET 0.000000 -0.777041 0.504983 458 | CHANNELS 3 Zrotation Xrotation Yrotation 459 | JOINT tongue01 460 | { 461 | OFFSET 0.000000 0.436792 -0.379717 462 | CHANNELS 3 Zrotation Xrotation Yrotation 463 | JOINT tongue02 464 | { 465 | OFFSET 0.000000 0.036667 0.288650 466 | CHANNELS 3 Zrotation Xrotation Yrotation 467 | JOINT tongue03 468 | { 469 | OFFSET 0.000000 -0.001984 0.202392 470 | CHANNELS 3 Zrotation Xrotation Yrotation 471 | JOINT tongue04 472 | { 473 | OFFSET 0.000000 -0.044971 0.081646 474 | CHANNELS 3 Zrotation Xrotation Yrotation 475 | End Site 476 | { 477 | OFFSET 0.0 -0.0449705 0.0816457 478 | } 479 | } 480 | JOINT tongue07.L 481 | { 482 | OFFSET 0.000000 -0.044971 0.081646 483 | CHANNELS 3 Zrotation Xrotation Yrotation 484 | End Site 485 | { 486 | OFFSET 0.114267 -0.0346708 0.00222921 487 | } 488 | } 489 | JOINT tongue07.R 490 | { 491 | OFFSET 0.000000 -0.044971 0.081646 492 | CHANNELS 3 Zrotation Xrotation Yrotation 493 | End Site 494 | { 495 | OFFSET -0.114267 -0.0346708 0.00222921 496 | } 497 | } 498 | } 499 | JOINT tongue06.L 500 | { 501 | OFFSET 0.000000 -0.001984 0.202392 502 | CHANNELS 3 Zrotation Xrotation Yrotation 503 | End Site 504 | { 505 | OFFSET 0.1617 -0.0521078 -0.0211251 506 | } 507 | } 508 | JOINT tongue06.R 509 | { 510 | OFFSET 0.000000 -0.001984 0.202392 511 | CHANNELS 3 Zrotation Xrotation Yrotation 512 | End Site 513 | { 514 | OFFSET -0.1617 -0.0521078 -0.0211251 515 | } 516 | } 517 | } 518 | JOINT tongue05.L 519 | { 520 | OFFSET 0.000000 0.036667 0.288650 521 | CHANNELS 3 Zrotation Xrotation Yrotation 522 | End Site 523 | { 524 | OFFSET 0.194 -0.0396581 0.0224 525 | } 526 | } 527 | JOINT tongue05.R 528 | { 529 | OFFSET 0.000000 0.036667 0.288650 530 | CHANNELS 3 Zrotation Xrotation Yrotation 531 | End Site 532 | { 533 | OFFSET -0.194 -0.0396581 0.0224 534 | } 535 | } 536 | } 537 | } 538 | } 539 | } 540 | JOINT __levator02.L 541 | { 542 | OFFSET 0.000000 1.479859 -0.069342 543 | CHANNELS 3 Zrotation Xrotation Yrotation 544 | JOINT levator02.L 545 | { 546 | OFFSET 0.031033 -1.270642 1.111667 547 | CHANNELS 3 Zrotation Xrotation Yrotation 548 | JOINT levator03.L 549 | { 550 | OFFSET 0.167200 -0.118366 -0.119233 551 | CHANNELS 3 Zrotation Xrotation Yrotation 552 | JOINT levator04.L 553 | { 554 | OFFSET 0.060933 -0.184367 0.003766 555 | CHANNELS 3 Zrotation Xrotation Yrotation 556 | JOINT levator05.L 557 | { 558 | OFFSET 0.017533 -0.174167 0.001434 559 | CHANNELS 3 Zrotation Xrotation Yrotation 560 | End Site 561 | { 562 | OFFSET -0.0282 -0.0835328 0.00309992 563 | } 564 | } 565 | } 566 | } 567 | } 568 | } 569 | JOINT __levator02.R 570 | { 571 | OFFSET 0.000000 1.479859 -0.069342 572 | CHANNELS 3 Zrotation Xrotation Yrotation 573 | JOINT levator02.R 574 | { 575 | OFFSET -0.031033 -1.270642 1.111667 576 | CHANNELS 3 Zrotation Xrotation Yrotation 577 | JOINT levator03.R 578 | { 579 | OFFSET -0.167200 -0.118366 -0.119233 580 | CHANNELS 3 Zrotation Xrotation Yrotation 581 | JOINT levator04.R 582 | { 583 | OFFSET -0.060933 -0.184367 0.003766 584 | CHANNELS 3 Zrotation Xrotation Yrotation 585 | JOINT levator05.R 586 | { 587 | OFFSET -0.017533 -0.174167 0.001434 588 | CHANNELS 3 Zrotation Xrotation Yrotation 589 | End Site 590 | { 591 | OFFSET 0.0282 -0.0835328 0.00309992 592 | } 593 | } 594 | } 595 | } 596 | } 597 | } 598 | JOINT __special01 599 | { 600 | OFFSET 0.000000 1.479859 -0.069342 601 | CHANNELS 3 Zrotation Xrotation Yrotation 602 | JOINT special01 603 | { 604 | OFFSET 0.000000 -1.486775 -0.630000 605 | CHANNELS 3 Zrotation Xrotation Yrotation 606 | JOINT oris04.L 607 | { 608 | OFFSET 0.000000 -0.087800 1.749500 609 | CHANNELS 3 Zrotation Xrotation Yrotation 610 | JOINT oris03.L 611 | { 612 | OFFSET 0.134267 -0.064000 -0.023067 613 | CHANNELS 3 Zrotation Xrotation Yrotation 614 | End Site 615 | { 616 | OFFSET 0.0299333 -0.0594006 -0.00363338 617 | } 618 | } 619 | } 620 | JOINT oris04.R 621 | { 622 | OFFSET 0.000000 -0.087800 1.749500 623 | CHANNELS 3 Zrotation Xrotation Yrotation 624 | JOINT oris03.R 625 | { 626 | OFFSET -0.134267 -0.064000 -0.023067 627 | CHANNELS 3 Zrotation Xrotation Yrotation 628 | End Site 629 | { 630 | OFFSET -0.0299333 -0.0594006 -0.00363338 631 | } 632 | } 633 | } 634 | JOINT oris06 635 | { 636 | OFFSET 0.000000 -0.087800 1.749500 637 | CHANNELS 3 Zrotation Xrotation Yrotation 638 | JOINT oris05 639 | { 640 | OFFSET 0.000000 -0.051367 0.006967 641 | CHANNELS 3 Zrotation Xrotation Yrotation 642 | End Site 643 | { 644 | OFFSET 0.0 -0.0644331 0.0332333 645 | } 646 | } 647 | } 648 | } 649 | } 650 | JOINT __special03 651 | { 652 | OFFSET 0.000000 1.479859 -0.069342 653 | CHANNELS 3 Zrotation Xrotation Yrotation 654 | JOINT special03 655 | { 656 | OFFSET 0.000000 -1.415601 0.190750 657 | CHANNELS 3 Zrotation Xrotation Yrotation 658 | JOINT __levator06.L 659 | { 660 | OFFSET 0.000000 0.007859 1.020917 661 | CHANNELS 3 Zrotation Xrotation Yrotation 662 | JOINT levator06.L 663 | { 664 | OFFSET 0.056567 -0.061866 -0.007633 665 | CHANNELS 3 Zrotation Xrotation Yrotation 666 | End Site 667 | { 668 | OFFSET 0.1126 0.0388665 -0.186133 669 | } 670 | } 671 | } 672 | JOINT __levator06.R 673 | { 674 | OFFSET 0.000000 0.007859 1.020917 675 | CHANNELS 3 Zrotation Xrotation Yrotation 676 | JOINT levator06.R 677 | { 678 | OFFSET -0.056567 -0.061866 -0.007633 679 | CHANNELS 3 Zrotation Xrotation Yrotation 680 | End Site 681 | { 682 | OFFSET -0.1126 0.0388665 -0.186133 683 | } 684 | } 685 | } 686 | } 687 | } 688 | JOINT special06.L 689 | { 690 | OFFSET 0.000000 1.479859 -0.069342 691 | CHANNELS 3 Zrotation Xrotation Yrotation 692 | JOINT special05.L 693 | { 694 | OFFSET 0.186867 -0.149642 0.560300 695 | CHANNELS 3 Zrotation Xrotation Yrotation 696 | JOINT eye.L 697 | { 698 | OFFSET 0.102071 -0.943371 0.246954 699 | CHANNELS 3 Zrotation Xrotation Yrotation 700 | End Site 701 | { 702 | OFFSET 0.0177666 -0.0295334 0.379779 703 | } 704 | } 705 | JOINT orbicularis03.L 706 | { 707 | OFFSET 0.102071 -0.943371 0.246954 708 | CHANNELS 3 Zrotation Xrotation Yrotation 709 | End Site 710 | { 711 | OFFSET 0.0170417 0.0883579 0.359529 712 | } 713 | } 714 | JOINT orbicularis04.L 715 | { 716 | OFFSET 0.102071 -0.943371 0.246954 717 | CHANNELS 3 Zrotation Xrotation Yrotation 718 | End Site 719 | { 720 | OFFSET 0.0180083 -0.142329 0.354171 721 | } 722 | } 723 | } 724 | } 725 | JOINT special06.R 726 | { 727 | OFFSET 0.000000 1.479859 -0.069342 728 | CHANNELS 3 Zrotation Xrotation Yrotation 729 | JOINT special05.R 730 | { 731 | OFFSET -0.186867 -0.149642 0.560300 732 | CHANNELS 3 Zrotation Xrotation Yrotation 733 | JOINT eye.R 734 | { 735 | OFFSET -0.102071 -0.943371 0.246954 736 | CHANNELS 3 Zrotation Xrotation Yrotation 737 | End Site 738 | { 739 | OFFSET -0.0177666 -0.0295334 0.379779 740 | } 741 | } 742 | JOINT orbicularis03.R 743 | { 744 | OFFSET -0.102071 -0.943371 0.246954 745 | CHANNELS 3 Zrotation Xrotation Yrotation 746 | End Site 747 | { 748 | OFFSET -0.0170417 0.0883579 0.359529 749 | } 750 | } 751 | JOINT orbicularis04.R 752 | { 753 | OFFSET -0.102071 -0.943371 0.246954 754 | CHANNELS 3 Zrotation Xrotation Yrotation 755 | End Site 756 | { 757 | OFFSET -0.0180083 -0.142329 0.354171 758 | } 759 | } 760 | } 761 | } 762 | JOINT __temporalis01.L 763 | { 764 | OFFSET 0.000000 1.479859 -0.069342 765 | CHANNELS 3 Zrotation Xrotation Yrotation 766 | JOINT temporalis01.L 767 | { 768 | OFFSET 0.604533 -1.023042 0.663167 769 | CHANNELS 3 Zrotation Xrotation Yrotation 770 | JOINT oculi02.L 771 | { 772 | OFFSET -0.081933 -0.003500 0.176233 773 | CHANNELS 3 Zrotation Xrotation Yrotation 774 | JOINT oculi01.L 775 | { 776 | OFFSET -0.202467 0.146833 0.179934 777 | CHANNELS 3 Zrotation Xrotation Yrotation 778 | End Site 779 | { 780 | OFFSET -0.1676 0.0124006 0.0413332 781 | } 782 | } 783 | } 784 | } 785 | } 786 | JOINT __temporalis01.R 787 | { 788 | OFFSET 0.000000 1.479859 -0.069342 789 | CHANNELS 3 Zrotation Xrotation Yrotation 790 | JOINT temporalis01.R 791 | { 792 | OFFSET -0.604533 -1.023042 0.663167 793 | CHANNELS 3 Zrotation Xrotation Yrotation 794 | JOINT oculi02.R 795 | { 796 | OFFSET 0.081933 -0.003500 0.176233 797 | CHANNELS 3 Zrotation Xrotation Yrotation 798 | JOINT oculi01.R 799 | { 800 | OFFSET 0.202467 0.146833 0.179934 801 | CHANNELS 3 Zrotation Xrotation Yrotation 802 | End Site 803 | { 804 | OFFSET 0.1676 0.0124006 0.0413332 805 | } 806 | } 807 | } 808 | } 809 | } 810 | JOINT __temporalis02.L 811 | { 812 | OFFSET 0.000000 1.479859 -0.069342 813 | CHANNELS 3 Zrotation Xrotation Yrotation 814 | JOINT temporalis02.L 815 | { 816 | OFFSET 0.623067 -1.246776 0.641000 817 | CHANNELS 3 Zrotation Xrotation Yrotation 818 | JOINT risorius02.L 819 | { 820 | OFFSET -0.097267 0.049901 0.177300 821 | CHANNELS 3 Zrotation Xrotation Yrotation 822 | JOINT risorius03.L 823 | { 824 | OFFSET -0.050400 -0.276733 0.060533 825 | CHANNELS 3 Zrotation Xrotation Yrotation 826 | End Site 827 | { 828 | OFFSET 0.0464 -0.197434 -0.157766 829 | } 830 | } 831 | } 832 | } 833 | } 834 | JOINT __temporalis02.R 835 | { 836 | OFFSET 0.000000 1.479859 -0.069342 837 | CHANNELS 3 Zrotation Xrotation Yrotation 838 | JOINT temporalis02.R 839 | { 840 | OFFSET -0.623067 -1.246776 0.641000 841 | CHANNELS 3 Zrotation Xrotation Yrotation 842 | JOINT risorius02.R 843 | { 844 | OFFSET 0.097267 0.049901 0.177300 845 | CHANNELS 3 Zrotation Xrotation Yrotation 846 | JOINT risorius03.R 847 | { 848 | OFFSET 0.050400 -0.276733 0.060533 849 | CHANNELS 3 Zrotation Xrotation Yrotation 850 | End Site 851 | { 852 | OFFSET -0.0464 -0.197434 -0.157766 853 | } 854 | } 855 | } 856 | } 857 | } 858 | } 859 | } 860 | } 861 | } 862 | } 863 | } 864 | } 865 | } 866 | } 867 | JOINT pelvis.L 868 | { 869 | OFFSET 0.000000 0.042200 0.779775 870 | CHANNELS 3 Zrotation Xrotation Yrotation 871 | JOINT upperleg01.L 872 | { 873 | OFFSET 1.013817 -0.080867 -0.082737 874 | CHANNELS 3 Zrotation Xrotation Yrotation 875 | JOINT upperleg02.L 876 | { 877 | OFFSET 0.010650 -0.780900 0.247546 878 | CHANNELS 3 Zrotation Xrotation Yrotation 879 | JOINT lowerleg01.L 880 | { 881 | OFFSET 0.400371 -3.128596 0.076942 882 | CHANNELS 3 Zrotation Xrotation Yrotation 883 | JOINT lowerleg02.L 884 | { 885 | OFFSET 0.190494 -2.027762 -0.073498 886 | CHANNELS 3 Zrotation Xrotation Yrotation 887 | JOINT foot.L 888 | { 889 | OFFSET 0.190494 -2.027762 -0.073498 890 | CHANNELS 3 Zrotation Xrotation Yrotation 891 | JOINT __toe1-1.L 892 | { 893 | OFFSET 0.027325 -0.300888 0.583994 894 | CHANNELS 3 Zrotation Xrotation Yrotation 895 | JOINT toe1-1.L 896 | { 897 | OFFSET -0.272733 -0.104125 0.735544 898 | CHANNELS 3 Zrotation Xrotation Yrotation 899 | JOINT toe1-2.L 900 | { 901 | OFFSET 0.021337 -0.064567 0.242679 902 | CHANNELS 3 Zrotation Xrotation Yrotation 903 | End Site 904 | { 905 | OFFSET 0.0401834 -0.0827665 0.272558 906 | } 907 | } 908 | } 909 | } 910 | JOINT __toe2-1.L 911 | { 912 | OFFSET 0.027325 -0.300888 0.583994 913 | CHANNELS 3 Zrotation Xrotation Yrotation 914 | JOINT toe2-1.L 915 | { 916 | OFFSET -0.045029 -0.129121 0.748890 917 | CHANNELS 3 Zrotation Xrotation Yrotation 918 | JOINT toe2-2.L 919 | { 920 | OFFSET 0.017700 -0.032283 0.203875 921 | CHANNELS 3 Zrotation Xrotation Yrotation 922 | JOINT toe2-3.L 923 | { 924 | OFFSET 0.006646 -0.044042 0.124838 925 | CHANNELS 3 Zrotation Xrotation Yrotation 926 | End Site 927 | { 928 | OFFSET 0.00430012 -0.0647416 0.166113 929 | } 930 | } 931 | } 932 | } 933 | } 934 | JOINT __toe3-1.L 935 | { 936 | OFFSET 0.027325 -0.300888 0.583994 937 | CHANNELS 3 Zrotation Xrotation Yrotation 938 | JOINT toe3-1.L 939 | { 940 | OFFSET 0.112262 -0.145263 0.723885 941 | CHANNELS 3 Zrotation Xrotation Yrotation 942 | JOINT toe3-2.L 943 | { 944 | OFFSET 0.016117 -0.024770 0.180971 945 | CHANNELS 3 Zrotation Xrotation Yrotation 946 | JOINT toe3-3.L 947 | { 948 | OFFSET 0.003271 -0.044146 0.120183 949 | CHANNELS 3 Zrotation Xrotation Yrotation 950 | End Site 951 | { 952 | OFFSET -0.00320411 -0.043354 0.127175 953 | } 954 | } 955 | } 956 | } 957 | } 958 | JOINT __toe4-1.L 959 | { 960 | OFFSET 0.027325 -0.300888 0.583994 961 | CHANNELS 3 Zrotation Xrotation Yrotation 962 | JOINT toe4-1.L 963 | { 964 | OFFSET 0.261421 -0.147129 0.653673 965 | CHANNELS 3 Zrotation Xrotation Yrotation 966 | JOINT toe4-2.L 967 | { 968 | OFFSET 0.016012 -0.033209 0.149108 969 | CHANNELS 3 Zrotation Xrotation Yrotation 970 | JOINT toe4-3.L 971 | { 972 | OFFSET -0.003596 -0.025008 0.113933 973 | CHANNELS 3 Zrotation Xrotation Yrotation 974 | End Site 975 | { 976 | OFFSET 0.00889158 -0.0568876 0.0969625 977 | } 978 | } 979 | } 980 | } 981 | } 982 | JOINT __toe5-1.L 983 | { 984 | OFFSET 0.027325 -0.300888 0.583994 985 | CHANNELS 3 Zrotation Xrotation Yrotation 986 | JOINT toe5-1.L 987 | { 988 | OFFSET 0.398479 -0.145787 0.587231 989 | CHANNELS 3 Zrotation Xrotation Yrotation 990 | JOINT toe5-2.L 991 | { 992 | OFFSET 0.004554 -0.026646 0.098192 993 | CHANNELS 3 Zrotation Xrotation Yrotation 994 | JOINT toe5-3.L 995 | { 996 | OFFSET -0.008646 -0.037117 0.079117 997 | CHANNELS 3 Zrotation Xrotation Yrotation 998 | End Site 999 | { 1000 | OFFSET 0.00443339 -0.0555582 0.1086 1001 | } 1002 | } 1003 | } 1004 | } 1005 | } 1006 | } 1007 | } 1008 | } 1009 | } 1010 | } 1011 | } 1012 | JOINT pelvis.R 1013 | { 1014 | OFFSET 0.000000 0.042200 0.779775 1015 | CHANNELS 3 Zrotation Xrotation Yrotation 1016 | JOINT upperleg01.R 1017 | { 1018 | OFFSET -1.013817 -0.080867 -0.082737 1019 | CHANNELS 3 Zrotation Xrotation Yrotation 1020 | JOINT upperleg02.R 1021 | { 1022 | OFFSET -0.010650 -0.780900 0.247546 1023 | CHANNELS 3 Zrotation Xrotation Yrotation 1024 | JOINT lowerleg01.R 1025 | { 1026 | OFFSET -0.400371 -3.128596 0.076942 1027 | CHANNELS 3 Zrotation Xrotation Yrotation 1028 | JOINT lowerleg02.R 1029 | { 1030 | OFFSET -0.190494 -2.027762 -0.073498 1031 | CHANNELS 3 Zrotation Xrotation Yrotation 1032 | JOINT foot.R 1033 | { 1034 | OFFSET -0.190494 -2.027762 -0.073498 1035 | CHANNELS 3 Zrotation Xrotation Yrotation 1036 | JOINT __toe1-1.R 1037 | { 1038 | OFFSET -0.027325 -0.300888 0.583994 1039 | CHANNELS 3 Zrotation Xrotation Yrotation 1040 | JOINT toe1-1.R 1041 | { 1042 | OFFSET 0.272733 -0.104125 0.735544 1043 | CHANNELS 3 Zrotation Xrotation Yrotation 1044 | JOINT toe1-2.R 1045 | { 1046 | OFFSET -0.021337 -0.064567 0.242679 1047 | CHANNELS 3 Zrotation Xrotation Yrotation 1048 | End Site 1049 | { 1050 | OFFSET -0.0401834 -0.0827665 0.272558 1051 | } 1052 | } 1053 | } 1054 | } 1055 | JOINT __toe2-1.R 1056 | { 1057 | OFFSET -0.027325 -0.300888 0.583994 1058 | CHANNELS 3 Zrotation Xrotation Yrotation 1059 | JOINT toe2-1.R 1060 | { 1061 | OFFSET 0.045029 -0.129121 0.748890 1062 | CHANNELS 3 Zrotation Xrotation Yrotation 1063 | JOINT toe2-2.R 1064 | { 1065 | OFFSET -0.017700 -0.032283 0.203875 1066 | CHANNELS 3 Zrotation Xrotation Yrotation 1067 | JOINT toe2-3.R 1068 | { 1069 | OFFSET -0.006646 -0.044042 0.124838 1070 | CHANNELS 3 Zrotation Xrotation Yrotation 1071 | End Site 1072 | { 1073 | OFFSET -0.00430012 -0.0647416 0.166113 1074 | } 1075 | } 1076 | } 1077 | } 1078 | } 1079 | JOINT __toe3-1.R 1080 | { 1081 | OFFSET -0.027325 -0.300888 0.583994 1082 | CHANNELS 3 Zrotation Xrotation Yrotation 1083 | JOINT toe3-1.R 1084 | { 1085 | OFFSET -0.112262 -0.145263 0.723885 1086 | CHANNELS 3 Zrotation Xrotation Yrotation 1087 | JOINT toe3-2.R 1088 | { 1089 | OFFSET -0.016117 -0.024770 0.180971 1090 | CHANNELS 3 Zrotation Xrotation Yrotation 1091 | JOINT toe3-3.R 1092 | { 1093 | OFFSET -0.003271 -0.044146 0.120183 1094 | CHANNELS 3 Zrotation Xrotation Yrotation 1095 | End Site 1096 | { 1097 | OFFSET 0.00320411 -0.043354 0.127175 1098 | } 1099 | } 1100 | } 1101 | } 1102 | } 1103 | JOINT __toe4-1.R 1104 | { 1105 | OFFSET -0.027325 -0.300888 0.583994 1106 | CHANNELS 3 Zrotation Xrotation Yrotation 1107 | JOINT toe4-1.R 1108 | { 1109 | OFFSET -0.261421 -0.147129 0.653673 1110 | CHANNELS 3 Zrotation Xrotation Yrotation 1111 | JOINT toe4-2.R 1112 | { 1113 | OFFSET -0.016012 -0.033209 0.149108 1114 | CHANNELS 3 Zrotation Xrotation Yrotation 1115 | JOINT toe4-3.R 1116 | { 1117 | OFFSET 0.003596 -0.025008 0.113933 1118 | CHANNELS 3 Zrotation Xrotation Yrotation 1119 | End Site 1120 | { 1121 | OFFSET -0.00889158 -0.0568876 0.0969625 1122 | } 1123 | } 1124 | } 1125 | } 1126 | } 1127 | JOINT __toe5-1.R 1128 | { 1129 | OFFSET -0.027325 -0.300888 0.583994 1130 | CHANNELS 3 Zrotation Xrotation Yrotation 1131 | JOINT toe5-1.R 1132 | { 1133 | OFFSET -0.398479 -0.145787 0.587231 1134 | CHANNELS 3 Zrotation Xrotation Yrotation 1135 | JOINT toe5-2.R 1136 | { 1137 | OFFSET -0.004554 -0.026646 0.098192 1138 | CHANNELS 3 Zrotation Xrotation Yrotation 1139 | JOINT toe5-3.R 1140 | { 1141 | OFFSET 0.008646 -0.037117 0.079117 1142 | CHANNELS 3 Zrotation Xrotation Yrotation 1143 | End Site 1144 | { 1145 | OFFSET -0.00443339 -0.0555582 0.1086 1146 | } 1147 | } 1148 | } 1149 | } 1150 | } 1151 | } 1152 | } 1153 | } 1154 | } 1155 | } 1156 | } 1157 | } 1158 | MOTION 1159 | Frames: 1 1160 | Frame Time: -1.000000 1161 | 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -35.0 -50 0.0 0.0 0.0 0.0 0.0 -10 0.0 10.0 10.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 35.0 0 0.0 0.0 0.0 0.0 0.0 35 0.0 -10.0 10.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -10.0 0 0.0 0.0 0.0 0.0 -0.0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10.0 0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1162 | -------------------------------------------------------------------------------- /MyAotudata/ORIGINAL MODEL.bvh: -------------------------------------------------------------------------------- 1 | HIERARCHY 2 | ROOT root 3 | { 4 | OFFSET 0.000000 0.517567 -0.647733 5 | CHANNELS 6 Xposition Yposition Zposition Zrotation Xrotation Yrotation 6 | JOINT spine05 7 | { 8 | OFFSET 0.000000 0.042200 0.779775 9 | CHANNELS 3 Zrotation Xrotation Yrotation 10 | JOINT spine04 11 | { 12 | OFFSET 0.000000 0.797708 -0.387333 13 | CHANNELS 3 Zrotation Xrotation Yrotation 14 | JOINT spine03 15 | { 16 | OFFSET 0.000000 0.662592 0.154175 17 | CHANNELS 3 Zrotation Xrotation Yrotation 18 | JOINT spine02 19 | { 20 | OFFSET 0.000000 0.750542 0.017317 21 | CHANNELS 3 Zrotation Xrotation Yrotation 22 | JOINT breast.L 23 | { 24 | OFFSET 0.000000 1.439192 -0.103200 25 | CHANNELS 3 Zrotation Xrotation Yrotation 26 | End Site 27 | { 28 | OFFSET 1.02097 -0.248667 1.6741 29 | } 30 | } 31 | JOINT breast.R 32 | { 33 | OFFSET 0.000000 1.439192 -0.103200 34 | CHANNELS 3 Zrotation Xrotation Yrotation 35 | End Site 36 | { 37 | OFFSET -1.02097 -0.248667 1.6741 38 | } 39 | } 40 | JOINT spine01 41 | { 42 | OFFSET 0.000000 1.439192 -0.103200 43 | CHANNELS 3 Zrotation Xrotation Yrotation 44 | JOINT __clavicle.L 45 | { 46 | OFFSET 0.000000 1.749783 0.238133 47 | CHANNELS 3 Zrotation Xrotation Yrotation 48 | JOINT clavicle.L 49 | { 50 | OFFSET 0.227362 -0.711566 0.165075 51 | CHANNELS 3 Zrotation Xrotation Yrotation 52 | JOINT shoulder01.L 53 | { 54 | OFFSET 0.763133 0.160829 0.000450 55 | CHANNELS 3 Zrotation Xrotation Yrotation 56 | JOINT upperarm01.L 57 | { 58 | OFFSET 0.709900 -0.387504 -0.023546 59 | CHANNELS 3 Zrotation Xrotation Yrotation 60 | JOINT upperarm02.L 61 | { 62 | OFFSET 0.469617 -0.541788 -0.016363 63 | CHANNELS 3 Zrotation Xrotation Yrotation 64 | JOINT lowerarm01.L 65 | { 66 | OFFSET 1.143496 -1.264158 0.024512 67 | CHANNELS 3 Zrotation Xrotation Yrotation 68 | JOINT lowerarm02.L 69 | { 70 | OFFSET 0.609827 -0.621146 0.815894 71 | CHANNELS 3 Zrotation Xrotation Yrotation 72 | JOINT wrist.L 73 | { 74 | OFFSET 0.609827 -0.621146 0.815894 75 | CHANNELS 3 Zrotation Xrotation Yrotation 76 | JOINT __finger1-1.L 77 | { 78 | OFFSET 0.107112 -0.156708 0.260654 79 | CHANNELS 3 Zrotation Xrotation Yrotation 80 | JOINT finger1-1.L 81 | { 82 | OFFSET -0.096138 0.081371 0.177996 83 | CHANNELS 3 Zrotation Xrotation Yrotation 84 | JOINT finger1-2.L 85 | { 86 | OFFSET -0.209020 -0.086808 0.209750 87 | CHANNELS 3 Zrotation Xrotation Yrotation 88 | JOINT finger1-3.L 89 | { 90 | OFFSET -0.123863 -0.139496 0.310367 91 | CHANNELS 3 Zrotation Xrotation Yrotation 92 | End Site 93 | { 94 | OFFSET -0.0550003 -0.173975 0.212975 95 | } 96 | } 97 | } 98 | } 99 | } 100 | JOINT metacarpal1.L 101 | { 102 | OFFSET 0.107112 -0.156708 0.260654 103 | CHANNELS 3 Zrotation Xrotation Yrotation 104 | JOINT finger2-1.L 105 | { 106 | OFFSET 0.170596 -0.249150 0.683021 107 | CHANNELS 3 Zrotation Xrotation Yrotation 108 | JOINT finger2-2.L 109 | { 110 | OFFSET 0.033467 -0.150733 0.207083 111 | CHANNELS 3 Zrotation Xrotation Yrotation 112 | JOINT finger2-3.L 113 | { 114 | OFFSET -0.005638 -0.162925 0.163396 115 | CHANNELS 3 Zrotation Xrotation Yrotation 116 | End Site 117 | { 118 | OFFSET -0.036675 -0.201583 0.175733 119 | } 120 | } 121 | } 122 | } 123 | } 124 | JOINT metacarpal2.L 125 | { 126 | OFFSET 0.107112 -0.156708 0.260654 127 | CHANNELS 3 Zrotation Xrotation Yrotation 128 | JOINT finger3-1.L 129 | { 130 | OFFSET 0.333233 -0.358058 0.504750 131 | CHANNELS 3 Zrotation Xrotation Yrotation 132 | JOINT finger3-2.L 133 | { 134 | OFFSET 0.072066 -0.259625 0.204521 135 | CHANNELS 3 Zrotation Xrotation Yrotation 136 | JOINT finger3-3.L 137 | { 138 | OFFSET 0.026600 -0.215121 0.171142 139 | CHANNELS 3 Zrotation Xrotation Yrotation 140 | End Site 141 | { 142 | OFFSET -0.00199604 -0.225358 0.148383 143 | } 144 | } 145 | } 146 | } 147 | } 148 | JOINT __metacarpal3.L 149 | { 150 | OFFSET 0.107112 -0.156708 0.260654 151 | CHANNELS 3 Zrotation Xrotation Yrotation 152 | JOINT metacarpal3.L 153 | { 154 | OFFSET 0.116754 -0.152017 -0.104283 155 | CHANNELS 3 Zrotation Xrotation Yrotation 156 | JOINT finger4-1.L 157 | { 158 | OFFSET 0.291812 -0.282558 0.438125 159 | CHANNELS 3 Zrotation Xrotation Yrotation 160 | JOINT finger4-2.L 161 | { 162 | OFFSET 0.092821 -0.244712 0.140671 163 | CHANNELS 3 Zrotation Xrotation Yrotation 164 | JOINT finger4-3.L 165 | { 166 | OFFSET 0.042458 -0.209796 0.125225 167 | CHANNELS 3 Zrotation Xrotation Yrotation 168 | End Site 169 | { 170 | OFFSET 0.0244298 -0.241179 0.112092 171 | } 172 | } 173 | } 174 | } 175 | } 176 | } 177 | JOINT __metacarpal4.L 178 | { 179 | OFFSET 0.107112 -0.156708 0.260654 180 | CHANNELS 3 Zrotation Xrotation Yrotation 181 | JOINT metacarpal4.L 182 | { 183 | OFFSET 0.116754 -0.152017 -0.104283 184 | CHANNELS 3 Zrotation Xrotation Yrotation 185 | JOINT finger5-1.L 186 | { 187 | OFFSET 0.306746 -0.369133 0.244533 188 | CHANNELS 3 Zrotation Xrotation Yrotation 189 | JOINT finger5-2.L 190 | { 191 | OFFSET 0.058950 -0.190654 0.074425 192 | CHANNELS 3 Zrotation Xrotation Yrotation 193 | JOINT finger5-3.L 194 | { 195 | OFFSET 0.017250 -0.144346 0.056883 196 | CHANNELS 3 Zrotation Xrotation Yrotation 197 | End Site 198 | { 199 | OFFSET 0.0265584 -0.184342 0.0690708 200 | } 201 | } 202 | } 203 | } 204 | } 205 | } 206 | } 207 | } 208 | } 209 | } 210 | } 211 | } 212 | } 213 | } 214 | JOINT __clavicle.R 215 | { 216 | OFFSET 0.000000 1.749783 0.238133 217 | CHANNELS 3 Zrotation Xrotation Yrotation 218 | JOINT clavicle.R 219 | { 220 | OFFSET -0.227362 -0.711566 0.165075 221 | CHANNELS 3 Zrotation Xrotation Yrotation 222 | JOINT shoulder01.R 223 | { 224 | OFFSET -0.763133 0.160829 0.000450 225 | CHANNELS 3 Zrotation Xrotation Yrotation 226 | JOINT upperarm01.R 227 | { 228 | OFFSET -0.709900 -0.387504 -0.023546 229 | CHANNELS 3 Zrotation Xrotation Yrotation 230 | JOINT upperarm02.R 231 | { 232 | OFFSET -0.469617 -0.541788 -0.016363 233 | CHANNELS 3 Zrotation Xrotation Yrotation 234 | JOINT lowerarm01.R 235 | { 236 | OFFSET -1.143496 -1.264158 0.024512 237 | CHANNELS 3 Zrotation Xrotation Yrotation 238 | JOINT lowerarm02.R 239 | { 240 | OFFSET -0.609827 -0.621146 0.815894 241 | CHANNELS 3 Zrotation Xrotation Yrotation 242 | JOINT wrist.R 243 | { 244 | OFFSET -0.609827 -0.621146 0.815894 245 | CHANNELS 3 Zrotation Xrotation Yrotation 246 | JOINT __finger1-1.R 247 | { 248 | OFFSET -0.107112 -0.156708 0.260654 249 | CHANNELS 3 Zrotation Xrotation Yrotation 250 | JOINT finger1-1.R 251 | { 252 | OFFSET 0.096138 0.081371 0.177996 253 | CHANNELS 3 Zrotation Xrotation Yrotation 254 | JOINT finger1-2.R 255 | { 256 | OFFSET 0.209020 -0.086808 0.209750 257 | CHANNELS 3 Zrotation Xrotation Yrotation 258 | JOINT finger1-3.R 259 | { 260 | OFFSET 0.123863 -0.139496 0.310367 261 | CHANNELS 3 Zrotation Xrotation Yrotation 262 | End Site 263 | { 264 | OFFSET 0.0550003 -0.173975 0.212975 265 | } 266 | } 267 | } 268 | } 269 | } 270 | JOINT metacarpal1.R 271 | { 272 | OFFSET -0.107112 -0.156708 0.260654 273 | CHANNELS 3 Zrotation Xrotation Yrotation 274 | JOINT finger2-1.R 275 | { 276 | OFFSET -0.170596 -0.249150 0.683021 277 | CHANNELS 3 Zrotation Xrotation Yrotation 278 | JOINT finger2-2.R 279 | { 280 | OFFSET -0.033467 -0.150733 0.207083 281 | CHANNELS 3 Zrotation Xrotation Yrotation 282 | JOINT finger2-3.R 283 | { 284 | OFFSET 0.005638 -0.162925 0.163396 285 | CHANNELS 3 Zrotation Xrotation Yrotation 286 | End Site 287 | { 288 | OFFSET 0.036675 -0.201583 0.175733 289 | } 290 | } 291 | } 292 | } 293 | } 294 | JOINT metacarpal2.R 295 | { 296 | OFFSET -0.107112 -0.156708 0.260654 297 | CHANNELS 3 Zrotation Xrotation Yrotation 298 | JOINT finger3-1.R 299 | { 300 | OFFSET -0.333233 -0.358058 0.504750 301 | CHANNELS 3 Zrotation Xrotation Yrotation 302 | JOINT finger3-2.R 303 | { 304 | OFFSET -0.072066 -0.259625 0.204521 305 | CHANNELS 3 Zrotation Xrotation Yrotation 306 | JOINT finger3-3.R 307 | { 308 | OFFSET -0.026600 -0.215121 0.171142 309 | CHANNELS 3 Zrotation Xrotation Yrotation 310 | End Site 311 | { 312 | OFFSET 0.00199604 -0.225358 0.148383 313 | } 314 | } 315 | } 316 | } 317 | } 318 | JOINT __metacarpal3.R 319 | { 320 | OFFSET -0.107112 -0.156708 0.260654 321 | CHANNELS 3 Zrotation Xrotation Yrotation 322 | JOINT metacarpal3.R 323 | { 324 | OFFSET -0.116754 -0.152017 -0.104283 325 | CHANNELS 3 Zrotation Xrotation Yrotation 326 | JOINT finger4-1.R 327 | { 328 | OFFSET -0.291812 -0.282558 0.438125 329 | CHANNELS 3 Zrotation Xrotation Yrotation 330 | JOINT finger4-2.R 331 | { 332 | OFFSET -0.092821 -0.244712 0.140671 333 | CHANNELS 3 Zrotation Xrotation Yrotation 334 | JOINT finger4-3.R 335 | { 336 | OFFSET -0.042458 -0.209796 0.125225 337 | CHANNELS 3 Zrotation Xrotation Yrotation 338 | End Site 339 | { 340 | OFFSET -0.0244298 -0.241179 0.112092 341 | } 342 | } 343 | } 344 | } 345 | } 346 | } 347 | JOINT __metacarpal4.R 348 | { 349 | OFFSET -0.107112 -0.156708 0.260654 350 | CHANNELS 3 Zrotation Xrotation Yrotation 351 | JOINT metacarpal4.R 352 | { 353 | OFFSET -0.116754 -0.152017 -0.104283 354 | CHANNELS 3 Zrotation Xrotation Yrotation 355 | JOINT finger5-1.R 356 | { 357 | OFFSET -0.306746 -0.369133 0.244533 358 | CHANNELS 3 Zrotation Xrotation Yrotation 359 | JOINT finger5-2.R 360 | { 361 | OFFSET -0.058950 -0.190654 0.074425 362 | CHANNELS 3 Zrotation Xrotation Yrotation 363 | JOINT finger5-3.R 364 | { 365 | OFFSET -0.017250 -0.144346 0.056883 366 | CHANNELS 3 Zrotation Xrotation Yrotation 367 | End Site 368 | { 369 | OFFSET -0.0265584 -0.184342 0.0690708 370 | } 371 | } 372 | } 373 | } 374 | } 375 | } 376 | } 377 | } 378 | } 379 | } 380 | } 381 | } 382 | } 383 | } 384 | JOINT neck01 385 | { 386 | OFFSET 0.000000 1.749783 0.238133 387 | CHANNELS 3 Zrotation Xrotation Yrotation 388 | JOINT neck02 389 | { 390 | OFFSET 0.000000 0.312145 0.113831 391 | CHANNELS 3 Zrotation Xrotation Yrotation 392 | JOINT neck03 393 | { 394 | OFFSET 0.000000 0.369505 0.106444 395 | CHANNELS 3 Zrotation Xrotation Yrotation 396 | JOINT head 397 | { 398 | OFFSET 0.000000 0.327050 0.171467 399 | CHANNELS 3 Zrotation Xrotation Yrotation 400 | JOINT __jaw 401 | { 402 | OFFSET 0.000000 1.479859 -0.069342 403 | CHANNELS 3 Zrotation Xrotation Yrotation 404 | JOINT jaw 405 | { 406 | OFFSET 0.000000 -1.415601 0.190750 407 | CHANNELS 3 Zrotation Xrotation Yrotation 408 | JOINT special04 409 | { 410 | OFFSET 0.000000 -0.777041 0.504983 411 | CHANNELS 3 Zrotation Xrotation Yrotation 412 | JOINT oris02 413 | { 414 | OFFSET 0.000000 0.178750 0.253875 415 | CHANNELS 3 Zrotation Xrotation Yrotation 416 | JOINT oris01 417 | { 418 | OFFSET 0.000000 0.096384 0.104392 419 | CHANNELS 3 Zrotation Xrotation Yrotation 420 | End Site 421 | { 422 | OFFSET 0.0 0.138533 0.0571666 423 | } 424 | } 425 | } 426 | JOINT oris06.L 427 | { 428 | OFFSET 0.000000 0.178750 0.253875 429 | CHANNELS 3 Zrotation Xrotation Yrotation 430 | JOINT oris07.L 431 | { 432 | OFFSET 0.123900 0.044917 0.072592 433 | CHANNELS 3 Zrotation Xrotation Yrotation 434 | End Site 435 | { 436 | OFFSET 0.0477666 0.125733 0.0310667 437 | } 438 | } 439 | } 440 | JOINT oris06.R 441 | { 442 | OFFSET 0.000000 0.178750 0.253875 443 | CHANNELS 3 Zrotation Xrotation Yrotation 444 | JOINT oris07.R 445 | { 446 | OFFSET -0.123900 0.044917 0.072592 447 | CHANNELS 3 Zrotation Xrotation Yrotation 448 | End Site 449 | { 450 | OFFSET -0.0477666 0.125733 0.0310667 451 | } 452 | } 453 | } 454 | } 455 | JOINT tongue00 456 | { 457 | OFFSET 0.000000 -0.777041 0.504983 458 | CHANNELS 3 Zrotation Xrotation Yrotation 459 | JOINT tongue01 460 | { 461 | OFFSET 0.000000 0.436792 -0.379717 462 | CHANNELS 3 Zrotation Xrotation Yrotation 463 | JOINT tongue02 464 | { 465 | OFFSET 0.000000 0.036667 0.288650 466 | CHANNELS 3 Zrotation Xrotation Yrotation 467 | JOINT tongue03 468 | { 469 | OFFSET 0.000000 -0.001984 0.202392 470 | CHANNELS 3 Zrotation Xrotation Yrotation 471 | JOINT tongue04 472 | { 473 | OFFSET 0.000000 -0.044971 0.081646 474 | CHANNELS 3 Zrotation Xrotation Yrotation 475 | End Site 476 | { 477 | OFFSET 0.0 -0.0449705 0.0816457 478 | } 479 | } 480 | JOINT tongue07.L 481 | { 482 | OFFSET 0.000000 -0.044971 0.081646 483 | CHANNELS 3 Zrotation Xrotation Yrotation 484 | End Site 485 | { 486 | OFFSET 0.114267 -0.0346708 0.00222921 487 | } 488 | } 489 | JOINT tongue07.R 490 | { 491 | OFFSET 0.000000 -0.044971 0.081646 492 | CHANNELS 3 Zrotation Xrotation Yrotation 493 | End Site 494 | { 495 | OFFSET -0.114267 -0.0346708 0.00222921 496 | } 497 | } 498 | } 499 | JOINT tongue06.L 500 | { 501 | OFFSET 0.000000 -0.001984 0.202392 502 | CHANNELS 3 Zrotation Xrotation Yrotation 503 | End Site 504 | { 505 | OFFSET 0.1617 -0.0521078 -0.0211251 506 | } 507 | } 508 | JOINT tongue06.R 509 | { 510 | OFFSET 0.000000 -0.001984 0.202392 511 | CHANNELS 3 Zrotation Xrotation Yrotation 512 | End Site 513 | { 514 | OFFSET -0.1617 -0.0521078 -0.0211251 515 | } 516 | } 517 | } 518 | JOINT tongue05.L 519 | { 520 | OFFSET 0.000000 0.036667 0.288650 521 | CHANNELS 3 Zrotation Xrotation Yrotation 522 | End Site 523 | { 524 | OFFSET 0.194 -0.0396581 0.0224 525 | } 526 | } 527 | JOINT tongue05.R 528 | { 529 | OFFSET 0.000000 0.036667 0.288650 530 | CHANNELS 3 Zrotation Xrotation Yrotation 531 | End Site 532 | { 533 | OFFSET -0.194 -0.0396581 0.0224 534 | } 535 | } 536 | } 537 | } 538 | } 539 | } 540 | JOINT __levator02.L 541 | { 542 | OFFSET 0.000000 1.479859 -0.069342 543 | CHANNELS 3 Zrotation Xrotation Yrotation 544 | JOINT levator02.L 545 | { 546 | OFFSET 0.031033 -1.270642 1.111667 547 | CHANNELS 3 Zrotation Xrotation Yrotation 548 | JOINT levator03.L 549 | { 550 | OFFSET 0.167200 -0.118366 -0.119233 551 | CHANNELS 3 Zrotation Xrotation Yrotation 552 | JOINT levator04.L 553 | { 554 | OFFSET 0.060933 -0.184367 0.003766 555 | CHANNELS 3 Zrotation Xrotation Yrotation 556 | JOINT levator05.L 557 | { 558 | OFFSET 0.017533 -0.174167 0.001434 559 | CHANNELS 3 Zrotation Xrotation Yrotation 560 | End Site 561 | { 562 | OFFSET -0.0282 -0.0835328 0.00309992 563 | } 564 | } 565 | } 566 | } 567 | } 568 | } 569 | JOINT __levator02.R 570 | { 571 | OFFSET 0.000000 1.479859 -0.069342 572 | CHANNELS 3 Zrotation Xrotation Yrotation 573 | JOINT levator02.R 574 | { 575 | OFFSET -0.031033 -1.270642 1.111667 576 | CHANNELS 3 Zrotation Xrotation Yrotation 577 | JOINT levator03.R 578 | { 579 | OFFSET -0.167200 -0.118366 -0.119233 580 | CHANNELS 3 Zrotation Xrotation Yrotation 581 | JOINT levator04.R 582 | { 583 | OFFSET -0.060933 -0.184367 0.003766 584 | CHANNELS 3 Zrotation Xrotation Yrotation 585 | JOINT levator05.R 586 | { 587 | OFFSET -0.017533 -0.174167 0.001434 588 | CHANNELS 3 Zrotation Xrotation Yrotation 589 | End Site 590 | { 591 | OFFSET 0.0282 -0.0835328 0.00309992 592 | } 593 | } 594 | } 595 | } 596 | } 597 | } 598 | JOINT __special01 599 | { 600 | OFFSET 0.000000 1.479859 -0.069342 601 | CHANNELS 3 Zrotation Xrotation Yrotation 602 | JOINT special01 603 | { 604 | OFFSET 0.000000 -1.486775 -0.630000 605 | CHANNELS 3 Zrotation Xrotation Yrotation 606 | JOINT oris04.L 607 | { 608 | OFFSET 0.000000 -0.087800 1.749500 609 | CHANNELS 3 Zrotation Xrotation Yrotation 610 | JOINT oris03.L 611 | { 612 | OFFSET 0.134267 -0.064000 -0.023067 613 | CHANNELS 3 Zrotation Xrotation Yrotation 614 | End Site 615 | { 616 | OFFSET 0.0299333 -0.0594006 -0.00363338 617 | } 618 | } 619 | } 620 | JOINT oris04.R 621 | { 622 | OFFSET 0.000000 -0.087800 1.749500 623 | CHANNELS 3 Zrotation Xrotation Yrotation 624 | JOINT oris03.R 625 | { 626 | OFFSET -0.134267 -0.064000 -0.023067 627 | CHANNELS 3 Zrotation Xrotation Yrotation 628 | End Site 629 | { 630 | OFFSET -0.0299333 -0.0594006 -0.00363338 631 | } 632 | } 633 | } 634 | JOINT oris06 635 | { 636 | OFFSET 0.000000 -0.087800 1.749500 637 | CHANNELS 3 Zrotation Xrotation Yrotation 638 | JOINT oris05 639 | { 640 | OFFSET 0.000000 -0.051367 0.006967 641 | CHANNELS 3 Zrotation Xrotation Yrotation 642 | End Site 643 | { 644 | OFFSET 0.0 -0.0644331 0.0332333 645 | } 646 | } 647 | } 648 | } 649 | } 650 | JOINT __special03 651 | { 652 | OFFSET 0.000000 1.479859 -0.069342 653 | CHANNELS 3 Zrotation Xrotation Yrotation 654 | JOINT special03 655 | { 656 | OFFSET 0.000000 -1.415601 0.190750 657 | CHANNELS 3 Zrotation Xrotation Yrotation 658 | JOINT __levator06.L 659 | { 660 | OFFSET 0.000000 0.007859 1.020917 661 | CHANNELS 3 Zrotation Xrotation Yrotation 662 | JOINT levator06.L 663 | { 664 | OFFSET 0.056567 -0.061866 -0.007633 665 | CHANNELS 3 Zrotation Xrotation Yrotation 666 | End Site 667 | { 668 | OFFSET 0.1126 0.0388665 -0.186133 669 | } 670 | } 671 | } 672 | JOINT __levator06.R 673 | { 674 | OFFSET 0.000000 0.007859 1.020917 675 | CHANNELS 3 Zrotation Xrotation Yrotation 676 | JOINT levator06.R 677 | { 678 | OFFSET -0.056567 -0.061866 -0.007633 679 | CHANNELS 3 Zrotation Xrotation Yrotation 680 | End Site 681 | { 682 | OFFSET -0.1126 0.0388665 -0.186133 683 | } 684 | } 685 | } 686 | } 687 | } 688 | JOINT special06.L 689 | { 690 | OFFSET 0.000000 1.479859 -0.069342 691 | CHANNELS 3 Zrotation Xrotation Yrotation 692 | JOINT special05.L 693 | { 694 | OFFSET 0.186867 -0.149642 0.560300 695 | CHANNELS 3 Zrotation Xrotation Yrotation 696 | JOINT eye.L 697 | { 698 | OFFSET 0.102071 -0.943371 0.246954 699 | CHANNELS 3 Zrotation Xrotation Yrotation 700 | End Site 701 | { 702 | OFFSET 0.0177666 -0.0295334 0.379779 703 | } 704 | } 705 | JOINT orbicularis03.L 706 | { 707 | OFFSET 0.102071 -0.943371 0.246954 708 | CHANNELS 3 Zrotation Xrotation Yrotation 709 | End Site 710 | { 711 | OFFSET 0.0170417 0.0883579 0.359529 712 | } 713 | } 714 | JOINT orbicularis04.L 715 | { 716 | OFFSET 0.102071 -0.943371 0.246954 717 | CHANNELS 3 Zrotation Xrotation Yrotation 718 | End Site 719 | { 720 | OFFSET 0.0180083 -0.142329 0.354171 721 | } 722 | } 723 | } 724 | } 725 | JOINT special06.R 726 | { 727 | OFFSET 0.000000 1.479859 -0.069342 728 | CHANNELS 3 Zrotation Xrotation Yrotation 729 | JOINT special05.R 730 | { 731 | OFFSET -0.186867 -0.149642 0.560300 732 | CHANNELS 3 Zrotation Xrotation Yrotation 733 | JOINT eye.R 734 | { 735 | OFFSET -0.102071 -0.943371 0.246954 736 | CHANNELS 3 Zrotation Xrotation Yrotation 737 | End Site 738 | { 739 | OFFSET -0.0177666 -0.0295334 0.379779 740 | } 741 | } 742 | JOINT orbicularis03.R 743 | { 744 | OFFSET -0.102071 -0.943371 0.246954 745 | CHANNELS 3 Zrotation Xrotation Yrotation 746 | End Site 747 | { 748 | OFFSET -0.0170417 0.0883579 0.359529 749 | } 750 | } 751 | JOINT orbicularis04.R 752 | { 753 | OFFSET -0.102071 -0.943371 0.246954 754 | CHANNELS 3 Zrotation Xrotation Yrotation 755 | End Site 756 | { 757 | OFFSET -0.0180083 -0.142329 0.354171 758 | } 759 | } 760 | } 761 | } 762 | JOINT __temporalis01.L 763 | { 764 | OFFSET 0.000000 1.479859 -0.069342 765 | CHANNELS 3 Zrotation Xrotation Yrotation 766 | JOINT temporalis01.L 767 | { 768 | OFFSET 0.604533 -1.023042 0.663167 769 | CHANNELS 3 Zrotation Xrotation Yrotation 770 | JOINT oculi02.L 771 | { 772 | OFFSET -0.081933 -0.003500 0.176233 773 | CHANNELS 3 Zrotation Xrotation Yrotation 774 | JOINT oculi01.L 775 | { 776 | OFFSET -0.202467 0.146833 0.179934 777 | CHANNELS 3 Zrotation Xrotation Yrotation 778 | End Site 779 | { 780 | OFFSET -0.1676 0.0124006 0.0413332 781 | } 782 | } 783 | } 784 | } 785 | } 786 | JOINT __temporalis01.R 787 | { 788 | OFFSET 0.000000 1.479859 -0.069342 789 | CHANNELS 3 Zrotation Xrotation Yrotation 790 | JOINT temporalis01.R 791 | { 792 | OFFSET -0.604533 -1.023042 0.663167 793 | CHANNELS 3 Zrotation Xrotation Yrotation 794 | JOINT oculi02.R 795 | { 796 | OFFSET 0.081933 -0.003500 0.176233 797 | CHANNELS 3 Zrotation Xrotation Yrotation 798 | JOINT oculi01.R 799 | { 800 | OFFSET 0.202467 0.146833 0.179934 801 | CHANNELS 3 Zrotation Xrotation Yrotation 802 | End Site 803 | { 804 | OFFSET 0.1676 0.0124006 0.0413332 805 | } 806 | } 807 | } 808 | } 809 | } 810 | JOINT __temporalis02.L 811 | { 812 | OFFSET 0.000000 1.479859 -0.069342 813 | CHANNELS 3 Zrotation Xrotation Yrotation 814 | JOINT temporalis02.L 815 | { 816 | OFFSET 0.623067 -1.246776 0.641000 817 | CHANNELS 3 Zrotation Xrotation Yrotation 818 | JOINT risorius02.L 819 | { 820 | OFFSET -0.097267 0.049901 0.177300 821 | CHANNELS 3 Zrotation Xrotation Yrotation 822 | JOINT risorius03.L 823 | { 824 | OFFSET -0.050400 -0.276733 0.060533 825 | CHANNELS 3 Zrotation Xrotation Yrotation 826 | End Site 827 | { 828 | OFFSET 0.0464 -0.197434 -0.157766 829 | } 830 | } 831 | } 832 | } 833 | } 834 | JOINT __temporalis02.R 835 | { 836 | OFFSET 0.000000 1.479859 -0.069342 837 | CHANNELS 3 Zrotation Xrotation Yrotation 838 | JOINT temporalis02.R 839 | { 840 | OFFSET -0.623067 -1.246776 0.641000 841 | CHANNELS 3 Zrotation Xrotation Yrotation 842 | JOINT risorius02.R 843 | { 844 | OFFSET 0.097267 0.049901 0.177300 845 | CHANNELS 3 Zrotation Xrotation Yrotation 846 | JOINT risorius03.R 847 | { 848 | OFFSET 0.050400 -0.276733 0.060533 849 | CHANNELS 3 Zrotation Xrotation Yrotation 850 | End Site 851 | { 852 | OFFSET -0.0464 -0.197434 -0.157766 853 | } 854 | } 855 | } 856 | } 857 | } 858 | } 859 | } 860 | } 861 | } 862 | } 863 | } 864 | } 865 | } 866 | } 867 | JOINT pelvis.L 868 | { 869 | OFFSET 0.000000 0.042200 0.779775 870 | CHANNELS 3 Zrotation Xrotation Yrotation 871 | JOINT upperleg01.L 872 | { 873 | OFFSET 1.013817 -0.080867 -0.082737 874 | CHANNELS 3 Zrotation Xrotation Yrotation 875 | JOINT upperleg02.L 876 | { 877 | OFFSET 0.010650 -0.780900 0.247546 878 | CHANNELS 3 Zrotation Xrotation Yrotation 879 | JOINT lowerleg01.L 880 | { 881 | OFFSET 0.400371 -3.128596 0.076942 882 | CHANNELS 3 Zrotation Xrotation Yrotation 883 | JOINT lowerleg02.L 884 | { 885 | OFFSET 0.190494 -2.027762 -0.073498 886 | CHANNELS 3 Zrotation Xrotation Yrotation 887 | JOINT foot.L 888 | { 889 | OFFSET 0.190494 -2.027762 -0.073498 890 | CHANNELS 3 Zrotation Xrotation Yrotation 891 | JOINT __toe1-1.L 892 | { 893 | OFFSET 0.027325 -0.300888 0.583994 894 | CHANNELS 3 Zrotation Xrotation Yrotation 895 | JOINT toe1-1.L 896 | { 897 | OFFSET -0.272733 -0.104125 0.735544 898 | CHANNELS 3 Zrotation Xrotation Yrotation 899 | JOINT toe1-2.L 900 | { 901 | OFFSET 0.021337 -0.064567 0.242679 902 | CHANNELS 3 Zrotation Xrotation Yrotation 903 | End Site 904 | { 905 | OFFSET 0.0401834 -0.0827665 0.272558 906 | } 907 | } 908 | } 909 | } 910 | JOINT __toe2-1.L 911 | { 912 | OFFSET 0.027325 -0.300888 0.583994 913 | CHANNELS 3 Zrotation Xrotation Yrotation 914 | JOINT toe2-1.L 915 | { 916 | OFFSET -0.045029 -0.129121 0.748890 917 | CHANNELS 3 Zrotation Xrotation Yrotation 918 | JOINT toe2-2.L 919 | { 920 | OFFSET 0.017700 -0.032283 0.203875 921 | CHANNELS 3 Zrotation Xrotation Yrotation 922 | JOINT toe2-3.L 923 | { 924 | OFFSET 0.006646 -0.044042 0.124838 925 | CHANNELS 3 Zrotation Xrotation Yrotation 926 | End Site 927 | { 928 | OFFSET 0.00430012 -0.0647416 0.166113 929 | } 930 | } 931 | } 932 | } 933 | } 934 | JOINT __toe3-1.L 935 | { 936 | OFFSET 0.027325 -0.300888 0.583994 937 | CHANNELS 3 Zrotation Xrotation Yrotation 938 | JOINT toe3-1.L 939 | { 940 | OFFSET 0.112262 -0.145263 0.723885 941 | CHANNELS 3 Zrotation Xrotation Yrotation 942 | JOINT toe3-2.L 943 | { 944 | OFFSET 0.016117 -0.024770 0.180971 945 | CHANNELS 3 Zrotation Xrotation Yrotation 946 | JOINT toe3-3.L 947 | { 948 | OFFSET 0.003271 -0.044146 0.120183 949 | CHANNELS 3 Zrotation Xrotation Yrotation 950 | End Site 951 | { 952 | OFFSET -0.00320411 -0.043354 0.127175 953 | } 954 | } 955 | } 956 | } 957 | } 958 | JOINT __toe4-1.L 959 | { 960 | OFFSET 0.027325 -0.300888 0.583994 961 | CHANNELS 3 Zrotation Xrotation Yrotation 962 | JOINT toe4-1.L 963 | { 964 | OFFSET 0.261421 -0.147129 0.653673 965 | CHANNELS 3 Zrotation Xrotation Yrotation 966 | JOINT toe4-2.L 967 | { 968 | OFFSET 0.016012 -0.033209 0.149108 969 | CHANNELS 3 Zrotation Xrotation Yrotation 970 | JOINT toe4-3.L 971 | { 972 | OFFSET -0.003596 -0.025008 0.113933 973 | CHANNELS 3 Zrotation Xrotation Yrotation 974 | End Site 975 | { 976 | OFFSET 0.00889158 -0.0568876 0.0969625 977 | } 978 | } 979 | } 980 | } 981 | } 982 | JOINT __toe5-1.L 983 | { 984 | OFFSET 0.027325 -0.300888 0.583994 985 | CHANNELS 3 Zrotation Xrotation Yrotation 986 | JOINT toe5-1.L 987 | { 988 | OFFSET 0.398479 -0.145787 0.587231 989 | CHANNELS 3 Zrotation Xrotation Yrotation 990 | JOINT toe5-2.L 991 | { 992 | OFFSET 0.004554 -0.026646 0.098192 993 | CHANNELS 3 Zrotation Xrotation Yrotation 994 | JOINT toe5-3.L 995 | { 996 | OFFSET -0.008646 -0.037117 0.079117 997 | CHANNELS 3 Zrotation Xrotation Yrotation 998 | End Site 999 | { 1000 | OFFSET 0.00443339 -0.0555582 0.1086 1001 | } 1002 | } 1003 | } 1004 | } 1005 | } 1006 | } 1007 | } 1008 | } 1009 | } 1010 | } 1011 | } 1012 | JOINT pelvis.R 1013 | { 1014 | OFFSET 0.000000 0.042200 0.779775 1015 | CHANNELS 3 Zrotation Xrotation Yrotation 1016 | JOINT upperleg01.R 1017 | { 1018 | OFFSET -1.013817 -0.080867 -0.082737 1019 | CHANNELS 3 Zrotation Xrotation Yrotation 1020 | JOINT upperleg02.R 1021 | { 1022 | OFFSET -0.010650 -0.780900 0.247546 1023 | CHANNELS 3 Zrotation Xrotation Yrotation 1024 | JOINT lowerleg01.R 1025 | { 1026 | OFFSET -0.400371 -3.128596 0.076942 1027 | CHANNELS 3 Zrotation Xrotation Yrotation 1028 | JOINT lowerleg02.R 1029 | { 1030 | OFFSET -0.190494 -2.027762 -0.073498 1031 | CHANNELS 3 Zrotation Xrotation Yrotation 1032 | JOINT foot.R 1033 | { 1034 | OFFSET -0.190494 -2.027762 -0.073498 1035 | CHANNELS 3 Zrotation Xrotation Yrotation 1036 | JOINT __toe1-1.R 1037 | { 1038 | OFFSET -0.027325 -0.300888 0.583994 1039 | CHANNELS 3 Zrotation Xrotation Yrotation 1040 | JOINT toe1-1.R 1041 | { 1042 | OFFSET 0.272733 -0.104125 0.735544 1043 | CHANNELS 3 Zrotation Xrotation Yrotation 1044 | JOINT toe1-2.R 1045 | { 1046 | OFFSET -0.021337 -0.064567 0.242679 1047 | CHANNELS 3 Zrotation Xrotation Yrotation 1048 | End Site 1049 | { 1050 | OFFSET -0.0401834 -0.0827665 0.272558 1051 | } 1052 | } 1053 | } 1054 | } 1055 | JOINT __toe2-1.R 1056 | { 1057 | OFFSET -0.027325 -0.300888 0.583994 1058 | CHANNELS 3 Zrotation Xrotation Yrotation 1059 | JOINT toe2-1.R 1060 | { 1061 | OFFSET 0.045029 -0.129121 0.748890 1062 | CHANNELS 3 Zrotation Xrotation Yrotation 1063 | JOINT toe2-2.R 1064 | { 1065 | OFFSET -0.017700 -0.032283 0.203875 1066 | CHANNELS 3 Zrotation Xrotation Yrotation 1067 | JOINT toe2-3.R 1068 | { 1069 | OFFSET -0.006646 -0.044042 0.124838 1070 | CHANNELS 3 Zrotation Xrotation Yrotation 1071 | End Site 1072 | { 1073 | OFFSET -0.00430012 -0.0647416 0.166113 1074 | } 1075 | } 1076 | } 1077 | } 1078 | } 1079 | JOINT __toe3-1.R 1080 | { 1081 | OFFSET -0.027325 -0.300888 0.583994 1082 | CHANNELS 3 Zrotation Xrotation Yrotation 1083 | JOINT toe3-1.R 1084 | { 1085 | OFFSET -0.112262 -0.145263 0.723885 1086 | CHANNELS 3 Zrotation Xrotation Yrotation 1087 | JOINT toe3-2.R 1088 | { 1089 | OFFSET -0.016117 -0.024770 0.180971 1090 | CHANNELS 3 Zrotation Xrotation Yrotation 1091 | JOINT toe3-3.R 1092 | { 1093 | OFFSET -0.003271 -0.044146 0.120183 1094 | CHANNELS 3 Zrotation Xrotation Yrotation 1095 | End Site 1096 | { 1097 | OFFSET 0.00320411 -0.043354 0.127175 1098 | } 1099 | } 1100 | } 1101 | } 1102 | } 1103 | JOINT __toe4-1.R 1104 | { 1105 | OFFSET -0.027325 -0.300888 0.583994 1106 | CHANNELS 3 Zrotation Xrotation Yrotation 1107 | JOINT toe4-1.R 1108 | { 1109 | OFFSET -0.261421 -0.147129 0.653673 1110 | CHANNELS 3 Zrotation Xrotation Yrotation 1111 | JOINT toe4-2.R 1112 | { 1113 | OFFSET -0.016012 -0.033209 0.149108 1114 | CHANNELS 3 Zrotation Xrotation Yrotation 1115 | JOINT toe4-3.R 1116 | { 1117 | OFFSET 0.003596 -0.025008 0.113933 1118 | CHANNELS 3 Zrotation Xrotation Yrotation 1119 | End Site 1120 | { 1121 | OFFSET -0.00889158 -0.0568876 0.0969625 1122 | } 1123 | } 1124 | } 1125 | } 1126 | } 1127 | JOINT __toe5-1.R 1128 | { 1129 | OFFSET -0.027325 -0.300888 0.583994 1130 | CHANNELS 3 Zrotation Xrotation Yrotation 1131 | JOINT toe5-1.R 1132 | { 1133 | OFFSET -0.398479 -0.145787 0.587231 1134 | CHANNELS 3 Zrotation Xrotation Yrotation 1135 | JOINT toe5-2.R 1136 | { 1137 | OFFSET -0.004554 -0.026646 0.098192 1138 | CHANNELS 3 Zrotation Xrotation Yrotation 1139 | JOINT toe5-3.R 1140 | { 1141 | OFFSET 0.008646 -0.037117 0.079117 1142 | CHANNELS 3 Zrotation Xrotation Yrotation 1143 | End Site 1144 | { 1145 | OFFSET -0.00443339 -0.0555582 0.1086 1146 | } 1147 | } 1148 | } 1149 | } 1150 | } 1151 | } 1152 | } 1153 | } 1154 | } 1155 | } 1156 | } 1157 | } 1158 | MOTION 1159 | Frames: 1 1160 | Frame Time: -1.000000 1161 | 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -35.0 0.0 0.0 0.0 0.0 0.0 0.0 35.0 0.0 10.0 10.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 35.0 0.0 0.0 0.0 0.0 0.0 0.0 35.0 0.0 -10.0 10.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -10.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1162 | -------------------------------------------------------------------------------- /src/7_AotuHumanPoseRegistration.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python2.7 2 | # -*- coding: utf-8 -*- 3 | 4 | import gui3d 5 | import mh 6 | import gui 7 | from core import G 8 | import OpenGL 9 | OpenGL.ERROR_CHECKING = G.args.get('debugopengl', False) 10 | OpenGL.ERROR_LOGGING = G.args.get('debugopengl', False) 11 | OpenGL.FULL_LOGGING = G.args.get('fullloggingopengl', False) 12 | OpenGL.ERROR_ON_COPY = True 13 | from OpenGL.GL import * 14 | from OpenGL.GLU import * 15 | from OpenGL.GL.framebufferobjects import * 16 | from OpenGL.GL.ARB.transpose_matrix import * 17 | from OpenGL.GL.ARB.multisample import * 18 | from OpenGL.GL.ARB.texture_multisample import * 19 | import cv2 20 | import math 21 | import numpy as np 22 | import log 23 | import filechooser as fc 24 | import animation 25 | import bvh 26 | import os 27 | import image_qt 28 | import getpath 29 | import skeleton 30 | import filecache 31 | import sys 32 | import time 33 | import os.path 34 | import glmodule 35 | import findcontours 36 | import getcontourspoint 37 | import normalize 38 | import proxychooser 39 | 40 | fileResult=os.path.abspath(os.path.join(os.path.dirname('7_AotuHumanPoseRegistration.py'),os.path.pardir))+'/makehuman/data/MyAotudata/' 41 | filepath1=os.path.abspath(os.path.join(os.path.dirname('7_AotuHumanPoseRegistration.py'),os.path.pardir))+'/makehuman/data/MyAotudata/ORIGINAL MODEL.bvh' 42 | fileout=os.path.abspath(os.path.join(os.path.dirname('7_AotuHumanPoseRegistration.py'),os.path.pardir))+'/makehuman/data/MyAotudata/OUTPUT MODEL.bvh' 43 | filepicbvh=os.path.abspath(os.path.join(os.path.dirname('7_AotuHumanPoseRegistration.py'),os.path.pardir))+'/makehuman/data/MyAotudata/MyPicture.bvh' 44 | filepicture=os.path.abspath(os.path.join(os.path.dirname('7_AotuHumanPoseRegistration.py'),os.path.pardir))+'/makehuman/data/MyAotudata/picture.png' 45 | sys.path.append(fileResult) 46 | 47 | if os.path.exists(fileResult): 48 | pass 49 | else: 50 | os.mkdir(fileResult) 51 | 52 | class AotuPose1(gui3d.Action): 53 | def __init__(self, name, library, before, after): 54 | super(AotuPose1, self).__init__(name) 55 | self.library = library 56 | self.before = before 57 | self.after = after 58 | 59 | def do(self): 60 | self.library.loadPose(self.after) 61 | return True 62 | 63 | def undo(self): 64 | self.library.loadPose(self.before) 65 | return True 66 | 67 | 68 | class PoseLibraryAotu1TaskView(gui3d.TaskView, filecache.MetadataCacher): 69 | 70 | def __init__(self, category): 71 | gui3d.TaskView.__init__(self, category, 'AutoPose') 72 | #super(PoseLibraryAotu1TaskView, self).__init__(category, 'clothes', multiProxy = True, tagFilter = True) 73 | filecache.MetadataCacher.__init__(self, ['bvh'], 'pose_filecache.mhc') 74 | self.cache_format_version = '1c' # Bump cacher version for updated format of pose metadata 75 | box1 = self.addLeftWidget(gui.GroupBox('ImageMatch')) 76 | self.aButtonC1 = box1.addWidget(gui.Button('L.UpArm')) 77 | self.aButtonC2 = box1.addWidget(gui.Button('L.LowArm')) 78 | self.aButtonC3 = box1.addWidget(gui.Button('R.UpArm')) 79 | self.aButtonC4= box1.addWidget(gui.Button('R.LowArm')) 80 | self.aButtonC5 = box1.addWidget(gui.Button('L.UpLeg')) 81 | self.aButtonC6 = box1.addWidget(gui.Button('L.LowLeg')) 82 | self.aButtonC7 = box1.addWidget(gui.Button('R.UpLeg')) 83 | self.aButtonC8 = box1.addWidget(gui.Button('R.LowLeg')) 84 | box = self.addLeftWidget(gui.GroupBox('AngleRotate')) 85 | self.aSliderLabel = box.addWidget(gui.TextView('Value is initialize=0.5')) 86 | self.InitButton = box.addWidget(gui.Button('Init Pose')) 87 | @self.InitButton.mhEvent 88 | def onClicked(event): 89 | chushihua() 90 | bvhanniu() 91 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, fileout)) 92 | #gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, filepath1)) 93 | #anim = self.loadBvh(fileout, convertFromZUp="auto") 94 | log.message("Init Pose.") 95 | self.aButton = box.addWidget(gui.Button('BVH')) 96 | # self.aButton1 = box.addWidget(gui.Button('Save RGBImage')) 97 | self.aButton2 = box.addWidget(gui.Button('Save Image')) 98 | #self.aButton3 = box.addWidget(gui.Button('AotuPoseImage')) 99 | self.aSliderLabel = box.addWidget(gui.TextView('****************************')) 100 | a1=[0] 101 | a2=[0] 102 | a3=[0] 103 | a4=[0] 104 | a5=[0] 105 | a6=[0] 106 | a7=[0] 107 | a8=[0] 108 | deltvalue1=[100] 109 | deltvalue2=[100] 110 | deltvalue3=[100] 111 | deltvalue4=[100] 112 | deltvalue5=[100] 113 | deltvalue6=[100] 114 | deltvalue7=[100] 115 | deltvalue8=[100] 116 | deltva1=[0] 117 | deltva2=[0] 118 | deltva3=[0] 119 | deltva4=[0] 120 | deltva5=[0] 121 | deltva6=[0] 122 | deltva7=[0] 123 | deltva8=[0] 124 | self.aSlider = box.addWidget(gui.Slider(value=0.5, label=['upperarm01.L',' %.3f'])) 125 | @self.aSlider.mhEvent 126 | def onChange(value): 127 | self.aSliderLabel.setTextFormat('AngleRotate is %.1f', (value-0.5)*100) 128 | a1[0]=(value-0.5)*100 129 | bvhanniu() 130 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, fileout)) 131 | anim = self.loadBvh(fileout, convertFromZUp="auto") 132 | 133 | log.message(str(a1[0])) 134 | self.aSlider= box.addWidget(gui.Slider(value=0.5, label=['lowerarm01.L',' %.3f'])) 135 | # self.aSliderLabel = box.addWidget(gui.TextView('Value is initialize=0.5')) 136 | @self.aSlider.mhEvent 137 | def onChange(value): 138 | self.aSliderLabel.setTextFormat('AngleRotate is %.1f', (value-0.5)*100) 139 | #global a2 140 | a2[0]=(value-0.5)*100 141 | bvhanniu() 142 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, fileout)) 143 | anim = self.loadBvh(fileout, convertFromZUp="auto") 144 | #return a2 145 | 146 | # laL=onChange() 147 | self.aSlider= box.addWidget(gui.Slider(value=0.5, label=['upperarm01.R',' %.3f'])) 148 | # self.aSliderLabel = box.addWidget(gui.TextView('Value is initialize=0.5')) 149 | @self.aSlider.mhEvent 150 | def onChange(value): 151 | self.aSliderLabel.setTextFormat('AngleRotate is %.1f', (value-0.5)*100) 152 | #global a3 153 | a3[0]=(value-0.5)*100 154 | bvhanniu() 155 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, fileout)) 156 | anim = self.loadBvh(fileout, convertFromZUp="auto") 157 | #return a3 158 | 159 | # ulL=onChange(value) 160 | self.aSlider = box.addWidget(gui.Slider(value=0.5, label=['lowerarm01.R',' %.3f'])) 161 | #self.aSliderLabel = box.addWidget(gui.TextView('Value is initialize=0.5')) 162 | @self.aSlider.mhEvent 163 | def onChange(value): 164 | self.aSliderLabel.setTextFormat('AngleRotate is %.1f', (value-0.5)*100) 165 | # global a4 166 | a4[0]=(value-0.5)*100 167 | bvhanniu() 168 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, fileout)) 169 | anim = self.loadBvh(fileout, convertFromZUp="auto") 170 | #return a4 171 | 172 | # llL=onChange(value) 173 | self.aSlider = box.addWidget(gui.Slider(value=0.5, label=['upperleg01.L',' %.3f'])) 174 | # self.aSliderLabel = box.addWidget(gui.TextView('Value is initialize=0.5')) 175 | @self.aSlider.mhEvent 176 | def onChange(value): 177 | self.aSliderLabel.setTextFormat('AngleRotate is %.1f', (value-0.5)*100) 178 | #global a5 179 | a5[0]=(value-0.5)*100 180 | bvhanniu() 181 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, fileout)) 182 | anim = self.loadBvh(fileout, convertFromZUp="auto") 183 | #return a5 184 | 185 | #uaR=onChange(value) 186 | self.aSlider = box.addWidget(gui.Slider(value=0.0, label=['lowerleg01.L',' %.3f'])) 187 | # self.aSliderLabel = box.addWidget(gui.TextView('Value is initialize=0.5')) 188 | @self.aSlider.mhEvent 189 | def onChange(value): 190 | self.aSliderLabel.setTextFormat('AngleRotate is %.1f', (value-0.0)*100) 191 | # global a6 192 | a6[0]=(value-0.0)*100 193 | bvhanniu() 194 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, fileout)) 195 | anim = self.loadBvh(fileout, convertFromZUp="auto") 196 | #return a6 197 | 198 | #laR=onChange(value) 199 | self.aSlider = box.addWidget(gui.Slider(value=0.5, label=['upperleg01.R',' %.3f'])) 200 | # self.aSliderLabel = box.addWidget(gui.TextView('Value is initialize=0.5')) 201 | @self.aSlider.mhEvent 202 | def onChange(value): 203 | self.aSliderLabel.setTextFormat('AngleRotate is %.1f', (value-0.5)*100) 204 | # global a7 205 | a7[0]=(value-0.5)*100 206 | bvhanniu() 207 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, fileout)) 208 | anim = self.loadBvh(fileout, convertFromZUp="auto") 209 | # return a7; 210 | 211 | #ulR=onChange(value) 212 | self.aSlider = box.addWidget(gui.Slider(value=0.0, label=['lowerleg01.R',' %.3f'])) 213 | # self.aSliderLabel = box.addWidget(gui.TextView('Value is initialize=0.5')) 214 | @self.aSlider.mhEvent 215 | def onChange(value): 216 | self.aSliderLabel.setTextFormat('AngleRotate is %.1f', (value-0.0)*100) 217 | # global a8 218 | a8[0]=(value-0.0)*100 219 | bvhanniu() 220 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, fileout)) 221 | anim = self.loadBvh(fileout, convertFromZUp="auto") 222 | #return a8 223 | 224 | #llR=onChange(value) 225 | # We make the first one selected 226 | self.human = G.app.selectedHuman 227 | self.currentPose = None 228 | 229 | self.paths = [mh.getDataPath('Mydata'), mh.getSysDataPath('Mydata')] 230 | 231 | self.filechooser = self.addRightWidget(fc.IconListFileChooser(self.paths, ['bvh'], 'thumb', mh.getSysDataPath('poses/notfound.thumb'), name='Pose', noneItem=True)) 232 | self.filechooser.setIconSize(50,50) 233 | self.filechooser.enableAutoRefresh(False) 234 | #filepath0=[str(0)] 235 | @self.filechooser.mhEvent 236 | def onFileSelected(filename): 237 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, filename)) 238 | if not filename: 239 | self.human.resetToRestPose() 240 | 241 | else: 242 | anim = self.loadBvh(filename, convertFromZUp="auto") 243 | 244 | 245 | self.filechooser.setFileLoadHandler(fc.TaggedFileLoader(self)) 246 | self.addLeftWidget(self.filechooser.createTagFilter()) 247 | log.message(self.paths) 248 | self.skelObj = None 249 | #filepath1=self.paths+'\\ORIGINAL MODEL.bvh' 250 | #filepath1=filepath0[0] 251 | fp = open(filepath1, "rU") 252 | bvh1=bvh.BVH() 253 | bvh2=bvh1._BVH__expectKeyword('HIERARCHY', fp) 254 | words = bvh1._BVH__expectKeyword('ROOT', fp) 255 | rootJoint = bvh1.addRootJoint(words[1]) 256 | bvh1._BVH__readJoint(bvh1.rootJoint, fp) 257 | self.convertFromZUp = bvh1._autoGuessCoordinateSystem() 258 | log.message("Automatically guessed coordinate system for BVH file %s (%s)" % (filepath1, "Z-up" if self.convertFromZUp else "Y-up")) 259 | if self.convertFromZUp: 260 | # Conversion needed: convert from Z-up to Y-up 261 | bvh1._BVH__cacheGetJoints() 262 | for joint in bvh1.jointslist: 263 | bvh1._BVH__calcPosition(joint, joint.offset) 264 | 265 | # Read motion 266 | bvh1._BVH__expectKeyword('MOTION', fp) 267 | words = bvh1._BVH__expectKeyword('Frames:', fp) 268 | self.frameCount = int(words[1]) 269 | words = bvh1._BVH__expectKeyword('Frame', fp) # Time: 270 | self.frameTime = float(words[2]) 271 | 272 | for i in range(self.frameCount): 273 | line = fp.readline() 274 | words = line.split() 275 | data = [float(word) for word in words] 276 | if i!=43: 277 | for joint in bvh1.getJointsBVHOrder(): 278 | data = bvh1._BVH__processChannelData(joint, data) 279 | 280 | else: 281 | data=int(90) 282 | 283 | 284 | bvh1._BVH__cacheGetJoints() 285 | bvh1.frameCount=self.frameCount 286 | # Transform frame data into transformation matrices for all joints 287 | for joint in bvh1.getJoints(): 288 | joint.calculateFrames() 289 | 290 | 291 | 292 | @self.aButtonC1.mhEvent 293 | def onClicked(event): 294 | chushihua() 295 | width = G.windowWidth; 296 | height = G.windowHeight; 297 | width = width - 3; 298 | height = height - 3; 299 | log.message(str(width)) 300 | log.message(str(height)) 301 | 302 | OrigalIm = cv2.imread(filepicture) #先读目标图像 303 | for value in range(0,101,20): 304 | a1[0]=value-50 305 | bvhanniu() 306 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, fileout)) 307 | anim = self.loadBvh(fileout, convertFromZUp="auto") 308 | #cv2.waitKey(10) 309 | #filenameImage=fileResult+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 310 | filenameImage=fileResult+str(a1[0])+'DegreeLarm.png' 311 | #filenameIma=fileResult+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 312 | filenameIma=fileResult+str(a1[0])+'DegreeLarm.png' 313 | width = G.windowWidth; 314 | height = G.windowHeight; 315 | 316 | Xdel=600 #原图为800x600 减除后为200x150 317 | Ydel=450 318 | width = width - Xdel; 319 | height = height - Ydel; 320 | #log.message(filenameImage) 321 | #mh.grabScreen(300,225,width,height,filenameImage) #存盘 322 | 323 | mh.grabScreen(Xdel/2,Ydel/2,width,height,filenameImage) #不存盘,全在内在操作,提高速度 324 | log.message("Saved screengrab to %s", filenameImage) 325 | 326 | img=cv2.imread(filenameImage) #存盘 327 | height1,width1=img.shape[:2] 328 | #print height,width 329 | for i in range(height1): 330 | for j in range(width1): 331 | r,b,g= img[i][j] 332 | rb=abs(r-b) 333 | rg=abs(r-g) 334 | bg=abs(b-g) 335 | if rb<10 and rg<10 and bg<10: 336 | img[i][j]=[0,0,0] 337 | else: 338 | img[i][j]=[255,255,255] 339 | 340 | imsave=normalize.Normalize(img) 341 | cv2.imwrite(filenameIma,imsave) 342 | #cv2.imshow("img",imsave) 343 | #cv2.waitKey(10) 344 | #delt1=findcontours.GetDeltValue(imsave,OrigalIm) #onpicture() 345 | delt1=findcontours.CalDiff(imsave,OrigalIm) 346 | log.debug('delt1 (%d Degree): = %f', a1[0], delt1) 347 | if delt1<=deltvalue1[0]: 348 | deltvalue1[0]=delt1 349 | deltva1[0]=value-50 350 | filenameImaFit=filenameIma 351 | bvhanniu(filepicbvh) 352 | #gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, filepicbvh)) 353 | #anim = self.loadBvh(filepicbvh, convertFromZUp="auto") 354 | imsavefit=imsave 355 | 356 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, filepicbvh)) 357 | #anim = self.loadBvh(filepicbvh, convertFromZUp="auto") 358 | a1[0]= deltva1[0] #需要更新,不然后面姿态重置了 359 | bvhanniu() 360 | num1=(deltva1[0]+50)/5 361 | #result=cv2.imread(fileResult+str(num1)+'.png') 362 | #result=cv2.imread(filenameImaFit) 363 | result =imsavefit 364 | result2=cv2.imread(filepicture) 365 | cv2.imshow("Result",result) 366 | cv2.imshow("Original",result2) 367 | #cv2.waitKey(10) 368 | log.message(deltvalue1) 369 | log.message(num1) 370 | imsavefit = None 371 | 372 | @self.aButtonC2.mhEvent 373 | def onClicked(event): 374 | chushihua() 375 | width = G.windowWidth; 376 | height = G.windowHeight; 377 | width = width - 3; 378 | height = height - 3; 379 | log.message(str(width)) 380 | log.message(str(height)) 381 | for value in range(5,100,5): 382 | a2[0]=value-50 383 | bvhanniu() 384 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, fileout)) 385 | #anim = self.loadBvh(fileout, convertFromZUp="auto") 386 | filenameImage='F:/Aotu3DImage/'+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 387 | filenameIma='F:/Aotu3DImage/'+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 388 | width = G.windowWidth; 389 | height = G.windowHeight; 390 | width = width - 3; 391 | height = height - 3; 392 | #log.message(filenameImage) 393 | mh.grabScreen(0,0,width,height,filenameImage) 394 | img=cv2.imread(filenameImage) 395 | height1,width1=img.shape[:2] 396 | #print height,width 397 | for i in range(height1): 398 | for j in range(width1): 399 | r,b,g= img[i][j] 400 | rb=abs(r-b) 401 | rg=abs(r-g) 402 | bg=abs(b-g) 403 | if rb<10 and rg<10 and bg<10: 404 | img[i][j]=[0,0,0] 405 | else: 406 | img[i][j]=[255,255,255] 407 | 408 | 409 | 410 | 411 | imsave=normalize.Normalize(img) 412 | cv2.imwrite(filenameIma,imsave) 413 | cv2.imshow("img",imsave) 414 | cv2.waitKey(10) 415 | delt2=onpicture() 416 | if delt2<=deltvalue2[0]: 417 | deltvalue2[0]=delt2 418 | deltva2[0]=value-50 419 | 420 | 421 | num2=(deltva2[0]+50)/5 422 | result=cv2.imread(fileResult+str(num2)+'.png') 423 | cv2.imshow("Result",result) 424 | cv2.waitKey(0) 425 | log.message(deltvalue2) 426 | log.message(num2) 427 | 428 | @self.aButtonC3.mhEvent 429 | def onClicked(event): 430 | chushihua() 431 | width = G.windowWidth; 432 | height = G.windowHeight; 433 | width = width - 3; 434 | height = height - 3; 435 | log.message(str(width)) 436 | log.message(str(height)) 437 | for value in range(5,100,5): 438 | a3[0]=value-50 439 | bvhanniu() 440 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, fileout)) 441 | #anim = self.loadBvh(fileout, convertFromZUp="auto") 442 | filenameImage='F:/Aotu3DImage/'+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 443 | filenameIma='F:/Aotu3DImage/'+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 444 | width = G.windowWidth; 445 | height = G.windowHeight; 446 | width = width - 3; 447 | height = height - 3; 448 | #log.message(filenameImage) 449 | mh.grabScreen(0,0,width,height,filenameImage) 450 | img=cv2.imread(filenameImage) 451 | height1,width1=img.shape[:2] 452 | #print height,width 453 | for i in range(height1): 454 | for j in range(width1): 455 | r,b,g= img[i][j] 456 | rb=abs(r-b) 457 | rg=abs(r-g) 458 | bg=abs(b-g) 459 | if rb<10 and rg<10 and bg<10: 460 | img[i][j]=[0,0,0] 461 | else: 462 | img[i][j]=[255,255,255] 463 | 464 | 465 | 466 | 467 | imsave=normalize.Normalize(img) 468 | cv2.imwrite(filenameIma,imsave) 469 | cv2.imshow("img",imsave) 470 | cv2.waitKey(10) 471 | delt3=onpicture() 472 | if delt3<=deltvalue3[0]: 473 | deltvalue3[0]=delt3 474 | deltva3[0]=value-50 475 | 476 | 477 | num3=(deltva3[0]+50)/5 478 | result=cv2.imread(fileResult+str(num3)+'.png') 479 | cv2.imshow("Result",result) 480 | cv2.waitKey(0) 481 | log.message(deltvalue3) 482 | log.message(num3) 483 | 484 | @self.aButtonC4.mhEvent 485 | def onClicked(event): 486 | chushihua() 487 | width = G.windowWidth; 488 | height = G.windowHeight; 489 | width = width - 3; 490 | height = height - 3; 491 | log.message(str(width)) 492 | log.message(str(height)) 493 | for value in range(5,100,5): 494 | a4[0]=value-50 495 | bvhanniu() 496 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, fileout)) 497 | #anim = self.loadBvh(fileout, convertFromZUp="auto") 498 | filenameImage='F:/Aotu3DImage/'+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 499 | filenameIma='F:/Aotu3DImage/'+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 500 | width = G.windowWidth; 501 | height = G.windowHeight; 502 | width = width - 3; 503 | height = height - 3; 504 | #log.message(filenameImage) 505 | mh.grabScreen(0,0,width,height,filenameImage) 506 | img=cv2.imread(filenameImage) 507 | height1,width1=img.shape[:2] 508 | #print height,width 509 | for i in range(height1): 510 | for j in range(width1): 511 | r,b,g= img[i][j] 512 | rb=abs(r-b) 513 | rg=abs(r-g) 514 | bg=abs(b-g) 515 | if rb<10 and rg<10 and bg<10: 516 | img[i][j]=[0,0,0] 517 | else: 518 | img[i][j]=[255,255,255] 519 | 520 | 521 | 522 | 523 | imsave=normalize.Normalize(img) 524 | cv2.imwrite(filenameIma,imsave) 525 | cv2.imshow("img",imsave) 526 | cv2.waitKey(10) 527 | delt4=onpicture() 528 | if delt4<=deltvalue4[0]: 529 | deltvalue4[0]=delt4 530 | deltva4[0]=value-50 531 | 532 | 533 | num4=(deltva4[0]+50)/5 534 | result=cv2.imread(fileResult+str(num4)+'.png') 535 | cv2.imshow("Result",result) 536 | cv2.waitKey(0) 537 | log.message(deltvalue4) 538 | log.message(num4) 539 | 540 | @self.aButtonC5.mhEvent 541 | def onClicked(event): 542 | width = G.windowWidth; 543 | height = G.windowHeight; 544 | width = width - 3; 545 | height = height - 3; 546 | log.message(str(width)) 547 | log.message(str(height)) 548 | for value in range(5,100,5): 549 | chushihua() 550 | a5[0]=value-50 551 | bvhanniu() 552 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, fileout)) 553 | #anim = self.loadBvh(fileout, convertFromZUp="auto") 554 | filenameImage='F:/Aotu3DImage/'+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 555 | filenameIma='F:/Aotu3DImage/'+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 556 | width = G.windowWidth; 557 | height = G.windowHeight; 558 | width = width - 3; 559 | height = height - 3; 560 | #log.message(filenameImage) 561 | mh.grabScreen(0,0,width,height,filenameImage) 562 | img=cv2.imread(filenameImage) 563 | height1,width1=img.shape[:2] 564 | #print height,width 565 | for i in range(height1): 566 | for j in range(width1): 567 | r,b,g= img[i][j] 568 | rb=abs(r-b) 569 | rg=abs(r-g) 570 | bg=abs(b-g) 571 | if rb<10 and rg<10 and bg<10: 572 | img[i][j]=[0,0,0] 573 | else: 574 | img[i][j]=[255,255,255] 575 | 576 | 577 | 578 | 579 | imsave=normalize.Normalize(img) 580 | cv2.imwrite(filenameIma,imsave) 581 | cv2.imshow("img",imsave) 582 | cv2.waitKey(10) 583 | delt5=onpicture() 584 | if delt5<=deltvalue5[0]: 585 | deltvalue5[0]=delt5 586 | deltva5[0]=value-50 587 | 588 | 589 | num5=(deltva5[0]+50)/5 590 | result=cv2.imread(fileResult+str(num5)+'.png') 591 | cv2.imshow("Result",result) 592 | cv2.waitKey(0) 593 | log.message(deltvalue5) 594 | log.message(num5) 595 | 596 | @self.aButtonC6.mhEvent 597 | def onClicked(event): 598 | #chushihua() 599 | width = G.windowWidth; 600 | height = G.windowHeight; 601 | width = width - 3; 602 | height = height - 3; 603 | log.message(str(width)) 604 | log.message(str(height)) 605 | 606 | OrigalIm = cv2.imread(filepicture) #先读目标图像 607 | for value in range(49,101,10): 608 | a6[0]=value-50 609 | bvhanniu() 610 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, fileout)) 611 | #anim = self.loadBvh(fileout, convertFromZUp="auto") 612 | #cv2.waitKey(10) 613 | #filenameImage=fileResult+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 614 | filenameImage=fileResult+str(a6[0])+'DegreeLLeg.png' 615 | #filenameIma=fileResult+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 616 | filenameIma=fileResult+str(a6[0])+'DegreeLLeg.png' 617 | width = G.windowWidth; 618 | height = G.windowHeight; 619 | 620 | Xdel=600 #原图为800x600 减除后为200x150 621 | Ydel=450 622 | width = width - Xdel; 623 | height = height - Ydel; 624 | #log.message(filenameImage) 625 | #mh.grabScreen(300,225,width,height,filenameImage) #存盘 626 | 627 | mh.grabScreen(Xdel/2,Ydel/2,width,height,filenameImage) #不存盘,全在内在操作,提高速度 628 | log.message("Saved screengrab to %s", filenameImage) 629 | 630 | img=cv2.imread(filenameImage) #存盘 631 | height1,width1=img.shape[:2] 632 | #print height,width 633 | for i in range(height1): 634 | for j in range(width1): 635 | r,b,g= img[i][j] 636 | rb=abs(r-b) 637 | rg=abs(r-g) 638 | bg=abs(b-g) 639 | if rb<10 and rg<10 and bg<10: 640 | img[i][j]=[0,0,0] 641 | else: 642 | img[i][j]=[255,255,255] 643 | 644 | imsave=normalize.Normalize(img) 645 | cv2.imwrite(filenameIma,imsave) 646 | #cv2.imshow("img",imsave) 647 | #cv2.waitKey(10) 648 | #delt6=findcontours.GetDeltValue(imsave,OrigalIm) #onpicture() 649 | delt6=findcontours.CalDiff(imsave,OrigalIm) 650 | log.debug('delt6 (%d Degree): = %f', a6[0], delt6) 651 | if delt6<=deltvalue6[0]: 652 | deltvalue6[0]=delt6 653 | deltva6[0]=value-50 654 | filenameImaFit=filenameIma 655 | bvhanniu(filepicbvh) 656 | #gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, filepicbvh)) 657 | #anim = self.loadBvh(filepicbvh, convertFromZUp="auto") 658 | imsavefit=imsave 659 | 660 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, filepicbvh)) 661 | anim = self.loadBvh(filepicbvh, convertFromZUp="auto") 662 | a6[0]= deltva6[0] #需要更新,不然后面姿态重置了 663 | bvhanniu() 664 | num1=(deltva6[0]+50)/5 665 | #result=cv2.imread(fileResult+str(num1)+'.png') 666 | #result=cv2.imread(filenameImaFit) 667 | result =imsavefit 668 | result2=cv2.imread(filepicture) 669 | cv2.imshow("Result",result) 670 | cv2.imshow("Original",result2) 671 | #cv2.waitKey(10) 672 | log.message(deltvalue6) 673 | log.message(num1) 674 | imsavefit = None 675 | 676 | @self.aButtonC7.mhEvent 677 | def onClicked(event): 678 | #chushihua() 679 | width = G.windowWidth; 680 | height = G.windowHeight; 681 | width = width - 3; 682 | height = height - 3; 683 | log.message(str(width)) 684 | log.message(str(height)) 685 | 686 | OrigalIm = cv2.imread(filepicture) #先读目标图像 687 | for value in range(0,60,10): 688 | a7[0]=value-50 689 | bvhanniu() 690 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, fileout)) 691 | anim = self.loadBvh(fileout, convertFromZUp="auto") 692 | #cv2.waitKey(10) 693 | #filenameImage=fileResult+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 694 | filenameImage=fileResult+str(a7[0])+'DegreeLLeg.png' 695 | #filenameIma=fileResult+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 696 | filenameIma=fileResult+str(a7[0])+'DegreeLLeg.png' 697 | width = G.windowWidth; 698 | height = G.windowHeight; 699 | 700 | Xdel=600 #原图为800x600 减除后为200x150 701 | Ydel=450 702 | width = width - Xdel; 703 | height = height - Ydel; 704 | #log.message(filenameImage) 705 | #mh.grabScreen(300,225,width,height,filenameImage) #存盘 706 | 707 | mh.grabScreen(Xdel/2,Ydel/2,width,height,filenameImage) #不存盘,全在内在操作,提高速度 708 | log.message("Saved screengrab to %s", filenameImage) 709 | 710 | img=cv2.imread(filenameImage) #存盘 711 | height1,width1=img.shape[:2] 712 | #print height,width 713 | for i in range(height1): 714 | for j in range(width1): 715 | r,b,g= img[i][j] 716 | rb=abs(r-b) 717 | rg=abs(r-g) 718 | bg=abs(b-g) 719 | if rb<10 and rg<10 and bg<10: 720 | img[i][j]=[0,0,0] 721 | else: 722 | img[i][j]=[255,255,255] 723 | 724 | imsave=normalize.Normalize(img) 725 | cv2.imwrite(filenameIma,imsave) 726 | #cv2.imshow("img",imsave) 727 | #cv2.waitKey(10) 728 | #delt7=findcontours.GetDeltValue(imsave,OrigalIm) #onpicture() 729 | delt7=findcontours.CalDiff(imsave,OrigalIm) 730 | log.debug('delt7 (%d Degree): = %f', a7[0], delt7) 731 | if delt7<=deltvalue7[0]: 732 | deltvalue7[0]=delt7 733 | deltva7[0]=value-50 734 | filenameImaFit=filenameIma 735 | bvhanniu(filepicbvh) 736 | #gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, filepicbvh)) 737 | anim = self.loadBvh(filepicbvh, convertFromZUp="auto") 738 | imsavefit=imsave 739 | 740 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, filepicbvh)) 741 | anim = self.loadBvh(filepicbvh, convertFromZUp="auto") 742 | a7[0]= deltva7[0] #需要更新,不然后面姿态重置了 743 | bvhanniu() 744 | num1=(deltva7[0]+50)/5 745 | #result=cv2.imread(fileResult+str(num1)+'.png') 746 | #result=cv2.imread(filenameImaFit) 747 | result =imsavefit 748 | result2=cv2.imread(filepicture) 749 | cv2.imshow("Result",result) 750 | cv2.imshow("Original",result2) 751 | #cv2.waitKey(10) 752 | log.message(deltvalue7) 753 | log.message(num1) 754 | imsavefit = None 755 | 756 | @self.aButtonC8.mhEvent 757 | def onClicked(event): 758 | #chushihua() 759 | width = G.windowWidth; 760 | height = G.windowHeight; 761 | width = width - 3; 762 | height = height - 3; 763 | log.message(str(width)) 764 | log.message(str(height)) 765 | 766 | OrigalIm = cv2.imread(filepicture) #先读目标图像 767 | for value in range(61,71,10): 768 | a8[0]=value-50 769 | bvhanniu() 770 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, fileout)) 771 | anim = self.loadBvh(fileout, convertFromZUp="auto") 772 | #cv2.waitKey(10) 773 | #filenameImage=fileResult+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 774 | filenameImage=fileResult+str(a8[0])+'DegreeLLeg.png' 775 | #filenameIma=fileResult+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 776 | filenameIma=fileResult+str(a8[0])+'DegreeLLeg.png' 777 | width = G.windowWidth; 778 | height = G.windowHeight; 779 | 780 | Xdel=600 #原图为800x600 减除后为200x150 781 | Ydel=450 782 | width = width - Xdel; 783 | height = height - Ydel; 784 | #log.message(filenameImage) 785 | #mh.grabScreen(300,225,width,height,filenameImage) #存盘 786 | 787 | mh.grabScreen(Xdel/2,Ydel/2,width,height,filenameImage) #不存盘,全在内在操作,提高速度 788 | log.message("Saved screengrab to %s", filenameImage) 789 | 790 | img=cv2.imread(filenameImage) #存盘 791 | height1,width1=img.shape[:2] 792 | #print height,width 793 | for i in range(height1): 794 | for j in range(width1): 795 | r,b,g= img[i][j] 796 | rb=abs(r-b) 797 | rg=abs(r-g) 798 | bg=abs(b-g) 799 | if rb<10 and rg<10 and bg<10: 800 | img[i][j]=[0,0,0] 801 | else: 802 | img[i][j]=[255,255,255] 803 | 804 | imsave=normalize.Normalize(img) 805 | cv2.imwrite(filenameIma,imsave) 806 | #cv2.imshow("img",imsave) 807 | #cv2.waitKey(10) 808 | #delt8=findcontours.GetDeltValue(imsave,OrigalIm) #onpicture() 809 | delt8=findcontours.CalDiff(imsave,OrigalIm) 810 | log.debug('delt8 (%d Degree): = %f', a8[0], delt8) 811 | if delt8<=deltvalue8[0]: 812 | deltvalue8[0]=delt8 813 | deltva8[0]=value-50 814 | filenameImaFit=filenameIma 815 | bvhanniu(filepicbvh) 816 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, filepicbvh)) 817 | anim = self.loadBvh(filepicbvh, convertFromZUp="auto") 818 | imsavefit=imsave 819 | 820 | gui3d.app.do(AotuPose1("Change pose", self, self.currentPose, filepicbvh)) 821 | anim = self.loadBvh(filepicbvh, convertFromZUp="auto") 822 | a8[0]= deltva8[0] #需要更新,不然后面姿态重置了 823 | bvhanniu() 824 | num1=(deltva8[0]+50)/5 825 | #result=cv2.imread(fileResult+str(num1)+'.png') 826 | #result=cv2.imread(filenameImaFit) 827 | result =imsavefit 828 | result2=cv2.imread(filepicture) 829 | cv2.imshow("Result",result) 830 | cv2.imshow("Original",result2) 831 | #cv2.waitKey(10) 832 | log.message(deltvalue8) 833 | log.message(num1) 834 | imsavefit = None 835 | 836 | def chushihua(): 837 | a1=[0] 838 | a2=[0] 839 | a3=[0] 840 | a4=[0] 841 | a5=[0] 842 | a6=[0] 843 | a7=[0] 844 | a8=[0] 845 | deltvalue1=[100] 846 | deltvalue2=[100] 847 | deltvalue3=[100] 848 | deltvalue4=[100] 849 | deltvalue5=[100] 850 | deltvalue6=[100] 851 | deltvalue7=[100] 852 | deltvalue8=[100] 853 | deltva1=[0] 854 | deltva2=[0] 855 | deltva3=[0] 856 | deltva4=[0] 857 | deltva5=[0] 858 | deltva6=[0] 859 | deltva7=[0] 860 | deltva8=[0] 861 | 862 | def bvhanniu(filename = None): 863 | if filename is None: 864 | filename=fileout 865 | log.debug('FileName is %s',filename) 866 | f = open(filename, 'w') 867 | # Write structure 868 | f.write('HIERARCHY\n') 869 | bvh1._writeJoint(f, bvh1.rootJoint, 0) 870 | # Write animation 871 | f.write('MOTION\n') 872 | f.write('Frames: %s\n' % bvh1.frameCount) 873 | f.write('Frame Time: %f\n' % bvh1.frameTime) 874 | allJoints = [joint for joint in bvh1.getJointsBVHOrder() if not joint.isEndConnector()] 875 | jointsData = [joint.matrixPoses for joint in allJoints] 876 | nJoints = len(jointsData) 877 | nFrames = len(jointsData[0]) 878 | totalChannels = sum([len(joint.channels) for joint in allJoints]) 879 | 880 | frameData = [] 881 | for fIdx in xrange(bvh1.frameCount): 882 | for joint in allJoints: 883 | offset = fIdx * len(joint.channels) 884 | frameData.extend(joint.frames[offset:offset + len(joint.channels)]) 885 | frameData = [str(fl) for fl in frameData] 886 | 887 | frameData[37]=str(a1[0]) 888 | frameData[43]=str(a2[0]+35) 889 | frameData[127]=str(a3[0]) 890 | frameData[133]=str(a4[0]+35) 891 | frameData[433]=str(a5[0]) 892 | frameData[439]=str(a6[0]) 893 | frameData[508]=str(a7[0]) 894 | frameData[514]=str(a8[0]) 895 | for fIdx in xrange(bvh1.frameCount): 896 | 897 | frameData = [str(fl) for fl in frameData] 898 | f.write('%s\n' % " ".join(frameData)) 899 | 900 | f.close() 901 | 902 | #@self.aButton1.mhEvent 903 | # def onClicked(event): 904 | # filenameImage='F:/'+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 905 | # width = G.windowWidth; 906 | # height = G.windowHeight; 907 | # width = width - 3; 908 | # height = height - 3; 909 | # log.message(filenameImage) 910 | # mh.grabScreen(0,0,width,height,filenameImage) 911 | def dayinpicture(): 912 | filenameImage='F:/Aotu3DImage/'+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 913 | filenameIma='F:/Aotu3DImage/'+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 914 | width = G.windowWidth; 915 | height = G.windowHeight; 916 | width = width - 3; 917 | height = height - 3; 918 | #log.message(filenameImage) 919 | #mh.grabScreen(0,0,width,height,filenameImage) 920 | #img=cv2.imread(filenameImage) 921 | img=grabMyScreen(0,0,width,height) 922 | height1,width1=img.shape[:2] 923 | #print height,width 924 | for i in range(height1): 925 | for j in range(width1): 926 | r,b,g= img[i][j] 927 | rb=abs(r-b) 928 | rg=abs(r-g) 929 | bg=abs(b-g) 930 | if rb<10 and rg<10 and bg<10: 931 | img[i][j]=[0,0,0] 932 | else: 933 | img[i][j]=[255,255,255] 934 | 935 | 936 | 937 | 938 | imsave=normalize.Normalize(img) 939 | cv2.imwrite(filenameIma,imsave) 940 | 941 | @self.aButton2.mhEvent 942 | def onClicked(event): 943 | filenameImage='F:/Aotu3DImage/'+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 944 | filenameIma='F:/Aotu3DImage/'+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 945 | width = G.windowWidth; 946 | height = G.windowHeight; 947 | width = width - 3; 948 | height = height - 3; 949 | log.message(filenameImage) 950 | mh.grabScreen(0,0,width,height,filenameImage) 951 | img=cv2.imread(filenameImage) 952 | height1,width1=img.shape[:2] 953 | #print height,width 954 | for i in range(height1): 955 | for j in range(width1): 956 | r,b,g= img[i][j] 957 | rb=abs(r-b) 958 | rg=abs(r-g) 959 | bg=abs(b-g) 960 | if rb<10 and rg<10 and bg<10: 961 | img[i][j]=[0,0,0] 962 | else: 963 | img[i][j]=[255,255,255] 964 | 965 | 966 | 967 | 968 | cv2.imwrite(filenameIma,img) 969 | # getcontourspoint.MainGetContourPoint(filenameImage,"F:/w1/lunkuo.txt") 970 | 971 | def onpicture(): 972 | filenameImage='F:/Aotu3DImage/'+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 973 | filenameIma='F:/Aotu3DImage/'+str(time.strftime("%Y-%m-%d_%H.%M.%S"))+'.png' 974 | width = G.windowWidth; 975 | height = G.windowHeight; 976 | width = width - 3; 977 | height = height - 3; 978 | log.message(filenameImage) 979 | #mh.grabScreen(0,0,width,height,filenameImage) 980 | img=grabMyScreen(0,0,width,height) 981 | #log.message(str(imgs)) 982 | #img=cv2.imread(filenameImage) 983 | height1,width1=img.shape[:2] 984 | #print height,width 985 | for i in range(height1): 986 | for j in range(width1): 987 | r,b,g= img[i][j] 988 | rb=abs(r-b) 989 | rg=abs(r-g) 990 | bg=abs(b-g) 991 | if rb<10 and rg<10 and bg<10: 992 | img[i][j]=[0,0,0] 993 | else: 994 | img[i][j]=[255,255,255] 995 | 996 | 997 | 998 | 999 | # cv2.imwrite(filenameIma,img) 1000 | imsave=normalize.Normalize(img) 1001 | delt=findcontours.GetDeltValue(imsave,filepicture) 1002 | return delt 1003 | 1004 | def grabMyScreen(x, y, width, height,filename = None, productionRender=False): 1005 | if width <= 0 or height <= 0: 1006 | raise RuntimeError("width or height is 0") 1007 | 1008 | log.debug('grabScreen: %d %d %d %d', x, y, width, height) 1009 | 1010 | # Draw before grabbing, to make sure we grab a rendering and not a picking buffer 1011 | glmodule.draw(productionRender) 1012 | 1013 | sx0 = x 1014 | sy0 = G.windowHeight - y - height 1015 | sx1 = sx0 + width 1016 | sy1 = sy0 + height 1017 | 1018 | sx0 = max(sx0, 0) 1019 | sx1 = min(sx1, G.windowWidth) 1020 | sy0 = max(sy0, 0) 1021 | sy1 = min(sy1, G.windowHeight) 1022 | 1023 | rwidth = sx1 - sx0 1024 | rwidth -= rwidth % 4 1025 | sx1 = sx0 + rwidth 1026 | rheight = sy1 - sy0 1027 | 1028 | surface = np.empty((rheight, rwidth, 3), dtype = np.uint8) 1029 | 1030 | log.debug('glReadPixels: %d %d %d %d', sx0, sy0, rwidth, rheight) 1031 | 1032 | glmodule.glReadPixels(sx0, sy0, rwidth, rheight, GL_RGB, GL_UNSIGNED_BYTE, surface) 1033 | 1034 | if width != rwidth or height != rheight: 1035 | surf = np.zeros((height, width, 3), dtype = np.uint8) + 127 1036 | surf[...] = surface[:1,:1,:] 1037 | dx0 = (width - rwidth) / 2 1038 | dy0 = (height - rheight) / 2 1039 | dx1 = dx0 + rwidth 1040 | dy1 = dy0 + rheight 1041 | surf[dy0:dy1,dx0:dx1] = surface 1042 | surface = surf 1043 | 1044 | surface = np.ascontiguousarray(surface[::-1,:,:]) 1045 | #surface = Image(data = surface) 1046 | return surface 1047 | 1048 | @self.aButton.mhEvent 1049 | def onClicked(event): 1050 | f = open(filepath1, 'w') 1051 | # Write structure 1052 | f.write('HIERARCHY\n') 1053 | bvh1._writeJoint(f, bvh1.rootJoint, 0) 1054 | # Write animation 1055 | f.write('MOTION\n') 1056 | f.write('Frames: %s\n' % bvh1.frameCount) 1057 | f.write('Frame Time: %f\n' % bvh1.frameTime) 1058 | allJoints = [joint for joint in bvh1.getJointsBVHOrder() if not joint.isEndConnector()] 1059 | jointsData = [joint.matrixPoses for joint in allJoints] 1060 | nJoints = len(jointsData) 1061 | nFrames = len(jointsData[0]) 1062 | totalChannels = sum([len(joint.channels) for joint in allJoints]) 1063 | frameData = [] 1064 | for fIdx in xrange(bvh1.frameCount): 1065 | for joint in allJoints: 1066 | offset = fIdx * len(joint.channels) 1067 | frameData.extend(joint.frames[offset:offset + len(joint.channels)]) 1068 | frameData = [str(fl) for fl in frameData] 1069 | 1070 | for fIdx in xrange(bvh1.frameCount): 1071 | frameData = [str(fl) for fl in frameData] 1072 | f.write('%s\n' % " ".join(frameData)) 1073 | 1074 | f.close() 1075 | 1076 | 1077 | def getMetadataFile(self, filename): 1078 | metafile = os.path.splitext(filename)[0] + '.meta' 1079 | if os.path.isfile(metafile): 1080 | return metafile 1081 | return filename 1082 | 1083 | def getMetadataImpl(self, filename): 1084 | tags = set() 1085 | if not os.path.isfile(filename): 1086 | return (tags, ) 1087 | name = os.path.splitext(os.path.basename(filename))[0] 1088 | description = "" 1089 | license = mh.getAssetLicense() 1090 | from codecs import open 1091 | f = open(filename, encoding='utf-8') 1092 | for l in f.read().split('\n'): 1093 | l = l.strip() 1094 | l = l.split() 1095 | if len(l) == 0: 1096 | continue 1097 | if l[0].lower() == 'tag': 1098 | tags.add((' '.join(l[1:])).lower()) 1099 | elif l[0].lower() == 'name': 1100 | name = ' '.join(l[1:]) 1101 | elif l[0].lower() == 'description': 1102 | description = ' '.join(l[1:]) 1103 | elif l[0].lower() == 'author': 1104 | license.author = ' '.join(l[1:]) 1105 | elif l[0].lower() == 'license': 1106 | license.license = ' '.join(l[1:]) 1107 | elif l[0].lower() == 'copyright': 1108 | license.copyright = ' '.join(l[1:]) 1109 | elif l[0].lower() == 'homepage': 1110 | license.homepage = ' '.join(l[1:]) 1111 | return (tags, name, description, license) 1112 | 1113 | def getTagsFromMetadata(self, metadata): 1114 | return metadata[0] 1115 | 1116 | def getSearchPaths(self): 1117 | return self.paths 1118 | 1119 | def loadPose(self, filepath, apply_pose=True): 1120 | self.currentPose = filepath 1121 | 1122 | if not filepath: 1123 | self.human.resetToRestPose() 1124 | return 1125 | 1126 | if os.path.splitext(filepath)[1].lower() == '.mhp': 1127 | anim = self.loadMhp(filepath) 1128 | elif os.path.splitext(filepath)[1].lower() == '.bvh': 1129 | anim = self.loadBvh(filepath, convertFromZUp="auto") 1130 | else: 1131 | log.error("Cannot load pose file %s: File type unknown." % filepath) 1132 | return 1133 | 1134 | #self.human.setAnimateInPlace(True) 1135 | self.human.addAnimation(anim) 1136 | self.human.setActiveAnimation(anim.name) 1137 | self.human.setToFrame(0, update=False) 1138 | if apply_pose: 1139 | self.human.setPosed(True) 1140 | 1141 | def loadMhp(self, filepath): 1142 | return animation.loadPoseFromMhpFile(filepath, self.human.getBaseSkeleton()) 1143 | 1144 | def loadBvh(self, filepath, convertFromZUp="auto"): 1145 | bvh_file = bvh.load(filepath, convertFromZUp) 1146 | self.autoScaleBVH(bvh_file) 1147 | anim = bvh_file.createAnimationTrack(self.human.getBaseSkeleton()) 1148 | _, _, _, license = self.getMetadata(filepath) 1149 | anim.license = license 1150 | return anim 1151 | 1152 | def autoScaleBVH(self, bvh_file): 1153 | """ 1154 | Auto scale BVH translations by comparing upper leg length 1155 | """ 1156 | import numpy.linalg as la 1157 | COMPARE_BONE = "upperleg02.L" 1158 | if COMPARE_BONE not in bvh_file.joints: 1159 | raise RuntimeError('Failed to auto scale BVH file %s, it does not contain a joint for "%s"' % (bvh_file.name, COMPARE_BONE)) 1160 | bvh_joint = bvh_file.joints[COMPARE_BONE] 1161 | bone = self.human.getBaseSkeleton().getBoneByReference(COMPARE_BONE) 1162 | if bone is not None: 1163 | joint_length = la.norm(bvh_joint.children[0].position - bvh_joint.position) 1164 | scale_factor = bone.length / joint_length 1165 | log.message("Scaling BVH file %s with factor %s" % (bvh_file.name, scale_factor)) 1166 | bvh_file.scale(scale_factor) 1167 | else: 1168 | log.warning("Could not find bone or bone reference with name %s in skeleton %s, cannot auto resize BVH file %s", COMPARE_BONE, self.human.getBaseSkeleton().name, bvh_file.name) 1169 | 1170 | def onShow(self, event): 1171 | self.filechooser.refresh() 1172 | self.filechooser.selectItem(self.currentPose) 1173 | self.human.refreshPose() 1174 | 1175 | def onHide(self, event): 1176 | gui3d.app.statusPersist('') 1177 | 1178 | def onHumanChanging(self, event): 1179 | if event.change == 'reset': 1180 | self.human.removeAnimations(update=False) 1181 | self.currentPose = None 1182 | 1183 | def onHumanChanged(self, event): 1184 | if event.change == 'skeleton': 1185 | if self.currentPose: 1186 | self.loadPose(self.currentPose, apply_pose=False) 1187 | elif event.change == 'reset': 1188 | # Update GUI after reset (if tab is currently visible) 1189 | if self.isShown(): 1190 | self.onShow(event) 1191 | 1192 | def loadHandler(self, human, values, strict): 1193 | if values[0] == "pose": 1194 | poseFile = values[1] 1195 | poseFile = getpath.thoroughFindFile(poseFile, self.paths) 1196 | if not os.path.isfile(poseFile): 1197 | if strict: 1198 | raise RuntimeError("Could not load pose %s, file does not exist." % poseFile) 1199 | log.warning("Could not load pose %s, file does not exist.", poseFile) 1200 | else: 1201 | self.loadPose(poseFile) 1202 | return 1203 | 1204 | def saveHandler(self, human, file): 1205 | if self.currentPose: 1206 | poseFile = getpath.getRelativePath(self.currentPose, self.paths) 1207 | file.write('pose %s\n' % poseFile) 1208 | 1209 | 1210 | category = None 1211 | taskview = None 1212 | 1213 | # This method is called when the plugin is loaded into makehuman 1214 | # The app reference is passed so that a plugin can attach a new category, task, or other GUI elements 1215 | 1216 | 1217 | def load(app): 1218 | global taskview 1219 | category = app.getCategory('Utilities') 1220 | taskview = PoseLibraryAotu1TaskView(category) 1221 | taskview.sortOrder = 2 1222 | category.addTask(taskview) 1223 | 1224 | app.addLoadHandler('pose', taskview.loadHandler) 1225 | app.addSaveHandler(taskview.saveHandler, priority=6) # After skeleton library 1226 | 1227 | 1228 | # This method is called when the plugin is unloaded from makehuman 1229 | # At the moment this is not used, but in the future it will remove the added GUI elements 1230 | 1231 | 1232 | def unload(app): 1233 | taskview.onUnload() 1234 | --------------------------------------------------------------------------------