use of uk.ac.sussex.gdsc.smlm.ij.ij3d.OrderedItemGeometryGroup in project GDSC-SMLM by aherbert.
the class ImageJ3DResultsViewer method createItemGroup.
private static ItemGeometryGroup createItemGroup(final ImageJ3DResultsViewerSettings.Builder settings, final Point3f[] sphereSize, final LocalList<Point3f> points, float[] alpha, float transparency, Color3f[] colors) {
final Rendering rendering = Rendering.forNumber(settings.getRendering());
// All objects have colour using the appearance not per vertex colours.
// The exception is points which do not support colour from appearance.
final int colorDepth = (rendering == Rendering.POINT) ? 4 : 0;
final Shape3D shape = Shape3DHelper.createShape(rendering, colorDepth);
// Use max so that points get a value of 1
final int triangles = Math.max(Shape3DHelper.getNumberOfTriangles(rendering), 1);
final GeometryArray ga = (GeometryArray) shape.getGeometry();
final long size = (long) points.size() * triangles;
if (size > 10000000L) {
final String name = (rendering == Rendering.POINT) ? "points" : "triangles";
final ExtendedGenericDialog egd = new ExtendedGenericDialog(TITLE);
egd.addMessage("The results will generate a large dataset of " + size + " " + name + ".\nThis may take a long time to render and may run out of memory.");
egd.setOKLabel("Continue");
egd.showDialog();
if (egd.wasCanceled()) {
return null;
}
}
final Appearance appearance = shape.getAppearance();
final TransparencyAttributes ta = new TransparencyAttributes();
ta.setTransparency(transparency);
ta.setTransparencyMode((transparency == 0) ? TransparencyAttributes.NONE : TransparencyAttributes.FASTEST);
appearance.setTransparencyAttributes(ta);
if (rendering == Rendering.POINT) {
appearance.getPointAttributes().setPointSize(sphereSize[0].x);
}
if (settings.getSupportDynamicTransparency()) {
return new ItemGeometryGroup(points.toArray(new Point3f[0]), ga, appearance, sphereSize, colors, alpha);
}
return new OrderedItemGeometryGroup(points.toArray(new Point3f[0]), ga, appearance, sphereSize, colors, alpha);
}
Aggregations