<!-- RUBY-BACKUP · part 181 -->
/* 4 legs */
  [[-0.35,0.15],[0.35,0.15],[-0.35,-0.15],[0.35,-0.15]].forEach(function(p){
    var leg = new THREE.Mesh(new THREE.CylinderGeometry(0.06, 0.05, 0.6, 8), brown);
    leg.position.set(p[0], 0.3, p[1]); g.add(leg);
  });
  /* neck + head */
  var neck = new THREE.Mesh(new THREE.CylinderGeometry(0.09, 0.12, 0.5, 10), brown);
  neck.position.set(0.5, 0.95, 0); neck.rotation.z = -0.4; g.add(neck);
  var head = new THREE.Mesh(new THREE.SphereGeometry(0.16, 12, 12), brown);
  head.position.set(0.65, 1.2, 0); head.scale.set(1.2, 1, 0.9); g.add(head);
  /* ears */
  [-1,1].forEach(function(s){
    var ear = new THREE.Mesh(new THREE.ConeGeometry(0.05, 0.15, 8), brown);
    ear.position.set(0.6, 1.35, s*0.1); g.add(ear);
    var eye = new THREE.Mesh(new THREE.SphereGeometry(0.03, 8, 8), dark);
    eye.position.set(0.75, 1.22, s*0.08); g.add(eye);
  });
  /* antlers */
  [-1,1].forEach(function(s){
    var ant = new THREE.Mesh(new THREE.CylinderGeometry(0.02, 0.03, 0.3, 6), dark);
    ant.position.set(0.6, 1.45, s*0.08); ant.rotation.z = -0.3; g.add(ant);
  });
  /* tail */
  var tail = new THREE.Mesh(new THREE.SphereGeometry(0.06, 8, 8), brown);
  tail.position.set(-0.48, 0.7, 0); g.add(tail);
  return g;
}
function buildRabbit(){
  var g = new THREE.Group();
  var gray = new THREE.MeshStandardMaterial({color: 0xbbbbbb, roughness: 0.9});
  var dark = new THREE.MeshStandardMaterial({color: 0x222222});
  var pink = new THREE.MeshStandardMaterial({color: 0xffaaaa});
  var body = new THREE.Mesh(new THREE.SphereGeometry(0.2, 12, 12), gray);
  body.scale.set(1.3, 1, 0.9); body.position.y = 0.25; g.add(body);
  var head = new THREE.Mesh(new THREE.SphereGeometry(0.13, 10, 10), gray);
  head.position.set(0.25, 0.4, 0); g.add(head);
  /* long ears */
  [-1,1].forEach(function(s){
    var ear = new THREE.Mesh(new THREE.CylinderGeometry(0.03, 0.04, 0.25, 8), gray);
    ear.position.set(0.22, 0.6, s*0.06); ear.rotation.z = -0.2; g.add(ear);
    var inner = new THREE.Mesh(new THREE.CylinderGeometry(0.015, 0.02, 0.2, 6), pink);
    inner.position.set(0.23, 0.6, s*0.06); inner.rotation.z = -0.2; g.add(inner);
    var eye = new THREE.Mesh(new THREE.SphereGeometry(0.025, 8, 8), dark);
    eye.position.set(0.33, 0.42, s*0.07); g.add(eye);
  });
  var nose = new THREE.Mesh(new THREE.SphereGeometry(0.02, 8, 8), pink);
  nose.position.set(0.37, 0.38, 0); g.add(nose);
  /* fluffy tail */
  var tail = new THREE.Mesh(new THREE.SphereGeometry(0.07, 8, 8),
    new THREE.MeshStandardMaterial({color: 0xffffff, roughness: 1}));
  tail.position.set(-0.28, 0.3, 0); g.add(tail);
  /* hind legs */
  [-1,1].forEach(function(s){
    var leg = new THREE.Mesh(new THREE.SphereGeometry(0.09, 8, 8), gray);
    leg.position.set(-0.1, 0.12, s*0.12); leg.scale.set(1.3, 0.8, 1); g.add(leg);
  });
  return g;
}
function buildEagle(){
  var g = new THREE.Group();
  var brown = new THREE.MeshStandardMaterial({color: 0x5a3a1a, roughness: 0.8});
  var white = new THREE.MeshStandardMaterial({color: 0xffffff, roughness: 0.8});
  var yellow = new THREE.MeshStandardMaterial({color: 0xffcc00, roughness: 0.5});
  var dark = new THREE.MeshStandardMaterial({color: 0x222222});
  var body = new THREE.Mesh(new THREE.SphereGeometry(0.22, 12, 12), brown);
  body.scale.set(1.4, 1, 0.9); body.position.y = 0.5; g.add(body);
  /* head — white (bald eagle) */
  var head = new THREE.Mesh(new THREE.SphereGeometry(0.14, 10, 10), white);
  head.position.set(0.3, 0.65, 0); g.add(head);
  /* beak */
  var beak = new THREE.Mesh(new THREE.ConeGeometry(0.05, 0.12, 8), yellow);
  beak.position.set(0.42, 0.63, 0); beak.rotation.z = -Math.PI/2; g.add(beak);
  [-1,1].forEach(function(s){
    var eye = new THREE.Mesh(new THREE.SphereGeometry(0.03, 8, 8), dark);
    eye.position.set(0.36, 0.68, s*0.07); g.add(eye);
  });
  /* wings */
  [-1,1].forEach(function(s){
    var wing = new THREE.Mesh(new THREE.BoxGeometry(0.5, 0.04, 0.35), brown);
    wing.position.set(-0.05, 0.55, s*0.3); wing.rotation.x = s*0.2; g.add(wing);
    /* wingtip feathers */
    for(var i=0; i<3; i++){
      var feather = new THREE.Mesh(new THREE.BoxGeometry(0.15, 0.02, 0.08), brown);
      feather.position.set(-0.3, 0.55, s*(0.35+i*0.08)); g.add(feather);
    }
  });
  /* tail */
  var tail = new THREE.Mesh(new THREE.BoxGeometry(0.25, 0.03, 0.2), white);
  tail.position.set(-0.35, 0.5, 0); g.add(tail);
  /* talons */
  [-1,1].forEach(function(s){
    var leg = new THREE.Mesh(new THREE.CylinderGeometry(0.03, 0.03, 0.2, 6), yellow);
    leg.position.set(0.05, 0.25, s*0.1); g.add(leg);
  });
  return g;
}
function buildCrab(){
  var g = new THREE.Group();
  var red = new THREE.MeshStandardMaterial({color: 0xcc3311, roughness: 0.6});
  var dark = new THREE.MeshStandardMaterial({color: 0x222222});
  /* body — wide */
  var body = new THREE.Mesh(new THREE.SphereGeometry(0.2, 12, 12), red);
  body.scale.set(1.4, 0.7, 1.2); body.position.y = 0.2; g.add(body);
  /* eyes on stalks */
  [-1,