public int compare(OCTTriangle a, OCTTriangle b) { if (a.getGeometryIndex() < b.getGeometryIndex()){ return -1; }else if (a.getGeometryIndex() > b.getGeometryIndex()){ return 1; }else{ return 0; } } }
public final void intersectWhere(Ray r, Geometry[] geoms, float sceneMin, float sceneMax, CollisionResults results){ for (OCTTriangle t : tris){ float d = r.intersects(t.get1(), t.get2(), t.get3()); if (Float.isInfinite(d)) continue; Vector3f contactPoint = new Vector3f(r.getDirection()).multLocal(d).addLocal(r.getOrigin()); CollisionResult result = new CollisionResult(geoms[t.getGeometryIndex()], contactPoint, d, t.getTriangleIndex()); results.addCollision(result); } for (int i = 0; i < 8; i++){ Octnode child = children[i]; if (child == null) continue; if (child.bbox.intersects(r)){ child.intersectWhere(r, geoms, sceneMin, sceneMax, results); } } }
Range r = ranges.get(tris.get(i).getGeometryIndex()); if (r != null){ }else{ ranges.put(tris.get(i).getGeometryIndex(), new Range(i, 1)); in.getTriangle(t.getTriangleIndex(), vertIndicies);
public static void main(String[] args){ Vector3f z = Vector3f.ZERO; Geometry g = new Geometry("quad", new Quad(2,2)); Geometry g2 = new Geometry("quad", new Quad(2,2)); List<OCTTriangle> tris = new ArrayList<OCTTriangle>(); tris.add(new OCTTriangle(z, z, z, 1, 0)); tris.add(new OCTTriangle(z, z, z, 0, 1)); List<Geometry> firstOne = TriangleCollector.gatherTris(new Geometry[]{ g, g2 }, tris); System.out.println(firstOne.get(0).getMesh()); }
for (int i = 0; i < m.getTriangleCount(); i++){ m.getTriangle(i, t); OCTTriangle ot = new OCTTriangle(t.get1(), t.get2(), t.get3(), i, g); allTris.add(ot);