def test_mergePoints(): meshFilePath = '../samples/physics2_woody_binding1.mesh.xml' skinMesh, jointMotions = yol.readOgreDataFiles(meshFilePath, .1) mergedSkinMesh = copy.deepcopy(skinMesh) mergePoints(mergedSkinMesh) # print skinMesh # print mergedSkinMesh viewer = ysv.SimpleViewer() viewer.record(False) for i in range(len(jointMotions)): viewer.doc.addRenderer(jointMotions[i].resourceName, yr.JointMotionRenderer(jointMotions[i], (0, 0, 255), yr.LINK_LINE)) viewer.doc.addMotion2(jointMotions[i].resourceName, jointMotions[i]) viewer.doc.addRenderer('skinMesh', yr.MeshRenderer(skinMesh)) viewer.doc.addObject('skinMesh', skinMesh) viewer.doc.addRenderer('mergedSkinMesh', yr.MeshRenderer(mergedSkinMesh, (0,255,0))) viewer.doc.addObject('mergedSkinMesh', mergedSkinMesh) def preFrameCallback(frame): skinMesh.update(jointMotions[0][frame]) mergedSkinMesh.update(jointMotions[0][frame]) viewer.setPreFrameCallback(preFrameCallback) viewer.startTimer(1/30.) viewer.show() Fl.run()
def test_ObjectInfoWnd(): bvhFilePath = '../samples/wd2_WalkSameSame00.bvh' jointMotion1, frameTime = yf.readBvhFileAsJointMotion(bvhFilePath, .01) bvhFilePath = '../samples/wd2_WalkForwardVFast00.bvh' jointMotion2, frameTime = yf.readBvhFileAsJointMotion(bvhFilePath, .01) meshFilePath = '../samples/physics2_woody_binding1.mesh.xml' skinMesh, js = yol.readOgreDataFiles(meshFilePath, .01) meshFilePath = '../samples/physics2_woody_binding1.mesh.xml' mesh = yol.readOgreMeshFileAsMesh(meshFilePath, .01) ysu.mergePoints(skinMesh) ysu.mergePoints(mesh) skinMesh.update(js[0][80]) viewer = SimpleViewer() viewer.doc.addRenderer('motion1(%s)'%jointMotion1.resourceName, yr.JointMotionRenderer(jointMotion1, (0, 0, 255), yr.LINK_LINE)) viewer.doc.addObject('motion1(%s)'%jointMotion1.resourceName, jointMotion1) viewer.doc.addRenderer('motion2(%s)'%jointMotion2.resourceName, yr.JointMotionRenderer(jointMotion2, (0, 0, 255), yr.LINK_LINE)) viewer.doc.addObject('motion2(%s)'%jointMotion1.resourceName, jointMotion2) viewer.doc.addRenderer('skinMesh', yr.MeshRenderer(skinMesh)) viewer.doc.addObject('skinMesh', skinMesh) viewer.doc.addRenderer('mesh', yr.MeshRenderer(mesh)) viewer.doc.addObject('mesh', mesh) viewer.startTimer(frameTime) viewer.show() Fl.run()
def test_ObjectInfoWnd(): bvhFilePath = '../samples/wd2_WalkSameSame00.bvh' jointMotion1, frameTime = yf.readBvhFileAsJointMotion(bvhFilePath, .01) bvhFilePath = '../samples/wd2_WalkForwardVFast00.bvh' jointMotion2, frameTime = yf.readBvhFileAsJointMotion(bvhFilePath, .01) meshFilePath = '../samples/physics2_woody_binding1.mesh.xml' skinMesh, js = yol.readOgreDataFiles(meshFilePath, .01) meshFilePath = '../samples/physics2_woody_binding1.mesh.xml' mesh = yol.readOgreMeshFileAsMesh(meshFilePath, .01) ysu.mergePoints(skinMesh) ysu.mergePoints(mesh) skinMesh.update(js[0][80]) viewer = SimpleViewer() viewer.doc.addRenderer('motion1(%s)'%jointMotion1.resourceName, yr.JointMotionRenderer(jointMotion1, (0, 0, 255), yr.LINK_LINE)) viewer.doc.addObject('motion1(%s)'%jointMotion1.resourceName, jointMotion1) viewer.doc.addRenderer('motion2(%s)'%jointMotion2.resourceName, yr.JointMotionRenderer(jointMotion2, (0, 0, 255), yr.LINK_LINE)) viewer.doc.addObject('motion2(%s)'%jointMotion1.resourceName, jointMotion2) viewer.doc.addRenderer('skinMesh', yr.MeshRenderer(skinMesh)) viewer.doc.addObject('skinMesh', skinMesh) viewer.doc.addRenderer('mesh', yr.MeshRenderer(mesh)) viewer.doc.addObject('mesh', mesh) viewer.startTimer(frameTime) viewer.show() Fl.run()
def profile_skinning(): meshFilePath = '../samples/woody2_15.mesh.xml' skeletonFilePath = '../samples/woody2_15.skeleton.xml' mesh, ms = yol.readOgreDataFiles(meshFilePath, .01, skeletonFilePath) motion = yf.readBvhFile('../samples/wd2_WalkSameSame00.bvh', .01) profileDataFile = '../samples/cProfile_%s.profile'%datetime.today().strftime('%y%m%d_%H%M%S') cProfile.runctx('mesh.update(motion[50])', globals(), locals(), profileDataFile) os.system('python ../../Tools/pprofui.py %s'%profileDataFile)
def test_IMSModel_mesh(): frameTime = 1 / 30. stepsPerFrame = 10 timeStep = frameTime / stepsPerFrame print 'time step', timeStep mesh, t = yol.readOgreDataFiles('../samples/woody2_15.mesh.xml', .01, None) motion, frameTime = yf.readBvhFileAsJointMotion( '../samples/wd2_WalkSameSame00.bvh', .01) mesh.update(motion[0]) dynamicMu = .5 staticMu = 1. particleConfigs = yiu.getParticleConfigsFromMesh(mesh, massMap, motion[:2], dynamicMu, staticMu) Ks = 10000. Kd = 100. springConfigs = yiu.getSpringConfigsFromMesh(mesh, Ks, Kd) systemConfig = cmm.SystemConfig() model = cmm.IMSModel(particleConfigs, springConfigs, systemConfig) viewer = ysv.SimpleViewer() # viewer.record(False) viewer.doc.addRenderer('mesh', yr.MeshRenderer(mesh, (50, 100, 150))) viewer.doc.addObject('mesh', mesh) viewer.doc.addRenderer( 'motion', yr.JointMotionRenderer(motion, (0, 255, 255), yr.LINK_BONE)) viewer.doc.addObject('motion', motion) viewer.doc.addRenderer('model', cr.IMSModelRenderer(model)) # viewer.setRecSimulObjs([model]) def preFrameCallback(frame): mesh.update(motion[frame]) def simulateCallback(frame): model.updateSprings(yiu.getSpringLengthsFromMesh(mesh, springConfigs)) for i in range(int(stepsPerFrame)): model.step(timeStep) viewer.setPreFrameCallback(preFrameCallback) viewer.setSimulateCallback(simulateCallback) viewer.startTimer(1 / 30.) viewer.show() Fl.run()
def test_getCOMPos_Vel(): meshFilePath = '../samples/woody2_15.mesh.xml' skeletonFilePath = '../samples/woody2_15.skeleton.xml' mesh, js = yol.readOgreDataFiles(meshFilePath, .01, skeletonFilePath) bvhFilePath = '../samples/wd2_WalkSameSame00.bvh' motion = yf.readBvhFile(bvhFilePath, .01) meshMotion = meshAnimation2PointMotion(mesh, motion) vertexMasses = getDistributedVertexMasses(mesh, massMap) upperIndices = getSubmeshVertexIndicesEx(mesh, 'UPPER') totalMass = getTotalMass(vertexMasses) upperMass = getTotalMass(vertexMasses, upperIndices) viewer = ysv.SimpleViewer() viewer.record(False) viewer.doc.addRenderer('mesh', yr.MeshRenderer(mesh)) viewer.doc.addObject('mesh', mesh) viewer.doc.addRenderer('meshMotion', yr.PointMotionRenderer(meshMotion)) viewer.doc.addObject('meshMotion', meshMotion) def extraDrawCallback(): frame = viewer.getCurrentFrame() positions = meshMotion[frame].getPositions() COM = getCOMPos(positions, vertexMasses, totalMass) upperCOM = getCOMPos(positions, vertexMasses, upperMass, upperIndices) if frame > 0: velocities = meshMotion.getVelocities(frame) ygh.drawVector(getCOMVel(velocities, vertexMasses, totalMass), COM, (255,255,0)) ygh.drawVector(getCOMVel(velocities, vertexMasses, upperMass, upperIndices), upperCOM, (0,255,0)) viewer.setExtraDrawCallback(extraDrawCallback) viewer.startTimer(1/30.) viewer.show() Fl.run()
def test_getDistributedMasses(): totalMass = 0 for key, value in massMap.items(): print key, value totalMass += value print totalMass meshFilePath = '../samples/woody2_15.mesh.xml' skeletonFilePath = '../samples/woody2_15.skeleton.xml' skinMesh, js = yol.readOgreDataFiles(meshFilePath, .01, skeletonFilePath) bvhFilePath = '../samples/wd2_WalkSameSame00.bvh' jointMotion = yf.readBvhFile(bvhFilePath, .01) vertexMasses = getDistributedVertexMasses(skinMesh, massMap) totalMass = 0 for i in range(len(vertexMasses)): print i, vertexMasses[i] totalMass += vertexMasses[i] print totalMass print
def test_mesh2PointPosture(): meshFilePath = '../samples/woody2_15.mesh.xml' skeletonFilePath = '../samples/woody2_15.skeleton.xml' skinMesh, js = yol.readOgreDataFiles(meshFilePath, .01, skeletonFilePath) bvhFilePath = '../samples/wd2_WalkSameSame00.bvh' jointMotion = yf.readBvhFile(bvhFilePath, .01) meshPointMotion = meshAnimation2PointMotion(skinMesh, jointMotion) viewer = ysv.SimpleViewer() viewer.record(False) viewer.doc.addRenderer('skinMesh', yr.MeshRenderer(skinMesh)) viewer.doc.addObject('skinMesh', skinMesh) viewer.doc.addRenderer('meshPointMotion', yr.PointMotionRenderer(meshPointMotion)) viewer.doc.addObject('meshPointMotion', meshPointMotion) def preFrameCallback(frame): skinMesh.update(jointMotion[frame]) viewer.setPreFrameCallback(preFrameCallback) viewer.startTimer(1/30.) viewer.show() Fl.run()
massMap['RightLeg'] += 5. # left shin : 5 massMap['LeftLeg'] += 5. # right foot : 4 massMap['RightFoot'] += 2. massMap['RightToes'] += 2. # left foot : 4 massMap['LeftFoot'] += 2. massMap['LeftToes'] += 2. if __name__ == "__main__": # mesh, js = yol.readOgreDataFiles('Data/woody2_7.mesh.xml', .01) mesh, js = yol.readOgreDataFiles('../samples/woody2_15.mesh.xml', .01) # motion, f = yf.readBvhFileAsJointMotion('Data/wd2_WalkSameSame00.bvh', .01) # motion, f = yf.readBvhFileAsJointMotion('Data/wd2_WalkForwardSlow01.bvh', .01) # motion, f = yf.readBvhFileAsJointMotion('Data/wd2_WalkForwardFast00.bvh', .01) # motion, f = yf.readBvhFileAsJointMotion('Data/wd2_WalkForwardVFast00.bvh', .01) # motion, f = yf.readBvhFileAsJointMotion('Data/wd2_WalkBackward00.bvh', .01) # motion, f = yf.readBvhFileAsJointMotion('Data/wd2_WalkAzuma00.bvh', .01) # motion, f = yf.readBvhFileAsJointMotion('Data/wd2_WalkSoldier00.bvh', .01) # motion, f = yf.readBvhFileAsJointMotion('Data/wd2_WalkLean00.bvh', .01) # motion, f = yf.readBvhFileAsJointMotion('Data/wd2_WalkSukiko00.bvh', .01) # motion, f = yf.readBvhFileAsJointMotion('Data/wd2_2foot_walk_turn2.bvh', .01) # motion, f = yf.readBvhFileAsJointMotion('Data/wd2_2foot_walk_turn.bvh', .01) motion = yf.readBvhFile('../samples/wd2_WalkSameSame00.bvh', .01) meshMotion = ysu.meshAnimation2PointMotion(mesh, motion)
import psyco psyco.full() from fltk import * import sys if '..' not in sys.path: sys.path.append('..') import Resource.ysMotionLoader as yf import Renderer.ysRenderer as yr import GUI.ysSimpleViewer as ysv import Mesh.ysMeshUtil as ysu import Resource.ysOgreDataLoader as yol if __name__ == "__main__": mesh, motions = yol.readOgreDataFiles('../samples/woody2_15.mesh.xml', .01, None) # mesh2, motions= yol.readOgreDataFiles('Data/woody2_6.mesh.xml', .01, None) # ysu.mergePoints(mesh) print mesh motion = yf.readBvhFile('../samples/wd2_WalkSameSame00.bvh', .01) # motion, frameTime = yf.readBvhFile('../samples/wd2_left_turn.bvh', .01*2.53999905501) viewer = ysv.SimpleViewer() viewer.record(False) viewer.doc.addRenderer('mesh', yr.MeshRenderer(mesh, (0, 255, 255))) viewer.doc.addObject('mesh', mesh) # viewer.doc.addRenderer('mesh2', yr.MeshRenderer(mesh2, (255,255,0))) # viewer.doc.addObject('mesh2', mesh2)
def main(): # mesh = yol.readOgreMeshFileAsMesh('Data/box_rotate.mesh.xml', .1) # mesh = yol.readOgreMeshFileAsMesh('Data/box.mesh.xml', .1) # mesh = yol.readOgreMeshFileAsMesh('Data/foot_box.mesh.xml', .1) # mesh = yol.readOgreMeshFileAsMesh('Data/woody2_4.mesh.xml', .01) mesh, motions = yol.readOgreDataFiles('Data/woody2_7.mesh.xml', .01, None) ysu.mergePoints(mesh) print 'MESH' print mesh motion, frameTime = yf.readBvhFileAsJointMotion( 'Data/wd2_WalkSameSame00.bvh', .01) motion = motion[:100] mesh.update(motion[0]) config = {} config['meshKs'] = 10000. config['meshKd'] = 500. config['muscleKs'] = 10000. config['muscleKd'] = 500. config['footKs'] = 10000. config['footKd'] = 500. # config['2D'] = True config['vertexMasses'] = [1.] * len(mesh.vertices) config['mu'] = 1. model = csm.SpringModel3D(mesh, config) print 'MODEL' print model print viewer = ysv.SimpleViewer() viewer.doc.addRenderer('mesh', yr.MeshRenderer(mesh)) viewer.doc.addObject('mesh', mesh) viewer.doc.addRenderer( 'model', csr.SpringModel3DRenderer(model, (255, 255, 255), True, True)) viewer.setRecSimulObjs([model]) viewer.setMaxFrame(len(motion) - 1) frameTime = 1. / 30. stepsPerFrame = 10 timeStep = frameTime / stepsPerFrame print 'SIMULATION' print 'timeStep', timeStep print # with rendering pt = [0] def preFrameCallback(frame): if frame == 0: pt[0] = time.time() mesh.update(motion[frame]) def simulateCallback(frame): print frame model.updateSprings(mesh) for i in range(int(stepsPerFrame)): model.step(timeStep) print frame, model.getUpperCOMPos()[1] if frame == len(motion) - 1: print 'elapsed time:', time.time() - pt[0] viewer.setPreFrameCallback(preFrameCallback) viewer.setSimulateCallback(simulateCallback) # # without rendering # pt = time.time() # for frame in range(len(motion)): # motion.frame = frame # mesh.update(motion[frame]) # model.updateSprings(mesh) # for step in range(int(stepsPerFrame)): # model.step(timeStep) # print 'elapsed time:', time.time()-pt viewer.startTimer(frameTime) viewer.show() Fl.run()