code: public void	setWorldPositions(float[] positions)
      {
          if (positions.length != mBones.length * 3)
          {
              throw new IllegalArgumentException("Destination array is the wrong size");
          }
          mNeedSync = true;
          for (int i = 0; i < mBones.length; ++i)
          {
              Bone bone = mBones[i];
              int t = i * 3;
  
              bone.setWorldPosition(positions[t], positions[t + 1], positions[t + 2]);
              bone.Changed = WORLD_POS;
              if (sDebug)
              {
                  Log.d("BONE", "setWorldPosition: %s %s", mSkeleton.getBoneName(i), bone.toString());
              }
          }
          sync();
      }
docs: Set the world positions for the bones in this pose (relative to skeleton root).
  <p>
  The world space positions for each bone are copied from the
  source array of vectors in the order of their bone index.
  The array must be as large as the number of bones in the skeleton
  (which can be obtained by calling {@link #getNumBones}).
  <p>
  All bones in the skeleton start out at the origin oriented along the bone axis (usually 0,0,1).
  The pose orients and positions each bone in the skeleton with respect to this initial state.
  The world bone matrix expresses the orientation and position of the bone relative
  to the root of the skeleton. This function sets the world space bone positions
  from an array of vectors. The bone orientations are unaffected and it is up to the
  caller to make sure these positions are compatible with the current pose rotations.
  @param positions	array with the positions in world coordinates.
  @see #setWorldRotations
  @see #setWorldMatrix
  @see #getWorldPositions