Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
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;
Expand Down Expand Up @@ -129,12 +130,19 @@ public static void generate(Mesh mesh) {
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:
Expand All @@ -148,12 +156,12 @@ private static boolean generateTangents(Mesh mesh) {
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;
}
Expand Down
Loading