Fixed indentation

experimental
abies 11 years ago
parent ae9f281976
commit 2f7dbe54dc
  1. 196
      jme3-core/src/main/java/com/jme3/util/TangentBinormalGenerator.java

@ -154,40 +154,40 @@ public class TangentBinormalGenerator {
} }
public static void generateParallel(Spatial scene, ExecutorService executor) { public static void generateParallel(Spatial scene, ExecutorService executor) {
final Set<Mesh> meshes = new HashSet<Mesh>(); final Set<Mesh> meshes = new HashSet<Mesh>();
scene.breadthFirstTraversal(new SceneGraphVisitor(){ scene.breadthFirstTraversal(new SceneGraphVisitor() {
@Override @Override
public void visit(Spatial spatial) { public void visit(Spatial spatial) {
if ( spatial instanceof Geometry ) { if (spatial instanceof Geometry) {
Geometry geom = (Geometry) spatial; Geometry geom = (Geometry) spatial;
Mesh mesh = geom.getMesh(); Mesh mesh = geom.getMesh();
// Check to ensure mesh has texcoords and normals before generating // Check to ensure mesh has texcoords and normals before generating
if (mesh.getBuffer(Type.TexCoord) != null if (mesh.getBuffer(Type.TexCoord) != null
&& mesh.getBuffer(Type.Normal) != null){ && mesh.getBuffer(Type.Normal) != null) {
meshes.add(mesh); meshes.add(mesh);
} }
} }
} }
}); });
List<Future<?>> futures = new ArrayList<Future<?>>(); List<Future<?>> futures = new ArrayList<Future<?>>();
for ( final Mesh m : meshes ) { for (final Mesh m : meshes) {
futures.add(executor.submit(new Runnable() { futures.add(executor.submit(new Runnable() {
@Override @Override
public void run() { public void run() {
generate(m,true,false); generate(m, true, false);
} }
})); }));
} }
for ( Future<?> f : futures ) { for (Future<?> f : futures) {
try { try {
f.get(); f.get();
} catch (Exception exc) { } catch (Exception exc) {
log.log(Level.WARNING,"Error while computing tangents",exc); log.log(Level.WARNING, "Error while computing tangents", exc);
} }
} }
} }
@ -556,72 +556,72 @@ public class TangentBinormalGenerator {
public static TriangleData processTriangle(int[] index, public static TriangleData processTriangle(int[] index,
Vector3f[] v, Vector2f[] t) { Vector3f[] v, Vector2f[] t) {
TempVars tmp = TempVars.get(); TempVars tmp = TempVars.get();
try { try {
Vector3f edge1 = tmp.vect1; Vector3f edge1 = tmp.vect1;
Vector3f edge2 = tmp.vect2; Vector3f edge2 = tmp.vect2;
Vector2f edge1uv = tmp.vect2d; Vector2f edge1uv = tmp.vect2d;
Vector2f edge2uv = tmp.vect2d2; Vector2f edge2uv = tmp.vect2d2;
Vector3f tangent = tmp.vect3; Vector3f tangent = tmp.vect3;
Vector3f binormal = tmp.vect4; Vector3f binormal = tmp.vect4;
Vector3f normal = tmp.vect5; Vector3f normal = tmp.vect5;
t[1].subtract(t[0], edge1uv); t[1].subtract(t[0], edge1uv);
t[2].subtract(t[0], edge2uv); t[2].subtract(t[0], edge2uv);
float det = edge1uv.x * edge2uv.y - edge1uv.y * edge2uv.x; float det = edge1uv.x * edge2uv.y - edge1uv.y * edge2uv.x;
boolean normalize = false; boolean normalize = false;
if (Math.abs(det) < ZERO_TOLERANCE) { if (Math.abs(det) < ZERO_TOLERANCE) {
log.log(Level.WARNING, "Colinear uv coordinates for triangle " log.log(Level.WARNING, "Colinear uv coordinates for triangle "
+ "[{0}, {1}, {2}]; tex0 = [{3}, {4}], " + "[{0}, {1}, {2}]; tex0 = [{3}, {4}], "
+ "tex1 = [{5}, {6}], tex2 = [{7}, {8}]", + "tex1 = [{5}, {6}], tex2 = [{7}, {8}]",
new Object[]{index[0], index[1], index[2], new Object[]{index[0], index[1], index[2],
t[0].x, t[0].y, t[1].x, t[1].y, t[2].x, t[2].y}); t[0].x, t[0].y, t[1].x, t[1].y, t[2].x, t[2].y});
det = 1; det = 1;
normalize = true; normalize = true;
} }
v[1].subtract(v[0], edge1); v[1].subtract(v[0], edge1);
v[2].subtract(v[0], edge2); v[2].subtract(v[0], edge2);
tangent.set(edge1); tangent.set(edge1);
tangent.normalizeLocal(); tangent.normalizeLocal();
binormal.set(edge2); binormal.set(edge2);
binormal.normalizeLocal(); binormal.normalizeLocal();
if (Math.abs(Math.abs(tangent.dot(binormal)) - 1) if (Math.abs(Math.abs(tangent.dot(binormal)) - 1)
< ZERO_TOLERANCE) { < ZERO_TOLERANCE) {
log.log(Level.WARNING, "Vertices are on the same line " log.log(Level.WARNING, "Vertices are on the same line "
+ "for triangle [{0}, {1}, {2}].", + "for triangle [{0}, {1}, {2}].",
new Object[]{index[0], index[1], index[2]}); new Object[]{index[0], index[1], index[2]});
} }
float factor = 1 / det; float factor = 1 / det;
tangent.x = (edge2uv.y * edge1.x - edge1uv.y * edge2.x) * factor; tangent.x = (edge2uv.y * edge1.x - edge1uv.y * edge2.x) * factor;
tangent.y = (edge2uv.y * edge1.y - edge1uv.y * edge2.y) * factor; tangent.y = (edge2uv.y * edge1.y - edge1uv.y * edge2.y) * factor;
tangent.z = (edge2uv.y * edge1.z - edge1uv.y * edge2.z) * factor; tangent.z = (edge2uv.y * edge1.z - edge1uv.y * edge2.z) * factor;
if (normalize) { if (normalize) {
tangent.normalizeLocal(); tangent.normalizeLocal();
} }
binormal.x = (edge1uv.x * edge2.x - edge2uv.x * edge1.x) * factor; binormal.x = (edge1uv.x * edge2.x - edge2uv.x * edge1.x) * factor;
binormal.y = (edge1uv.x * edge2.y - edge2uv.x * edge1.y) * factor; binormal.y = (edge1uv.x * edge2.y - edge2uv.x * edge1.y) * factor;
binormal.z = (edge1uv.x * edge2.z - edge2uv.x * edge1.z) * factor; binormal.z = (edge1uv.x * edge2.z - edge2uv.x * edge1.z) * factor;
if (normalize) { if (normalize) {
binormal.normalizeLocal(); binormal.normalizeLocal();
} }
tangent.cross(binormal, normal); tangent.cross(binormal, normal);
normal.normalizeLocal(); normal.normalizeLocal();
return new TriangleData( return new TriangleData(
tangent, tangent,
binormal, binormal,
normal); normal);
} finally { } finally {
tmp.release(); tmp.release();
} }
} }
public static void setToleranceAngle(float angle) { public static void setToleranceAngle(float angle) {

Loading…
Cancel
Save