Beispiel #1
0
    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()
Beispiel #2
0
 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()
Beispiel #3
0
    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()
Beispiel #4
0
    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()
Beispiel #5
0
    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()
Beispiel #6
0
    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()
Beispiel #7
0
    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()
Beispiel #8
0
    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()
Beispiel #9
0
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()
Beispiel #10
0
    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()
Beispiel #11
0
    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()
Beispiel #12
0
 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()
Beispiel #13
0
    #    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))
Beispiel #14
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)
Beispiel #15
0
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()