Beispiel #1
0
// Add muscles that connect the segments
void DuCTTTestModel::addMuscles(tgStructure& snake)
{
    const std::vector<tgStructure*> children = snake.getChildren();
    for (size_t i = 1; i < children.size(); ++i)
    {
        tgNodes n0 = children[i-1]->getNodes();
        tgNodes n1 = children[i  ]->getNodes();

        snake.addPair(n0[0], n1[0], "top right muscle");
        snake.addPair(n0[1], n1[1], "top left muscle");

        snake.addPair(n0[2], n1[0], "front right muscle");
        snake.addPair(n0[2], n1[1], "front left muscle");

        snake.addPair(n0[3], n1[0], "back right muscle");
        snake.addPair(n0[3], n1[1], "back left muscle");

        snake.addPair(n0[2], n1[2], "bottom front muscle");
        snake.addPair(n0[3], n1[3], "bottom back muscle");
    }
}
// Add muscles that connect the segments
void VerticalSpineModel::addMuscles(tgStructure& snake)
{
    const std::vector<tgStructure*> children = snake.getChildren();
    for (size_t i = 1; i < children.size(); ++i)
    {
        tgNodes n0 = children[i-1]->getNodes();
        tgNodes n1 = children[i  ]->getNodes();
                
        // vertical muscles
        snake.addPair(n0[0], n1[0], "vertical muscle a");
        snake.addPair(n0[1], n1[1], "vertical muscle b");
        snake.addPair(n0[2], n1[2], "vertical muscle c");
        snake.addPair(n0[3], n1[3], "vertical muscle d");

        // saddle muscles
        snake.addPair(n0[2], n1[1], tgString("saddle muscle seg", i-1));
        snake.addPair(n0[3], n1[1], tgString("saddle muscle seg", i-1));
        snake.addPair(n0[2], n1[0], tgString("saddle muscle seg", i-1));
        snake.addPair(n0[3], n1[0], tgString("saddle muscle seg", i-1));
    }
}
void ScarrArmModel::addMuscles(tgStructure& s) {
    const std::vector<tgStructure*> children = s.getChildren();

    s.addPair(0, 3, "olecranon muscle"); //NB actually fascial tissue
    s.addPair(0, 4, "olecranon muscle"); //NB actually fascial tissue
    s.addPair(1, 3, "olecranon muscle"); //NB actually fascial tissue
    s.addPair(1, 4, "olecranon muscle"); //NB actually fascial tissue
    s.addPair(2, 3, "olecranon muscle"); //NB actually fascial tissue
    s.addPair(2, 4, "olecranon muscle"); //NB actually fascial tissue
    
    s.addPair(0, 13, "olecranon muscle"); //NB actually fascial tissue
    s.addPair(1, 13, "olecranon muscle"); //NB actually fascial tissue
    s.addPair(11, 13, "olecranon muscle"); //NB actually fascial tissue
    s.addPair(0, 14, "olecranon muscle"); //NB actually fascial tissue
    s.addPair(1, 14, "olecranon muscle"); //NB actually fascial tissue
    s.addPair(11, 14, "olecranon muscle"); //NB actually fascial tissue

    s.addPair(0, 12, "olecranon muscle"); //NB actually fascial tissue
    s.addPair(11, 12, "olecranon muscle"); //NB actually fascial tissue
    s.addPair(0, 5, "brachioradialis muscle");
    s.addPair(2, 5, "olecranon muscle"); //NB actually fascial tissue
    s.addPair(3, 13, "right anconeus muscle");
    s.addPair(4, 14, "left anconeus muscle");
}
void BigDoxieNoFeet::addMuscles(tgStructure& puppy){ 
        //Time to add the muscles to the structure. Todo: try to clean this up some more.
    std::vector<tgStructure*> children = puppy.getChildren();
    for(std::size_t i = 2; i < (children.size() - (m_hips + m_legs)); i++) { 

        tgNodes n0 = children[i-2]->getNodes();
        tgNodes n1 = children[i-1]->getNodes();
        tgNodes n2 = children[i]->getNodes();


        if(i==2){
            //Extra muscles, to keep front vertebra from swinging. 
            puppy.addPair(n0[3], n1[3], tgString("spine front upper right muscleAct1 seg", i-2) + tgString(" seg", i-1));
            puppy.addPair(n0[3], n1[4], tgString("spine front upper left muscleAct1 seg", i-2) + tgString(" seg", i-1));

            puppy.addPair(n0[4], n1[3], tgString("spine front lower right muscleAct2 seg", i-2) + tgString(" seg", i-1));
            puppy.addPair(n0[4], n1[4], tgString("spine front lower left muscleAct2 seg", i-2) + tgString(" seg", i-1));


        }        

        //Add muscles to the puppy
        if(i < 3){
            if(i % 2 == 0){ //front
                puppy.addPair(n0[1], n1[3], tgString("spine front lower right muscleAct2 seg", i-2) + tgString(" seg", i-1));
                puppy.addPair(n0[1], n1[4], tgString("spine front lower left muscleAct2 seg", i-2) + tgString(" seg", i-1));
                puppy.addPair(n0[2], n1[3], tgString("spine front upper right muscleAct1 seg", i-2) + tgString(" seg", i-1));
                puppy.addPair(n0[2], n1[4], tgString("spine front upper left muscleAct1 seg", i-2) + tgString(" seg", i-1));
            }
            else{ //rear
                puppy.addPair(n0[1], n1[3], tgString("spine rear upper left muscleAct1 seg", i-2) + tgString(" seg", i-1));
                puppy.addPair(n0[1], n1[4], tgString("spine rear lower left muscleAct2 seg", i-2) + tgString(" seg", i-1));
                puppy.addPair(n0[2], n1[3], tgString("spine rear upper right muscleAct1 seg", i-2) + tgString(" seg", i-1));
                puppy.addPair(n0[2], n1[4], tgString("spine rear lower right muscleAct2 seg", i-2) + tgString(" seg", i-1)); 
            }
        }
        if(i < m_segments){//Was 6
            if(i % 2 == 0){
                puppy.addPair(n0[1], n2[4], tgString("spine2 bottom muscleAct2 seg", i-2) + tgString(" seg", i-1));
                puppy.addPair(n0[2], n2[3], tgString("spine2 top muscleAct1 seg", i-2) + tgString(" seg", i-1));
            }
            else{
                puppy.addPair(n0[1], n2[4], tgString("spine2 lateral left muscleAct1 seg", i-2) + tgString(" seg", i-1));
                puppy.addPair(n0[2], n2[3], tgString("spine2 lateral right muscleAct1 seg", i-2) + tgString(" seg", i-1));

            }
        }
        if(i > 0 && i < m_segments){
            if(i % 2 == 0){//rear
                puppy.addPair(n1[1], n2[3], tgString("spine rear upper left muscleAct1 seg", i-1) + tgString(" seg", i));
                puppy.addPair(n1[1], n2[4], tgString("spine rear lower left muscleAct2 seg", i-1) + tgString(" seg", i));
                puppy.addPair(n1[2], n2[3], tgString("spine rear upper right muscleAct1 seg", i-1) + tgString(" seg", i));
                puppy.addPair(n1[2], n2[4], tgString("spine rear lower right muscleAct2 seg", i-1) + tgString(" seg", i));
            }
            else{//front

                puppy.addPair(n1[1], n2[3], tgString("spine front lower right muscleAct2 seg", i-1) + tgString(" seg", i));
                puppy.addPair(n1[1], n2[4], tgString("spine front lower left muscleAct2 seg", i-1) + tgString(" seg", i));
                puppy.addPair(n1[2], n2[3], tgString("spine front upper right muscleAct1 seg", i-1) + tgString(" seg", i));
                puppy.addPair(n1[2], n2[4], tgString("spine front upper left muscleAct1 seg", i-1) + tgString(" seg", i));
            }
        }
	if (i >= 2 && i < m_segments){
	    puppy.addPair(n1[3], n2[3], tgString("spine all spiral muscleAct1 seg", i-1) + tgString(" seg", i));
	    puppy.addPair(n1[4], n2[3], tgString("spine all spiral muscleAct1 seg", i-1) + tgString(" seg", i));
	    puppy.addPair(n1[3], n2[4], tgString("spine all spiral muscleAct1 seg", i-1) + tgString(" seg", i));
	    puppy.addPair(n1[4], n2[4], tgString("spine all spiral muscleAct1 seg", i-1) + tgString(" seg", i));
	}
        if(i == m_segments - 1){
            //rear
            puppy.addPair(n1[1], n2[2], tgString("spine rear lower left muscleAct2 seg", i-1) + tgString(" seg", i));
            puppy.addPair(n1[2], n2[2], tgString("spine rear lower right muscleAct2 seg", i-1) + tgString(" seg", i));
            puppy.addPair(n1[1], n2[1], tgString("spine rear upper left muscleAct1 seg", i-1) + tgString(" seg", i));
            puppy.addPair(n1[2], n2[1], tgString("spine rear upper right muscleAct1 seg", i-1) + tgString(" seg", i));  
        }
        
    }


    //Now add muscles to hips.... 
    tgNodes n0 = children[0]->getNodes();
    tgNodes n1 = children[1]->getNodes();
    tgNodes n2 = children[2]->getNodes();
    tgNodes n3 = children[3]->getNodes();
    tgNodes n4 = children[4]->getNodes();
    tgNodes n5 = children[5]->getNodes();
    tgNodes n6 = children[6]->getNodes();
    tgNodes n7 = children[7]->getNodes();
    tgNodes n8 = children[8]->getNodes();
    tgNodes n9 = children[9]->getNodes();
    tgNodes n10 = children[10]->getNodes();
    tgNodes n11 = children[11]->getNodes();
    tgNodes n12 = children[12]->getNodes();
    tgNodes n13 = children[13]->getNodes();
    tgNodes n14 = children[14]->getNodes();
    tgNodes n15 = children[15]->getNodes();
    tgNodes n16 = children[16]->getNodes();
    
    //Left shoulder muscles
    puppy.addPair(n9[1], n1[1], tgString("left shoulder rear upper muscleAct1 seg", 6) + tgString(" seg", 1));
    puppy.addPair(n9[1], n1[4], tgString("left shoulder front upper muscleAct1 seg", 6) + tgString(" seg", 1));
    puppy.addPair(n9[1], n0[2], tgString("left shoulder front top muscleAct1 seg", 6) + tgString(" seg", 0));
    puppy.addPair(n9[1], n2[3], tgString("left shoulder rear top muscleAct1 seg", 6) + tgString(" seg", 2));

    puppy.addPair(n9[3], n1[1], tgString("left shoulder rear lower muscleAct1 seg", 6) + tgString(" seg", 1));
    puppy.addPair(n9[3], n1[4], tgString("left shoulder front lower muscleAct1 seg", 6) + tgString(" seg", 1));
    puppy.addPair(n9[3], n0[1], tgString("left shoulder front bottom muscleAct1 seg", 6) + tgString(" seg", 0));
    puppy.addPair(n9[3], n2[4], tgString("left shoulder rear bottom muscleAct1 seg", 6) + tgString(" seg", 2));

    //Extra muscles, to move left shoulder forward and back:
    puppy.addPair(n9[0], n1[1], tgString("left shoulder rear mid muscleAct1 seg", 6) + tgString(" seg", 1));
    puppy.addPair(n9[0], n1[4], tgString("left shoulder front mid muscleAct1 seg", 6) + tgString(" seg", 1));

    //Left hip muscles
    puppy.addPair(n10[1], n7[1], tgString("left hip rear upper muscleAct1 seg", 7) + tgString(" seg", 5));
    puppy.addPair(n10[1], n7[4], tgString("left hip front upper muscleAct1 seg", 7) + tgString(" seg", 5));
    puppy.addPair(n10[1], n6[2], tgString("left hip front top muscleAct1 seg", 7) + tgString(" seg", 4));
    puppy.addPair(n10[1], n8[3], tgString("left hip rear top muscleAct1 seg", 7) + tgString(" seg", 4));

    puppy.addPair(n10[3], n7[1], tgString("left hip rear lower muscleAct1 seg", 7) + tgString(" seg", 5));
    puppy.addPair(n10[3], n7[4], tgString("left hip front lower muscleAct1 seg", 7) + tgString(" seg", 5));
    puppy.addPair(n10[3], n6[1], tgString("left hip front bottom muscleAct1 seg", 7) + tgString(" seg", 4));
    puppy.addPair(n10[3], n8[4], tgString("left hip front bottom muscleAct1 seg", 7) + tgString(" seg", 6));

    //Extra muscles, to move left hip forward and back:
    puppy.addPair(n10[0], n7[1], tgString("left hip rear mid muscleAct1 seg", 7) + tgString(" seg", 3)); //could also be n3[3]
    puppy.addPair(n10[0], n7[4], tgString("left hip front mid muscleAct1 seg", 7) + tgString(" seg", 5));

    //Right shoulder muscles
    puppy.addPair(n11[1], n1[2], tgString("right shoulder rear upper muscleAct1 seg", 8) + tgString(" seg", 1));
    puppy.addPair(n11[1], n1[3], tgString("right shoulder front upper muscleAct1 seg", 8) + tgString(" seg", 1));
    puppy.addPair(n11[1], n0[2], tgString("right shoulder front top muscleAct1 seg", 8) + tgString(" seg", 0));
    puppy.addPair(n11[1], n2[3], tgString("right shoulder rear top muscleAct1 seg", 8) + tgString(" seg", 2));

    puppy.addPair(n11[3], n1[2], tgString("right shoulder rear lower muscleAct1 seg", 8) + tgString(" seg", 1));
    puppy.addPair(n11[3], n1[3], tgString("right shoulder front lower muscleAct1 seg", 8) + tgString(" seg", 1));
    puppy.addPair(n11[3], n0[1], tgString("right shoulder front bottom muscleAct1 seg", 8) + tgString(" seg", 0));
    puppy.addPair(n11[3], n2[4], tgString("right shoulder rear bottom muscleAct1 seg", 8) + tgString(" seg", 2));

    //Extra muscles, to move right shoulder forward and back:
    puppy.addPair(n11[0], n1[2], tgString("right shoulder rear mid muscleAct1 seg", 8) + tgString(" seg", 1));
    puppy.addPair(n11[0], n1[3], tgString("right shoulder front mid muscleAct1 seg", 8) + tgString(" seg", 1));

    //Right hip muscles
    puppy.addPair(n12[1], n7[2], tgString("right hip rear upper muscleAct1 seg", 9) + tgString(" seg", 5));
    puppy.addPair(n12[1], n7[3], tgString("right hip front upper muscleAct1 seg", 9) + tgString(" seg", 5));
    puppy.addPair(n12[1], n6[2], tgString("right hip front top muscleAct1 seg", 9) + tgString(" seg", 4));
    puppy.addPair(n12[1], n8[3], tgString("right hip rear top muscleAct1 seg", 9) + tgString(" seg", 4));

    puppy.addPair(n12[3], n7[2], tgString("right hip rear lower muscleAct1 seg", 9) + tgString(" seg", 5));
    puppy.addPair(n12[3], n7[3], tgString("right hip front lower muscleAct1 seg", 9) + tgString(" seg", 5));
    puppy.addPair(n12[3], n6[1], tgString("right hip bottom muscleAct1 seg", 9) + tgString(" seg", 4));  
    puppy.addPair(n12[3], n8[4], tgString("right hip bottom muscleAct1 seg", 9) + tgString(" seg", 6));  

    //Extra muscles, to move right hip forward and back:
    puppy.addPair(n12[0], n7[2], tgString("right hip rear mid muscle seg", 9) + tgString(" seg", 3)); //could also be n3[3]
    puppy.addPair(n12[0], n7[3], tgString("right hip front mid muscleAct1 seg", 9) + tgString(" seg", 5));

    //Leg/hip connections:

    //Left front leg/shoulder
    puppy.addPair(n13[4], n9[3], tgString("right outer bicep muscle3 seg", 13) + tgString(" seg", 9));
    puppy.addPair(n13[4], n9[2], tgString("right inner bicep muscle3 seg", 13) + tgString(" seg", 9));
    puppy.addPair(n13[4], n1[4], tgString("right front abdomen connection muscle3 seg", 13) + tgString(" seg", 1));
    puppy.addPair(n13[3], n1[1],tgString("all left foreleg limb front abdomen connection muscle3 seg", 13) + tgString(" seg", 1)); //Active
    puppy.addPair(n13[2], n1[4],tgString("all left foreleg limb front abdomen connection muscle3 seg", 13) + tgString(" seg", 1)); //Active

    puppy.addPair(n13[3], n9[3], tgString("right outer tricep muscle3 seg", 13) + tgString(" seg", 9));
    puppy.addPair(n13[3], n9[2], tgString("right inner tricep muscle3 seg", 13) + tgString(" seg", 9));

    puppy.addPair(n13[2], n9[3], tgString("right outer front tricep muscle3 seg", 13) + tgString(" seg", 9));
    puppy.addPair(n13[2], n9[2], tgString("right inner front tricep muscle3 seg", 13) + tgString(" seg", 9));

    //Adding muscle to pull up on right front leg:
    puppy.addPair(n13[4], n9[1], tgString("right mid bicep muscle3 seg", 13) + tgString(" seg", 9));
    
    //Right front leg/shoulder
    puppy.addPair(n15[4], n11[2], tgString("left inner bicep muscle3 seg", 15) + tgString(" seg", 11));
    puppy.addPair(n15[4], n11[3], tgString("left outer bicep muscle3 seg", 15) + tgString(" seg", 11));
    puppy.addPair(n15[4], n1[3], tgString("left front abdomen connection muscle3 seg", 12) + tgString(" seg", 1)); //Was n1[2]
    puppy.addPair(n15[3], n1[2], tgString("all right foreleg limb front abdomen connection muscle3 seg", 15) + tgString(" seg", 1)); //Active
    puppy.addPair(n15[2], n1[3], tgString("all right foreleg limb front abdomen connection muscle3 seg", 15) + tgString(" seg", 1)); //Active

    puppy.addPair(n15[3], n11[2], tgString("left inner tricep muscle3 seg", 12) + tgString(" seg", 8));
    puppy.addPair(n15[3], n11[3], tgString("left outer tricep muscle3 seg", 12) + tgString(" seg", 8));

    puppy.addPair(n15[2], n11[2], tgString("left inner front tricep muscle3 seg", 12) + tgString(" seg", 8));
    puppy.addPair(n15[2], n11[3], tgString("left outer front tricep muscle3 seg", 12) + tgString(" seg", 8));

    //Adding muscle to pull up on left front leg:
    puppy.addPair(n15[4], n11[1], tgString("left mid bicep muscle3 seg", 12) + tgString(" seg", 8));

    //Left rear leg/hip
    puppy.addPair(n14[4], n10[3], tgString("right outer thigh muscle3 seg", 11) + tgString(" seg", 7)); 
    puppy.addPair(n14[4], n10[2], tgString("right inner thigh muscle3 seg", 11) + tgString(" seg", 7));

    puppy.addPair(n14[4], n5[1],tgString("right rear abdomen connection muscle3 seg", 11) + tgString(" seg", 3)); 
    puppy.addPair(n14[3], n7[1],tgString("right rear abdomen connection muscle3 seg", 11) + tgString(" seg", 5));
    puppy.addPair(n14[2], n7[4],tgString("right rear abdomen connection muscle3 seg", 11) + tgString(" seg", 5)); 

    puppy.addPair(n14[3], n10[3], tgString("right outer calf muscle3 seg", 11) + tgString(" seg", 7));
    puppy.addPair(n14[3], n10[2], tgString("right inner calf muscle3 seg", 11) + tgString(" seg", 7));

    puppy.addPair(n14[2], n10[3], tgString("right outer front calf muscle3 seg", 11) + tgString(" seg", 7));
    puppy.addPair(n14[2], n10[2], tgString("right inner front calf muscle3 seg", 11) + tgString(" seg", 7));

    //Adding muscle to pull rear right leg up:
    puppy.addPair(n14[4], n10[1], tgString("right central thigh muscle3 seg", 11) + tgString(" seg", 7));

    //Right rear leg/hip
    puppy.addPair(n16[4], n12[2], tgString("left inner thigh muscle3 seg", 13) + tgString(" seg", 9)); 
    puppy.addPair(n16[4], n12[3], tgString("left outer thigh muscle3 seg", 13) + tgString(" seg", 9));

    puppy.addPair(n16[4], n5[2], tgString("left rear abdomen connection muscle3 seg", 13) + tgString(" seg", 3)); 
    puppy.addPair(n16[3], n7[2], tgString("left rear abdomen connection muscle3 seg", 13) + tgString(" seg", 5)); 
    puppy.addPair(n16[2], n7[3], tgString("left rear abdomen connection muscle3 seg", 13) + tgString(" seg", 5)); 

    puppy.addPair(n16[3], n12[2], tgString("left inner calf muscle3 seg", 13) + tgString(" seg", 9));
    puppy.addPair(n16[3], n12[3], tgString("left outer calf muscle3 seg", 13) + tgString(" seg", 9));

    puppy.addPair(n16[2], n12[2], tgString("left inner front calf muscle3 seg", 13) + tgString(" seg", 9));
    puppy.addPair(n16[2], n12[3], tgString("left outer front calf muscle3 seg", 13) + tgString(" seg", 9));

    //Adding muscle to pull rear left leg up:
    puppy.addPair(n16[4], n12[1], tgString("left central thigh muscle3 seg", 13) + tgString(" seg", 9));

    //Populate feet with muscles. Todo: think up names to differentiate each!
    /*for(std::size_t i = (m_segments + m_hips + m_legs); i < children.size(); i++) { 
        tgNodes ni = children[i]->getNodes();
        tgNodes ni4 = children[i-4]->getNodes();
        
        puppy.addPair(ni[0],ni[1],tgString("foot muscle seg", i));
        puppy.addPair(ni[0],ni[3],tgString("foot muscle seg", i));
        puppy.addPair(ni[1],ni[2],tgString("foot muscle seg", i));
        puppy.addPair(ni[2],ni[3],tgString("foot muscle seg", i));
        puppy.addPair(ni[0],ni[7],tgString("foot muscle2 seg", i));
        puppy.addPair(ni[1],ni[4],tgString("foot muscle2 seg", i));
        puppy.addPair(ni[2],ni[5],tgString("foot muscle2 seg", i));
        puppy.addPair(ni[3],ni[6],tgString("foot muscle2 seg", i));
        puppy.addPair(ni[4],ni[5],tgString("foot muscle2 seg", i));
        puppy.addPair(ni[4],ni[7],tgString("foot muscle2 seg", i));
        puppy.addPair(ni[5],ni[6],tgString("foot muscle2 seg", i));
        puppy.addPair(ni[6],ni[7],tgString("foot muscle2 seg", i));
        
        //Connect feet to legs:
        puppy.addPair(ni4[5],ni[0],tgString("foot muscle2 seg", i) + tgString(" seg", i-4));
        puppy.addPair(ni4[5],ni[1],tgString("foot muscle2 seg", i) + tgString(" seg", i-4));
        puppy.addPair(ni4[5],ni[2],tgString("foot muscle2 seg", i) + tgString(" seg", i-4));
        puppy.addPair(ni4[5],ni[3],tgString("foot muscle2 seg", i) + tgString(" seg", i-4));

        puppy.addPair(ni4[0],ni[4],tgString("foot muscle2 seg", i) + tgString(" seg", i-4));
        puppy.addPair(ni4[0],ni[5],tgString("foot muscle2 seg", i) + tgString(" seg", i-4));
        puppy.addPair(ni4[0],ni[6],tgString("foot muscle2 seg", i) + tgString(" seg", i-4));
        puppy.addPair(ni4[0],ni[7],tgString("foot muscle2 seg", i) + tgString(" seg", i-4));

    }*/

}
void BigPuppySymmetricSpiralSegments::addMuscles(tgStructure& puppy){ 
        //Time to add the muscles to the structure. Todo: try to clean this up some more.
    std::vector<tgStructure*> children = puppy.getChildren();
    for(std::size_t i = 2; i < (children.size() - (m_hips + m_legs)); i++) { 

        tgNodes n0 = children[i-2]->getNodes();
        tgNodes n1 = children[i-1]->getNodes();
        tgNodes n2 = children[i]->getNodes();


        if(i==2){
            //Extra muscles, to keep front vertebra from swinging. 
            puppy.addPair(n0[3], n1[3], tgString("spine all main front upper right muscleAct1 seg", i-2) + tgString(" seg", i-1));
            puppy.addPair(n0[3], n1[4], tgString("spine all main front upper left muscleAct1 seg", i-2) + tgString(" seg", i-1));

            puppy.addPair(n0[4], n1[3], tgString("spine all main front lower right muscleAct2 seg", i-2) + tgString(" seg", i-1));
            puppy.addPair(n0[4], n1[4], tgString("spine all main front lower left muscleAct2 seg", i-2) + tgString(" seg", i-1));


        }        

        //Add muscles to the puppy
        if(i < 3){
            if(i % 2 == 0){ //front
                puppy.addPair(n0[1], n1[3], tgString("spine all main front lower right muscleAct2 seg", i-2) + tgString(" seg", i-1));
                puppy.addPair(n0[1], n1[4], tgString("spine all main front lower left muscleAct2 seg", i-2) + tgString(" seg", i-1));
                puppy.addPair(n0[2], n1[3], tgString("spine all main front upper right muscleAct1 seg", i-2) + tgString(" seg", i-1));
                puppy.addPair(n0[2], n1[4], tgString("spine main front upper left muscleAct1 seg", i-2) + tgString(" seg", i-1));
            }
            else{ //rear
                puppy.addPair(n0[1], n1[3], tgString("spine all main rear upper left muscleAct1 seg", i-2) + tgString(" seg", i-1));
                puppy.addPair(n0[1], n1[4], tgString("spine all main rear lower left muscleAct2 seg", i-2) + tgString(" seg", i-1));
                puppy.addPair(n0[2], n1[3], tgString("spine all main rear upper right muscleAct1 seg", i-2) + tgString(" seg", i-1));
                puppy.addPair(n0[2], n1[4], tgString("spine all main rear lower right muscleAct2 seg", i-2) + tgString(" seg", i-1)); 
            }
        }
        if(i < 7){//Was 6
            if(i % 2 == 0){
                puppy.addPair(n0[1], n2[4], tgString("spine2 bottom muscleAct2 seg", i-2) + tgString(" seg", i-1));
                puppy.addPair(n0[2], n2[3], tgString("spine2 top muscleAct1 seg", i-2) + tgString(" seg", i-1));
            }
            else{
                puppy.addPair(n0[1], n2[4], tgString("spine2 lateral left muscleAct1 seg", i-2) + tgString(" seg", i-1));
                puppy.addPair(n0[2], n2[3], tgString("spine2 lateral right muscleAct1 seg", i-2) + tgString(" seg", i-1));

            }
        }
        if(i > 0 && i < 7){
            if(i % 2 == 0){//rear
                puppy.addPair(n1[1], n2[3], tgString("spine all main rear upper left muscleAct1 seg", i-1) + tgString(" seg", i));
                puppy.addPair(n1[1], n2[4], tgString("spine all main rear lower left muscleAct2 seg", i-1) + tgString(" seg", i));
                puppy.addPair(n1[2], n2[3], tgString("spine all main rear upper right muscleAct1 seg", i-1) + tgString(" seg", i));
                puppy.addPair(n1[2], n2[4], tgString("spine main rear lower right muscleAct2 seg", i-1) + tgString(" seg", i));
            }
            else{//front

                puppy.addPair(n1[1], n2[3], tgString("spine all main front lower right muscleAct2 seg", i-1) + tgString(" seg", i));
                puppy.addPair(n1[1], n2[4], tgString("spine all main front lower left muscleAct2 seg", i-1) + tgString(" seg", i));
                puppy.addPair(n1[2], n2[3], tgString("spine all main front upper right muscleAct1 seg", i-1) + tgString(" seg", i));
                puppy.addPair(n1[2], n2[4], tgString("spine all main front upper left muscleAct1 seg", i-1) + tgString(" seg", i));
            }
        }
	if (i >= 2 && i < 7){
	    puppy.addPair(n1[3], n2[3], tgString("spine all spiral muscleAct1 seg", i-1) + tgString(" seg", i));
	    puppy.addPair(n1[4], n2[3], tgString("spine all spiral muscleAct1 seg", i-1) + tgString(" seg", i));
	    puppy.addPair(n1[3], n2[4], tgString("spine all spiral muscleAct1 seg", i-1) + tgString(" seg", i));
	    puppy.addPair(n1[4], n2[4], tgString("spine spiral muscleAct1 seg", i-1) + tgString(" seg", i));
	}
        if(i == 6){
            //rear
            puppy.addPair(n1[1], n2[2], tgString("spine all rear lower left muscleAct2 seg", i-1) + tgString(" seg", i));
            puppy.addPair(n1[2], n2[2], tgString("spine all rear lower right muscleAct2 seg", i-1) + tgString(" seg", i));
            puppy.addPair(n1[1], n2[1], tgString("spine all rear upper left muscleAct1 seg", i-1) + tgString(" seg", i));
            puppy.addPair(n1[2], n2[1], tgString("spine all rear upper right muscleAct1 seg", i-1) + tgString(" seg", i));  
        }
        
    }


    //Now add muscles to hips.... 
    tgNodes n0 = children[0]->getNodes();
    tgNodes n1 = children[1]->getNodes();
    tgNodes n2 = children[2]->getNodes();
    tgNodes n3 = children[3]->getNodes();
    tgNodes n4 = children[4]->getNodes();
    tgNodes n5 = children[5]->getNodes();
    tgNodes n6 = children[6]->getNodes();
    tgNodes n7 = children[7]->getNodes();
    tgNodes n8 = children[8]->getNodes();
    tgNodes n9 = children[9]->getNodes();
    tgNodes n10 = children[10]->getNodes();
    tgNodes n11 = children[11]->getNodes();
    tgNodes n12 = children[12]->getNodes();
    tgNodes n13 = children[13]->getNodes();
    tgNodes n14 = children[14]->getNodes();

    //Adding long muscles to spine, for bending/arching:
    //puppy.addPair(n0[2], n6[3], tgString("spine secondary top arching muscleAct seg", 0) + tgString(" seg", 6)); //Change these to something other than "spine " or "spine2" when it's time to implement new code for them!
    //puppy.addPair(n0[1], n6[4], tgString("spine bottom arching muscleAct seg", 0) + tgString(" seg", 6));
    //puppy.addPair(n1[4], n5[1], tgString("spine right lateral arching muscleAct seg", 1) + tgString(" seg", 5));
    //puppy.addPair(n1[3], n5[2], tgString("spine left lateral arching muscleAct seg", 1) + tgString(" seg", 5));
    
    //Left shoulder muscles
    puppy.addPair(n7[1], n1[1], tgString("all left hip shoulder rear upper muscleAct1 seg", 6) + tgString(" seg", 1));
    puppy.addPair(n7[1], n1[4], tgString("all left hip shoulder front upper muscleAct1 seg", 6) + tgString(" seg", 1));
    puppy.addPair(n7[1], n0[2], tgString("all left hip shoulder front top muscleAct1 seg", 6) + tgString(" seg", 0));
    puppy.addPair(n7[1], n2[3], tgString("all left hip shoulder rear top muscleAct1 seg", 6) + tgString(" seg", 2));

    puppy.addPair(n7[3], n1[1], tgString("all left hip shoulder rear lower muscleAct1 seg", 6) + tgString(" seg", 1));
    puppy.addPair(n7[3], n1[4], tgString("all left hip shoulder front lower muscleAct1 seg", 6) + tgString(" seg", 1));
    puppy.addPair(n7[3], n0[1], tgString("all left hip shoulder front bottom muscleAct1 seg", 6) + tgString(" seg", 0));
    puppy.addPair(n7[3], n2[4], tgString("all left hip shoulder rear bottom muscleAct1 seg", 6) + tgString(" seg", 2));

    //Extra muscles, to move left shoulder forward and back:
    puppy.addPair(n7[0], n1[1], tgString("all left hip shoulder rear mid muscleAct1 seg", 6) + tgString(" seg", 1));
    puppy.addPair(n7[0], n1[4], tgString("all left hip shoulder front mid muscleAct1 seg", 6) + tgString(" seg", 1));

    //Left hip muscles
    puppy.addPair(n8[1], n5[1], tgString("all left hip rear upper muscleAct1 seg", 7) + tgString(" seg", 5));
    puppy.addPair(n8[1], n5[4], tgString("all left hip front upper muscleAct1 seg", 7) + tgString(" seg", 5));
    puppy.addPair(n8[1], n4[2], tgString("all left hip front top muscleAct1 seg", 7) + tgString(" seg", 4));
    puppy.addPair(n8[1], n6[3], tgString("all left hip rear top muscleAct1 seg", 7) + tgString(" seg", 4));

    puppy.addPair(n8[3], n5[1], tgString("all left hip rear lower muscleAct1 seg", 7) + tgString(" seg", 5));
    puppy.addPair(n8[3], n5[4], tgString("all left hip front lower muscleAct1 seg", 7) + tgString(" seg", 5));
    puppy.addPair(n8[3], n4[1], tgString("all left hip front bottom muscleAct1 seg", 7) + tgString(" seg", 4));
    puppy.addPair(n8[3], n6[4], tgString("all left hip front bottom muscleAct1 seg", 7) + tgString(" seg", 6));

    //Extra muscles, to move left hip forward and back:
    puppy.addPair(n8[0], n5[1], tgString("all left hip rear mid muscleAct1 seg", 7) + tgString(" seg", 3)); 
    puppy.addPair(n8[0], n5[4], tgString("all left hip front mid muscleAct1 seg", 7) + tgString(" seg", 5));

    //Right shoulder muscles
    puppy.addPair(n9[1], n1[2], tgString("all right hip shoulder rear upper muscleAct1 seg", 8) + tgString(" seg", 1));
    puppy.addPair(n9[1], n1[3], tgString("all right hip shoulder front upper muscleAct1 seg", 8) + tgString(" seg", 1));
    puppy.addPair(n9[1], n0[2], tgString("all right hip shoulder front top muscleAct1 seg", 8) + tgString(" seg", 0));
    puppy.addPair(n9[1], n2[3], tgString("all right hip shoulder rear top muscleAct1 seg", 8) + tgString(" seg", 2));

    puppy.addPair(n9[3], n1[2], tgString("all right hip shoulder rear lower muscleAct1 seg", 8) + tgString(" seg", 1));
    puppy.addPair(n9[3], n1[3], tgString("all right hip shoulder front lower muscleAct1 seg", 8) + tgString(" seg", 1));
    puppy.addPair(n9[3], n0[1], tgString("all right hip shoulder front bottom muscleAct1 seg", 8) + tgString(" seg", 0));
    puppy.addPair(n9[3], n2[4], tgString("all right hip shoulder rear bottom muscleAct1 seg", 8) + tgString(" seg", 2));

    //Extra muscles, to move right shoulder forward and back:
    puppy.addPair(n9[0], n1[2], tgString("all right hip shoulder rear mid muscleAct1 seg", 8) + tgString(" seg", 1));
    puppy.addPair(n9[0], n1[3], tgString("all right hip shoulder front mid muscleAct1 seg", 8) + tgString(" seg", 1));

    //Right hip muscles
    puppy.addPair(n10[1], n5[2], tgString("all right hip rear upper muscleAct1 seg", 9) + tgString(" seg", 5));
    puppy.addPair(n10[1], n5[3], tgString("all right hip front upper muscleAct1 seg", 9) + tgString(" seg", 5));
    puppy.addPair(n10[1], n4[2], tgString("all right hip front top muscleAct1 seg", 9) + tgString(" seg", 4));
    puppy.addPair(n10[1], n6[3], tgString("all right hip rear top muscleAct1 seg", 9) + tgString(" seg", 4));

    puppy.addPair(n10[3], n5[2], tgString("all right hip rear lower muscleAct1 seg", 9) + tgString(" seg", 5));
    puppy.addPair(n10[3], n5[3], tgString("all right hip front lower muscleAct1 seg", 9) + tgString(" seg", 5));
    puppy.addPair(n10[3], n4[1], tgString("all right hip bottom muscleAct1 seg", 9) + tgString(" seg", 4));  
    puppy.addPair(n10[3], n6[4], tgString("all right hip bottom muscleAct1 seg", 9) + tgString(" seg", 6));  

    //Extra muscles, to move right hip forward and back:
    puppy.addPair(n10[0], n5[2], tgString("all right hip rear mid muscleAct1 seg", 9) + tgString(" seg", 3)); //could also be n3[3]
    puppy.addPair(n10[0], n5[3], tgString("all right hip front mid muscleAct1 seg", 9) + tgString(" seg", 5));

    //Leg/hip connections:

    //Left front leg/shoulder
    puppy.addPair(n11[4], n7[3], tgString("right leg outer bicep muscle seg", 10) + tgString(" seg", 6));
    puppy.addPair(n11[4], n7[2], tgString("right leg inner bicep muscle seg", 10) + tgString(" seg", 6));
    puppy.addPair(n11[4], n1[4], tgString("right leg front abdomen connection muscle seg", 10) + tgString(" seg", 1));
    puppy.addPair(n11[3], n1[1],tgString("right leg front abdomen connection muscle seg", 11) + tgString(" seg", 5)); 
    puppy.addPair(n11[2], n1[4],tgString("right leg front abdomen connection muscle seg", 11) + tgString(" seg", 5)); 

    puppy.addPair(n11[3], n7[3], tgString("right leg outer tricep muscle seg", 10) + tgString(" seg", 6));
    puppy.addPair(n11[3], n7[2], tgString("right leg inner tricep muscle seg", 10) + tgString(" seg", 6));

    puppy.addPair(n11[2], n7[3], tgString("right leg outer front tricep muscle seg", 10) + tgString(" seg", 6));
    puppy.addPair(n11[2], n7[2], tgString("right leg inner front tricep muscle seg", 10) + tgString(" seg", 6));

    //Adding muscle to pull up on right front leg:
    puppy.addPair(n11[4], n7[1], tgString("right legAct mid bicep muscle3 seg", 10) + tgString(" seg", 6));
    
    //Right front leg/shoulder
    puppy.addPair(n13[4], n9[2], tgString("left leg inner bicep muscle seg", 12) + tgString(" seg", 8));
    puppy.addPair(n13[4], n9[3], tgString("left leg outer bicep muscle seg", 12) + tgString(" seg", 8));
    puppy.addPair(n13[4], n1[3], tgString("left leg front abdomen connection muscle seg", 12) + tgString(" seg", 1));
    puppy.addPair(n13[3], n1[2], tgString("left leg front abdomen connection muscle seg", 13) + tgString(" seg", 5)); 
    puppy.addPair(n13[2], n1[3], tgString("left leg front abdomen connection muscle seg", 13) + tgString(" seg", 5)); 


    puppy.addPair(n13[3], n9[2], tgString("left leg inner tricep muscle seg", 12) + tgString(" seg", 8));
    puppy.addPair(n13[3], n9[3], tgString("left leg outer tricep muscle seg", 12) + tgString(" seg", 8));

    puppy.addPair(n13[2], n9[2], tgString("left leg inner front tricep muscle seg", 12) + tgString(" seg", 8));
    puppy.addPair(n13[2], n9[3], tgString("left leg outer front tricep muscle seg", 12) + tgString(" seg", 8));

    //Adding muscle to pull up on left front leg:
    puppy.addPair(n13[4], n9[1], tgString("left legAct mid bicep muscle3 seg", 12) + tgString(" seg", 8));

    //Left rear leg/hip
    puppy.addPair(n12[4], n8[3], tgString("right leg outer thigh muscle seg", 11) + tgString(" seg", 7)); 
    puppy.addPair(n12[4], n8[2], tgString("right leg inner thigh muscle seg", 11) + tgString(" seg", 7));

    puppy.addPair(n12[4], n3[1],tgString("right leg rear abdomen connection muscle seg", 11) + tgString(" seg", 3)); 
    puppy.addPair(n12[3], n5[1],tgString("right leg rear abdomen connection muscle seg", 11) + tgString(" seg", 5)); 
    puppy.addPair(n12[2], n5[4],tgString("right leg rear abdomen connection muscle seg", 11) + tgString(" seg", 5)); 

    puppy.addPair(n12[3], n8[3], tgString("right leg outer calf muscle seg", 11) + tgString(" seg", 7));
    puppy.addPair(n12[3], n8[2], tgString("right leg inner calf muscle seg", 11) + tgString(" seg", 7));

    puppy.addPair(n12[2], n8[3], tgString("right leg outer front calf muscle seg", 11) + tgString(" seg", 7));
    puppy.addPair(n12[2], n8[2], tgString("right leg inner front calf muscle seg", 11) + tgString(" seg", 7));

    //Adding muscle to pull rear right leg up:
    puppy.addPair(n12[4], n8[1], tgString("right legAct central thigh muscle3 seg", 11) + tgString(" seg", 7));

    //Right rear leg/hip
    puppy.addPair(n14[4], n10[2], tgString("left leg inner thigh muscle seg", 13) + tgString(" seg", 9)); 
    puppy.addPair(n14[4], n10[3], tgString("left leg outer thigh muscle seg", 13) + tgString(" seg", 9));

    puppy.addPair(n14[4], n3[2], tgString("left leg rear abdomen connection muscle seg", 13) + tgString(" seg", 3)); 
    puppy.addPair(n14[3], n5[2], tgString("left leg rear abdomen connection muscle seg", 13) + tgString(" seg", 5)); 
    puppy.addPair(n14[2], n5[3], tgString("left leg rear abdomen connection muscle seg", 13) + tgString(" seg", 5)); 


    puppy.addPair(n14[3], n10[2], tgString("left leg inner calf muscle seg", 13) + tgString(" seg", 9));
    puppy.addPair(n14[3], n10[3], tgString("left leg outer calf muscle seg", 13) + tgString(" seg", 9));

    puppy.addPair(n14[2], n10[2], tgString("left leg inner front calf muscle seg", 13) + tgString(" seg", 9));
    puppy.addPair(n14[2], n10[3], tgString("left leg outer front calf muscle seg", 13) + tgString(" seg", 9));

    //Adding muscle to pull rear left leg up:
    puppy.addPair(n14[4], n10[1], tgString("left legAct central thigh muscle3 seg", 13) + tgString(" seg", 9));

}