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_readOgreDataFiles(): meshFilePath = '../samples/physics2_woody_binding1.mesh.xml' skeletonFilePath = '../samples/physics2_woody_binding1.skeleton.xml' skinMesh, jointMotions = readOgreDataFiles(meshFilePath, .01, skeletonFilePath) for jointPosture in jointMotions[0]: jointPosture.updateGlobalT() viewer = ysv.SimpleViewer() for i in range(len(jointMotions)): viewer.doc.addObject('motion%d' % i, jointMotions[i]) viewer.doc.addRenderer( 'motion%d' % i, yr.JointMotionRenderer(jointMotions[i], (0, 0, 255), yr.LINK_LINE)) viewer.doc.addRenderer('skinMesh', yr.MeshRenderer(skinMesh)) def preFrameCallback(frame): skinMesh.update(jointMotions[0][frame]) viewer.setPreFrameCallback(preFrameCallback) viewer.startTimer(1 / 30.) viewer.show() Fl.run()
def test_readOgreMeshFileAsSkinMesh(): skeletonFilePath = '../samples/woody2_15.skeleton.xml' # jointSkeleton, initialRMap = readOgreSkeletonFile_Skeleton(skeletonFilePath, .1) # jointMotions = readOgreSkeletonFile_SkeletonAnimations(skeletonFilePath, .1) jointSkeleton, initialRs, jointMotions = readOgreSkeletonFile( skeletonFilePath, .01) meshFilePath = '../samples/woody2_15.mesh.xml' skinMesh = readOgreMeshFileAsSkinMesh(meshFilePath, jointSkeleton, initialRs, .01) jointMotion = yf.readBvhFile('../samples/wd2_WalkSameSame00.bvh', .01) viewer = ysv.SimpleViewer() # for i in range(len(jointMotions)): # viewer.doc.addMotion(jointMotions[i]) # viewer.doc.addRenderer(jointMotions[i].resourceName, yr.JointMotionRenderer(jointMotions[i], (0, 0, 255), yr.LINK_LINE)) viewer.doc.addRenderer( 'jointMotion', yr.JointMotionRenderer(jointMotion, (0, 0, 255), yr.LINK_BONE)) viewer.doc.addObject('jointMotion', jointMotion) viewer.doc.addRenderer('skinMesh', yr.MeshRenderer(skinMesh)) def preFrameCallback(frame): skinMesh.update(jointMotion[frame]) viewer.setPreFrameCallback(preFrameCallback) viewer.startTimer(1 / 30.) viewer.show() Fl.run()
def test_readOgreSkeletonFile_SkeletonAnimation(): meshFilePath = '../samples/physics2_woody_binding1.mesh.xml' mesh = readOgreMeshFileAsMesh(meshFilePath, .01) # skeletonFilePath = '../samples/woody2_15.skeleton.xml' skeletonFilePath = '../samples/physics2_woody_binding1.skeleton.xml' jointMotions = readOgreSkeletonFile_SkeletonAnimations( skeletonFilePath, .01) viewer = ysv.SimpleViewer() for i in range(len(jointMotions)): viewer.doc.addMotion(jointMotions[i]) viewer.doc.addRenderer( jointMotions[i].resourceName, yr.JointMotionRenderer(jointMotions[i], (0, 0, 255), yr.LINK_LINE)) viewer.doc.addRenderer('mesh', yr.MeshRenderer(mesh)) def extraDrawCallback(): frame = viewer.getCurrentFrame() for i in range(jointMotions[0][0].skeleton.getElementNum()): ygh.drawPoint(jointMotions[0][frame].getPosition(i)) viewer.setExtraDrawCallback(extraDrawCallback) viewer.startTimer(1 / 30.) viewer.show() Fl.run()
def test_readOgreSkeletonFile_Skeleton(): # meshFilePath = '../samples/woody2_15.mesh.xml' meshFilePath = '../samples/physics2_woody_binding1.mesh.xml' mesh = readOgreMeshFileAsMesh(meshFilePath, .01) # skeletonFilePath = '../samples/woody2_15.skeleton.xml' skeletonFilePath = '../samples/physics2_woody_binding1.skeleton.xml' jointSkeleton, initialRs = readOgreSkeletonFile_Skeleton( skeletonFilePath, .01) skeletonPosture = ym.JointPosture(jointSkeleton) skeletonPosture.initLocalRs(initialRs) # skeletonPosture.initLocalRs() skeletonMotion = ym.Motion([skeletonPosture]) viewer = ysv.SimpleViewer() viewer.doc.addMotion(skeletonMotion) viewer.doc.addRenderer( 'skeleton', yr.JointMotionRenderer(skeletonMotion, (0, 0, 255), yr.LINK_LINE)) viewer.doc.addRenderer('mesh', yr.MeshRenderer(mesh)) viewer.startTimer(1 / 30.) viewer.show() Fl.run()
def test_readOgreMeshFileAsMesh(): meshFilePath = '../samples/woody2_15.mesh.xml' mesh = readOgreMeshFileAsMesh(meshFilePath, .01) viewer = ysv.SimpleViewer() viewer.doc.addRenderer('mesh', yr.MeshRenderer(mesh)) viewer.doc.addObject('mesh', mesh) viewer.startTimer(1 / 30.) viewer.show() Fl.run()
def test_compare_skeletonanimation_vs_bvhmotion(): meshFilePath = '../samples/physics2_woody_binding1.mesh.xml' skeletonFilePath = '../samples/physics2_woody_binding1.skeleton.xml' skeletonMesh, skeletonMotions = readOgreDataFiles( meshFilePath, .01, skeletonFilePath) skeletonMotion = skeletonMotions[0] ysu.mergePoints(skeletonMesh) bvhMotion = yf.readBvhFile('../samples/wd2_WalkSameSame00.bvh', .01) bvhMesh = copy.deepcopy(skeletonMesh) # bvhMesh.initialize(bvhMotion[0]) viewer = ysv.SimpleViewer() viewer.doc.addRenderer( 'skeletonMotion', yr.JointMotionRenderer(skeletonMotion, (0, 0, 255), yr.LINK_LINE)) viewer.doc.addMotion2('skeletonMotion', skeletonMotion) viewer.doc.addRenderer( 'skeletonMesh', yr.MeshRenderer(skeletonMesh, (255 * .5, 255 * .5, 255))) viewer.doc.addRenderer( 'bvhMotion', yr.JointMotionRenderer(bvhMotion, (0, 255, 0), yr.LINK_LINE)) viewer.doc.addMotion2('bvhMotion', bvhMotion) viewer.doc.addRenderer( 'bvhMesh', yr.MeshRenderer(bvhMesh, (255 * .5, 255, 255 * .5))) def preFrameCallback(frame): if frame < len(skeletonMotion): skeletonMesh.update(skeletonMotion[frame]) if frame < len(bvhMotion): bvhMesh.update(bvhMotion[frame]) viewer.setPreFrameCallback(preFrameCallback) viewer.startTimer(1 / 30.) viewer.show() Fl.run()
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_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()
def test_submesh(): meshFilePath = '../samples/woody2_4.mesh.xml' mesh = yol.readOgreMeshFileAsMesh(meshFilePath, .01) print(mesh) print(mesh.getSubmeshFaceIndices('woody2_14_FOOT1')) print(mesh.getSubmeshVertexIndices('woody2_14_FOOT1')) print(mesh.getSubmeshVertexPositions('woody2_14_FOOT1')) positions = mesh.getSubmeshVertexPositions('woody2_14_FOOT1') viewer = ysv.SimpleViewer() viewer.record(False) viewer.doc.addRenderer('mesh', yr.MeshRenderer(mesh, (127,127,127))) viewer.doc.addObject('mesh', mesh) def extraDrawCallback(): for p in positions: ygh.drawPoint(p) viewer.setExtraDrawCallback(extraDrawCallback) viewer.startTimer(1/30.) viewer.show() Fl.run()
# 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) vertexMasses = ysu.getDistributedVertexMasses(mesh, massMap) upperVertexIndices, upperMass = ysu.getUpperInfo(mesh, vertexMasses) totalMass = ysu.getTotalMass(vertexMasses) 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 preFrameCallback(frame): mesh.update(motion[frame]) def extraDrawCallback(): frame = viewer.getCurrentFrame() meshPositions = meshMotion[frame].getPointPositions() ygh.drawPoint( ysu.getUpperCOMPos(meshPositions, vertexMasses, upperVertexIndices, upperMass)) ygh.drawPoint(ysu.getCOMPos(meshPositions, vertexMasses, totalMass), (255, 255, 0))
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) viewer.doc.addRenderer( 'motion', yr.JointMotionRenderer(motion, (127, 127, 255), yr.LINK_BONE)) viewer.doc.addObject('motion', motion) def preFrameCallback(frame): mesh.update(motion[frame]) # mesh2.update(motion[frame]) viewer.setPreFrameCallback(preFrameCallback)
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()