Search in sources :

Example 6 with GeometryArray

use of org.scijava.java3d.GeometryArray in project GDSC-SMLM by aherbert.

the class Shape3DHelper method getNormals.

/**
 * Gets the normals assuming triangle vertices.
 *
 * @param vertices the vertices
 * @param creaseAngle the crease angle (in degrees; 0=facet normals; 180=smooth shading)
 * @return the normals
 */
public static Vector3f[] getNormals(Point3f[] vertices, double creaseAngle) {
    final int nVertices = vertices.length;
    final Vector3f[] normals = new Vector3f[nVertices];
    final GeometryArray ta = new TriangleArray(nVertices, GeometryArray.COORDINATES);
    ta.setCoordinates(0, vertices);
    final GeometryInfo gi = new GeometryInfo(ta);
    final NormalGenerator ng = new NormalGenerator();
    if (creaseAngle >= 0 && creaseAngle <= 180) {
        ng.setCreaseAngle(Math.toRadians(creaseAngle));
    }
    ng.generateNormals(gi);
    final Vector3f[] n = gi.getNormals();
    final int[] indices = gi.getNormalIndices();
    for (int i = 0; i < nVertices; i++) {
        normals[i] = n[indices[i]];
    }
    return normals;
}
Also used : Vector3f(org.scijava.vecmath.Vector3f) GeometryInfo(org.scijava.java3d.utils.geometry.GeometryInfo) GeometryArray(org.scijava.java3d.GeometryArray) NormalGenerator(org.scijava.java3d.utils.geometry.NormalGenerator) TriangleArray(org.scijava.java3d.TriangleArray)

Example 7 with GeometryArray

use of org.scijava.java3d.GeometryArray in project GDSC-SMLM by aherbert.

the class TransparentItemPointMesh method setItemColor.

@Override
public void setItemColor(Color3f[] color) {
    this.color = null;
    final int size = size();
    ItemHelper.checkSize(color.length, size);
    final GeometryArray ga = (GeometryArray) getGeometry();
    if (ga == null) {
        return;
    }
    final float[] colors = new float[4 * size];
    ga.getColors(0, colors);
    int index = 0;
    for (final Color3f c : color) {
        colors[index++] = c.x;
        colors[index++] = c.y;
        colors[index++] = c.z;
        // Skip over alpha
        index++;
    }
    ga.setColors(0, colors);
    changed = true;
}
Also used : Color3f(org.scijava.vecmath.Color3f) GeometryArray(org.scijava.java3d.GeometryArray)

Example 8 with GeometryArray

use of org.scijava.java3d.GeometryArray in project GDSC-SMLM by aherbert.

the class TransparentItemPointMesh method setItemAlpha.

@Override
public void setItemAlpha(float alpha) {
    final int size = size();
    final GeometryArray ga = (GeometryArray) getGeometry();
    if (ga == null) {
        return;
    }
    final float[] colors = new float[4 * size];
    ga.getColors(0, colors);
    for (int i = 0; i < size; i++) {
        // Set only alpha
        colors[i * 4 + 3] = alpha;
    }
    ga.setColors(0, colors);
    changed = true;
}
Also used : GeometryArray(org.scijava.java3d.GeometryArray)

Example 9 with GeometryArray

use of org.scijava.java3d.GeometryArray in project GDSC-SMLM by aherbert.

the class TransparentItemPointMesh method setItemColor4.

@Override
public void setItemColor4(Color4f[] color) {
    this.color = null;
    final int size = size();
    ItemHelper.checkSize(color.length, size);
    final GeometryArray ga = (GeometryArray) getGeometry();
    if (ga == null) {
        return;
    }
    ga.setColors(0, color);
    changed = true;
}
Also used : GeometryArray(org.scijava.java3d.GeometryArray)

Example 10 with GeometryArray

use of org.scijava.java3d.GeometryArray in project GDSC-SMLM by aherbert.

the class TransparentItemPointMesh method setItemColor.

@Override
public void setItemColor(Color3f color) {
    if (color == null) {
        color = DEFAULT_COLOR;
    }
    this.color = color;
    final int size = size();
    final GeometryArray ga = (GeometryArray) getGeometry();
    if (ga == null) {
        return;
    }
    final float[] colors = new float[4 * size];
    ga.getColors(0, colors);
    int index = 0;
    while (index < colors.length) {
        colors[index++] = color.x;
        colors[index++] = color.y;
        colors[index++] = color.z;
        // Skip over alpha
        index++;
    }
    ga.setColors(0, colors);
    changed = true;
}
Also used : GeometryArray(org.scijava.java3d.GeometryArray)

Aggregations

GeometryArray (org.scijava.java3d.GeometryArray)52 IndexedGeometryArray (org.scijava.java3d.IndexedGeometryArray)21 Point3f (org.scijava.vecmath.Point3f)11 TriangleArray (org.scijava.java3d.TriangleArray)6 GeometryInfo (org.scijava.java3d.utils.geometry.GeometryInfo)6 NormalGenerator (org.scijava.java3d.utils.geometry.NormalGenerator)5 Color3f (org.scijava.vecmath.Color3f)5 Shape3D (org.scijava.java3d.Shape3D)4 Vector3f (org.scijava.vecmath.Vector3f)4 Appearance (org.scijava.java3d.Appearance)3 IndexedGeometryStripArray (org.scijava.java3d.IndexedGeometryStripArray)3 PointArray (org.scijava.java3d.PointArray)3 Color4f (org.scijava.vecmath.Color4f)3 Rendering (uk.ac.sussex.gdsc.smlm.ij.ij3d.Shape3DHelper.Rendering)3 CustomMesh (customnode.CustomMesh)2 Geometry (org.scijava.java3d.Geometry)2 GeometryStripArray (org.scijava.java3d.GeometryStripArray)2 GeometryUpdater (org.scijava.java3d.GeometryUpdater)2 ExtendedGenericDialog (uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog)2 LocalList (uk.ac.sussex.gdsc.core.utils.LocalList)2