|
@@ -34,6 +34,7 @@ package com.jme3.util.mikktspace;
|
|
|
import com.jme3.math.FastMath;
|
|
|
import com.jme3.math.Vector3f;
|
|
|
import com.jme3.scene.*;
|
|
|
+import com.jme3.scene.VertexBuffer.Type;
|
|
|
import com.jme3.util.*;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
@@ -129,12 +130,19 @@ public class MikktspaceTangentGenerator {
|
|
|
private static boolean generateTangents(Mesh mesh) {
|
|
|
Mesh.Mode mode = mesh.getMode();
|
|
|
boolean hasTriangles;
|
|
|
+
|
|
|
+ if (mesh.getBuffer(Type.TexCoord) == null || mesh.getBuffer(Type.Normal) == null) {
|
|
|
+ logger.log(Level.SEVERE, "Tangent generation requires both a normal and texCoord buffer");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
switch (mode) {
|
|
|
case Points:
|
|
|
case Lines:
|
|
|
case LineStrip:
|
|
|
case LineLoop:
|
|
|
hasTriangles = false; // skip this mesh
|
|
|
+ logger.log(Level.SEVERE, "Tangent generation requires a mesh with Triangles", mode);
|
|
|
break;
|
|
|
|
|
|
case Triangles:
|
|
@@ -148,12 +156,12 @@ public class MikktspaceTangentGenerator {
|
|
|
logger.log(Level.SEVERE, "Tangent generation isn't implemented for mode={0}", mode);
|
|
|
return false;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if (hasTriangles) {
|
|
|
MikkTSpaceImpl context = new MikkTSpaceImpl(mesh);
|
|
|
- boolean result = genTangSpaceDefault(context);
|
|
|
+ boolean results = genTangSpaceDefault(context);
|
|
|
TangentUtils.generateBindPoseTangentsIfNecessary(mesh);
|
|
|
- return result;
|
|
|
+ return results;
|
|
|
}
|
|
|
return false;
|
|
|
}
|