diff --git a/engine/src/core/com/jme3/material/RenderState.java b/engine/src/core/com/jme3/material/RenderState.java
index 7dd400801..c6360557d 100644
--- a/engine/src/core/com/jme3/material/RenderState.java
+++ b/engine/src/core/com/jme3/material/RenderState.java
@@ -915,7 +915,6 @@ public class RenderState implements Cloneable, Savable {
return alphaFallOff;
}
-/*
public boolean isApplyAlphaFallOff() {
return applyAlphaFallOff;
}
@@ -955,7 +954,6 @@ public class RenderState implements Cloneable, Savable {
public boolean isApplyWireFrame() {
return applyWireFrame;
}
-*/
/**
* Merges this
state and additionalState
into
diff --git a/engine/src/core/com/jme3/util/TangentBinormalGenerator.java b/engine/src/core/com/jme3/util/TangentBinormalGenerator.java
index 5e36ecbeb..6b9606e64 100644
--- a/engine/src/core/com/jme3/util/TangentBinormalGenerator.java
+++ b/engine/src/core/com/jme3/util/TangentBinormalGenerator.java
@@ -370,8 +370,6 @@ public class TangentBinormalGenerator {
Vector3f tangentUnit = new Vector3f();
Vector3f binormalUnit = new Vector3f();
-
-
for (int i = 0; i < vertices.length; i++) {
float wCoord = -1;
@@ -592,11 +590,22 @@ public class TangentBinormalGenerator {
IntBuffer lineIndex = BufferUtils.createIntBuffer(vertexBuffer.capacity() / 3 * 6);
FloatBuffer lineVertex = BufferUtils.createFloatBuffer(vertexBuffer.capacity() * 4);
FloatBuffer lineColor = BufferUtils.createFloatBuffer(vertexBuffer.capacity() / 3 * 4 * 4);
-
+
+ boolean hasParity = mesh.getBuffer(Type.Tangent).getNumComponents() == 4;
+ float tangentW = 1;
+
for (int i = 0; i < vertexBuffer.capacity() / 3; i++) {
populateFromBuffer(origin, vertexBuffer, i);
populateFromBuffer(normal, normalBuffer, i);
- populateFromBuffer(tangent, tangentBuffer, i);
+
+ if (hasParity){
+ tangent.x = tangentBuffer.get(i * 4);
+ tangent.y = tangentBuffer.get(i * 4 + 1);
+ tangent.z = tangentBuffer.get(i * 4 + 2);
+ tangentW = tangentBuffer.get(i * 4 + 3);
+ }else{
+ populateFromBuffer(tangent, tangentBuffer, i);
+ }
int index = i * 4;
@@ -617,13 +626,16 @@ public class TangentBinormalGenerator {
setInBuffer(point, lineVertex, index + 1);
setInBuffer(tangentColor, lineColor, index + 1);
+ // wvBinormal = cross(wvNormal, wvTangent) * -inTangent.w
+
if (binormalBuffer == null) {
normal.cross(tangent, point);
+ point.multLocal(-tangentW);
point.normalizeLocal();
- }
- else {
+ } else {
populateFromBuffer(point, binormalBuffer, i);
}
+
point.multLocal(scale);
point.addLocal(origin);
setInBuffer(point, lineVertex, index + 2);