Try using shorts rather than bytes for bone indices.

git-svn-id: svn+ssh://src.earth.threerings.net/nenya/trunk@238 ed5b42cb-e716-0410-a449-f6a68f950b19
This commit is contained in:
Andrzej Kapolka
2007-05-10 23:21:15 +00:00
parent 8a0168760f
commit fd192268c3
@@ -28,6 +28,7 @@ import java.io.Serializable;
import java.nio.ByteBuffer;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
import java.nio.ShortBuffer;
import java.util.ArrayList;
import java.util.Collections;
@@ -620,13 +621,13 @@ public class SkinMesh extends ModelMesh
{
int bonesPerVertex = _sconfig.getBonesPerVertex();
int size = getBatch(0).getVertexCount() * bonesPerVertex;
ByteBuffer bibuf = BufferUtils.createByteBuffer(size);
ShortBuffer bibuf = BufferUtils.createShortBuffer(size);
FloatBuffer bwbuf = BufferUtils.createFloatBuffer(size);
for (WeightGroup group : _weightGroups) {
byte[] indices = new byte[bonesPerVertex];
short[] indices = new short[bonesPerVertex];
for (int ii = 0; ii < indices.length; ii++) {
indices[ii] = (byte)((ii < group.bones.length) ?
indices[ii] = (short)((ii < group.bones.length) ?
ListUtil.indexOf(_bones, group.bones[ii]) : 0);
}
for (int ii = 0, widx = 0; ii < group.vertexCount; ii++) {