diff --git a/cache/src/main/java/net/runelite/cache/definitions/loaders/ModelLoader.java b/cache/src/main/java/net/runelite/cache/definitions/loaders/ModelLoader.java index 25304eca01..312fcc7f8c 100644 --- a/cache/src/main/java/net/runelite/cache/definitions/loaders/ModelLoader.java +++ b/cache/src/main/java/net/runelite/cache/definitions/loaders/ModelLoader.java @@ -20,6 +20,7 @@ public class ModelLoader } def.computeNormals(); + def.computeTextureUVCoordinates(); return def; } diff --git a/model-viewer/src/main/java/net/runelite/modelviewer/ModelViewer.java b/model-viewer/src/main/java/net/runelite/modelviewer/ModelViewer.java index 3ee33853e2..af37e5090f 100644 --- a/model-viewer/src/main/java/net/runelite/modelviewer/ModelViewer.java +++ b/model-viewer/src/main/java/net/runelite/modelviewer/ModelViewer.java @@ -249,6 +249,11 @@ public class ModelViewer { for (int i = 0; i < md.faceCount; ++i) { + byte faceRenderType = md.faceRenderTypes[i]; + + if ((faceRenderType & 2) != 0) + continue; // what is this? + int vertexA = md.faceVertexIndices1[i]; int vertexB = md.faceVertexIndices2[i]; int vertexC = md.faceVertexIndices3[i]; @@ -278,7 +283,7 @@ public class ModelViewer int vertexCy = md.vertexPositionsY[vertexC]; int vertexCz = md.vertexPositionsZ[vertexC]; - short textureId = md.faceTextures[i]; + short textureId = md.faceTextures != null ? md.faceTextures[i] : -1; Color color; float[] u = null; @@ -611,9 +616,6 @@ public class ModelViewer ModelLoader loader = new ModelLoader(); md = loader.load(id, b); - md.computeNormals(); - md.computeTextureUVCoordinates(); - models[id] = md; return md; }