/** * Returns this geometry's mesh triangle count. * * @return this geometry's mesh triangle count. * * @see Mesh#getTriangleCount() */ public int getTriangleCount() { return mesh.getTriangleCount(); }
@Override public int getNumFaces() { return mesh.getTriangleCount(); }
private int calcLodTriCount(TriangleReductionMethod reductionMethod, float reductionValue) { int nbTris = mesh.getTriangleCount(); switch (reductionMethod) { case PROPORTIONAL: collapseCostLimit = NEVER_COLLAPSE_COST; return (int) (nbTris - (nbTris * (reductionValue))); case CONSTANT: collapseCostLimit = NEVER_COLLAPSE_COST; if (reductionValue < nbTris) { return nbTris - (int) reductionValue; } return 0; case COLLAPSE_COST: collapseCostLimit = reductionValue; return 0; default: return nbTris; } }
/** * Called by the Renderer when a mesh has been drawn. */ public void onMeshDrawn(Mesh mesh, int lod, int count){ if( !enabled ) return; numObjects += 1; numTriangles += mesh.getTriangleCount(lod) * count; numVertices += mesh.getVertexCount() * count; }
public WrappedIndexBuffer(Mesh mesh){ super(mesh.getVertexCount(), mesh.getMode()); this.ib = mesh.getIndexBuffer(); switch (meshMode){ case Points: numIndices = mesh.getTriangleCount(); break; case Lines: case LineLoop: case LineStrip: numIndices = mesh.getTriangleCount() * 2; break; case Triangles: case TriangleStrip: case TriangleFan: numIndices = mesh.getTriangleCount() * 3; break; default: throw new UnsupportedOperationException(); } }
@Override public void setMeshes(List<Mesh> meshes) { this.vertices = new ArrayList<List<Vector3f>>(meshes.size()); this.normals = new ArrayList<List<Vector3f>>(meshes.size()); for (Mesh mesh : meshes) { Vector3f[] vertexTable = BufferUtils.getVector3Array(mesh.getFloatBuffer(Type.Position)); int[] indices = new int[3]; List<Vector3f> vertices = new ArrayList<Vector3f>(mesh.getTriangleCount() * 3); List<Vector3f> normals = new ArrayList<Vector3f>(mesh.getTriangleCount()); for (int i = 0; i < mesh.getTriangleCount(); ++i) { mesh.getTriangle(i, indices); vertices.add(vertexTable[indices[0]]); vertices.add(vertexTable[indices[1]]); vertices.add(vertexTable[indices[2]]); normals.add(FastMath.computeNormal(vertexTable[indices[0]], vertexTable[indices[1]], vertexTable[indices[2]])); } this.vertices.add(vertices); this.normals.add(normals); } }
@Override public void setSpatial(Spatial spatial) { if (spatial != null && !(spatial instanceof Geometry)) { throw new IllegalArgumentException("LodControl can only be attached to Geometry!"); } super.setSpatial(spatial); if(spatial != null) { Geometry geom = (Geometry) spatial; Mesh mesh = geom.getMesh(); numLevels = mesh.getNumLodLevels(); numTris = new int[numLevels]; for (int i = numLevels - 1; i >= 0; i--) { numTris[i] = mesh.getTriangleCount(i); } } else { numLevels = 0; numTris = null; } }
public static synchronized IndexedMesh convert(Mesh mesh) { IndexedMesh jBulletIndexedMesh = new IndexedMesh(); jBulletIndexedMesh.triangleIndexBase = ByteBuffer.allocate(mesh.getTriangleCount() * 3 * 4); jBulletIndexedMesh.vertexBase = ByteBuffer.allocate(mesh.getVertexCount() * 3 * 4); IndexBuffer indices = mesh.getIndicesAsList(); FloatBuffer vertices = mesh.getFloatBuffer(Type.Position); vertices.rewind(); int verticesLength = mesh.getVertexCount() * 3; jBulletIndexedMesh.numVertices = mesh.getVertexCount(); jBulletIndexedMesh.vertexStride = 12; //3 verts * 4 bytes per. for (int i = 0; i < verticesLength; i++) { float tempFloat = vertices.get(); jBulletIndexedMesh.vertexBase.putFloat(tempFloat); } int indicesLength = mesh.getTriangleCount() * 3; jBulletIndexedMesh.numTriangles = mesh.getTriangleCount(); jBulletIndexedMesh.triangleIndexStride = 12; //3 index entries * 4 bytes each. for (int i = 0; i < indicesLength; i++) { jBulletIndexedMesh.triangleIndexBase.putInt(indices.get(i)); } vertices.rewind(); vertices.clear(); return jBulletIndexedMesh; }
private void createCollisionMesh(Mesh mesh) { triangleIndexBase = BufferUtils.createByteBuffer(mesh.getTriangleCount() * 3 * 4); vertexBase = BufferUtils.createByteBuffer(mesh.getVertexCount() * 3 * 4); // triangleIndexBase = ByteBuffer.allocate(mesh.getTriangleCount() * 3 * 4); // vertexBase = ByteBuffer.allocate(mesh.getVertexCount() * 3 * 4); numVertices = mesh.getVertexCount(); vertexStride = 12; //3 verts * 4 bytes per. numTriangles = mesh.getTriangleCount(); triangleIndexStride = 12; //3 index entries * 4 bytes each. IndexBuffer indices = mesh.getIndicesAsList(); FloatBuffer vertices = mesh.getFloatBuffer(Type.Position); vertices.rewind(); int verticesLength = mesh.getVertexCount() * 3; for (int i = 0; i < verticesLength; i++) { float tempFloat = vertices.get(); vertexBase.putFloat(tempFloat); } int indicesLength = mesh.getTriangleCount() * 3; for (int i = 0; i < indicesLength; i++) { triangleIndexBase.putInt(indices.get(i)); } vertices.rewind(); vertices.clear(); createShape(); }
private void createCollisionMesh(Mesh mesh) { this.triangleIndexBase = BufferUtils.createByteBuffer(mesh.getTriangleCount() * 3 * 4); this.vertexBase = BufferUtils.createByteBuffer(mesh.getVertexCount() * 3 * 4); this.numVertices = mesh.getVertexCount(); this.vertexStride = 12; // 3 verts * 4 bytes per. this.numTriangles = mesh.getTriangleCount(); this.triangleIndexStride = 12; // 3 index entries * 4 bytes each. IndexBuffer indices = mesh.getIndicesAsList(); FloatBuffer vertices = mesh.getFloatBuffer(Type.Position); vertices.rewind(); int verticesLength = mesh.getVertexCount() * 3; for (int i = 0; i < verticesLength; i++) { float tempFloat = vertices.get(); vertexBase.putFloat(tempFloat); } int indicesLength = mesh.getTriangleCount() * 3; for (int i = 0; i < indicesLength; i++) { triangleIndexBase.putInt(indices.get(i)); } vertices.rewind(); vertices.clear(); this.createShape(null); }
for (int i = 0; i < mesh.getTriangleCount(); ++i) { mesh.getTriangle(i, indices); triangleTextureElements.add(new TriangleTextureElement(i, boundingBox, this, uvsArray, indices, blenderContext));
ByteBuffer triangleIndexBase = BufferUtils.createByteBuffer(mesh.getTriangleCount() * 3 * 4); ByteBuffer vertexBase = BufferUtils.createByteBuffer(mesh.getVertexCount() * 3 * 4); int numVertices = mesh.getVertexCount(); int vertexStride = 12; //3 verts * 4 bytes each int numTriangles = mesh.getTriangleCount(); int triangleIndexStride = 12; //3 index entries * 4 bytes each int indicesLength = mesh.getTriangleCount() * 3; for (int i = 0; i < indicesLength; i++) { triangleIndexBase.putInt(indices.get(i));
private int computeNbTri() { int nbTri = 0; for (Geometry geometry : listGeoms) { if (geometry.getMesh().getNumLodLevels() > 0) { nbTri += geometry.getMesh().getLodLevel(lodLevel).getNumElements(); } else { nbTri += geometry.getMesh().getTriangleCount(); } } return nbTri; }
if (mesh != null && mesh.getVertexCount() != 0 && mesh.getTriangleCount() != 0) { for (VertexBuffer vb : mesh.getBufferList().getArray()) { if (vb.getData() != null && vb.getUsage() != VertexBuffer.Usage.CpuOnly) {
public void renderMesh(Mesh mesh, int lod, int count, VertexBuffer[] instanceData) { if (mesh.getVertexCount() == 0 || mesh.getTriangleCount() == 0 || count == 0) { return; } if (count > 1 && !caps.contains(Caps.MeshInstancing)) { throw new RendererException("Mesh instancing is not supported by the video hardware"); } if (mesh.getLineWidth() != 1f && context.lineWidth != mesh.getLineWidth()) { gl.glLineWidth(mesh.getLineWidth()); context.lineWidth = mesh.getLineWidth(); } if (gl4 != null && mesh.getMode().equals(Mode.Patch)) { gl4.glPatchParameter(mesh.getPatchVertexCount()); } statistics.onMeshDrawn(mesh, lod, count); // if (ctxCaps.GL_ARB_vertex_array_object){ // renderMeshVertexArray(mesh, lod, count); // }else{ renderMeshDefault(mesh, lod, count, instanceData); // } }
int geomTriCount = inMesh.getTriangleCount();
int geomTriCount = inMesh.getTriangleCount();
/** * Returns this geometry's mesh triangle count. * * @return this geometry's mesh triangle count. * * @see Mesh#getTriangleCount() */ public int getTriangleCount() { return mesh.getTriangleCount(); }
/** * Called by the Renderer when a mesh has been drawn. */ public void onMeshDrawn(Mesh mesh, int lod, int count){ if( !enabled ) return; numObjects += 1; numTriangles += mesh.getTriangleCount(lod) * count; numVertices += mesh.getVertexCount() * count; }
@Override public void setSpatial(Spatial spatial){ if (!(spatial instanceof Geometry)) throw new IllegalArgumentException("LodControl can only be attached to Geometry!"); super.setSpatial(spatial); Geometry geom = (Geometry) spatial; Mesh mesh = geom.getMesh(); numLevels = mesh.getNumLodLevels(); numTris = new int[numLevels]; for (int i = numLevels - 1; i >= 0; i--) numTris[i] = mesh.getTriangleCount(i); }