Skip to content

Commit

Permalink
Merge pull request #280 from trackmate-sc/v8-bvv
Browse files Browse the repository at this point in the history
A 3D viewer for TrackMate based on the BVV.
  • Loading branch information
tinevez authored Sep 12, 2023
2 parents ca5c5e1 + 3b57316 commit 89c9faf
Show file tree
Hide file tree
Showing 36 changed files with 1,133 additions and 464 deletions.
28 changes: 21 additions & 7 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -167,19 +167,29 @@
<artifactId>imagej-common</artifactId>
</dependency>
<dependency>
<groupId>net.imagej</groupId>
<artifactId>imagej-mesh</artifactId>
<version>0.8.2-SNAPSHOT</version>
<groupId>net.imglib2</groupId>
<artifactId>imglib2-mesh</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>net.imagej</groupId>
<artifactId>imagej-mesh-io</artifactId>
<version>0.1.3-SNAPSHOT</version>
<artifactId>imagej-ops</artifactId>
</dependency>
<dependency>
<groupId>net.imagej</groupId>
<artifactId>imagej-ops</artifactId>
<groupId>sc.fiji</groupId>
<artifactId>bigvolumeviewer</artifactId>
<version>0.3.1</version>
</dependency>
<dependency>
<groupId>org.jogamp.jogl</groupId>
<artifactId>jogl-all-main</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>org.jogamp.gluegen</groupId>
<artifactId>gluegen-rt-main</artifactId>
<version>2.3.2</version>
</dependency>

<!-- ImgLib2 dependencies -->
<dependency>
Expand Down Expand Up @@ -222,6 +232,10 @@
</dependency>

<!-- Other dependencies -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
<dependency>
<groupId>com.github.vlsi.mxgraph</groupId>
<artifactId>jgraphx</artifactId>
Expand Down
10 changes: 5 additions & 5 deletions src/main/java/fiji/plugin/trackmate/Spot.java
Original file line number Diff line number Diff line change
Expand Up @@ -422,34 +422,34 @@ default int numDimensions()
@Override
public default void move( final float distance, final int d )
{
putFeature( POSITION_FEATURES[d], getFeature( POSITION_FEATURES[d] + distance ) );
putFeature( POSITION_FEATURES[ d ], getFeature( POSITION_FEATURES[ d ] ) + distance );
}

@Override
public default void move( final double distance, final int d )
{
putFeature( POSITION_FEATURES[d], getFeature( POSITION_FEATURES[d] + distance ) );
putFeature( POSITION_FEATURES[ d ], getFeature( POSITION_FEATURES[ d ] ) + distance );
}

@Override
public default void move( final RealLocalizable distance )
{
for ( int d = 0; d < 3; d++ )
putFeature( POSITION_FEATURES[ d ], getFeature( POSITION_FEATURES[ d ] + distance ) );
putFeature( POSITION_FEATURES[ d ], getFeature( POSITION_FEATURES[ d ] ) + distance.getDoublePosition( d ) );
}

@Override
public default void move( final float[] distance )
{
for ( int d = 0; d < 3; d++ )
putFeature( POSITION_FEATURES[ d ], getFeature( POSITION_FEATURES[ d ] + distance[ d ] ) );
putFeature( POSITION_FEATURES[ d ], getFeature( POSITION_FEATURES[ d ] ) + distance[ d ] );
}

@Override
public default void move( final double[] distance )
{
for ( int d = 0; d < 3; d++ )
putFeature( POSITION_FEATURES[ d ], getFeature( POSITION_FEATURES[ d ] + distance[ d ] ) );
putFeature( POSITION_FEATURES[ d ], getFeature( POSITION_FEATURES[ d ] ) + distance[ d ] );
}

@Override
Expand Down
28 changes: 16 additions & 12 deletions src/main/java/fiji/plugin/trackmate/SpotMesh.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,18 @@
import java.util.stream.Collectors;

import fiji.plugin.trackmate.util.mesh.SpotMeshIterable;
import net.imagej.mesh.Mesh;
import net.imagej.mesh.Meshes;
import net.imagej.mesh.Triangles;
import net.imagej.mesh.Vertices;
import net.imagej.mesh.alg.zslicer.RamerDouglasPeucker;
import net.imagej.mesh.alg.zslicer.Slice;
import net.imagej.mesh.alg.zslicer.ZSlicer;
import net.imagej.mesh.nio.BufferMesh;
import net.imglib2.IterableInterval;
import net.imglib2.RandomAccessible;
import net.imglib2.RealInterval;
import net.imglib2.RealLocalizable;
import net.imglib2.RealPoint;
import net.imglib2.mesh.Meshes;
import net.imglib2.mesh.alg.zslicer.RamerDouglasPeucker;
import net.imglib2.mesh.alg.zslicer.Slice;
import net.imglib2.mesh.alg.zslicer.ZSlicer;
import net.imglib2.mesh.obj.Mesh;
import net.imglib2.mesh.obj.Vertices;
import net.imglib2.mesh.obj.nio.BufferMesh;
import net.imglib2.type.numeric.RealType;
import net.imglib2.util.Intervals;

Expand Down Expand Up @@ -50,15 +49,20 @@ public SpotMesh(
*
* @param quality
* @param name
* @param mesh
* @param m
*/
public SpotMesh(
final Mesh mesh,
final Mesh m,
final double quality,
final String name )
{
// Dummy coordinates and radius.
super( 0., 0., 0., 0., quality, name );

// Compute triangles and vertices normals.
final BufferMesh mesh = new BufferMesh( ( int ) m.vertices().size(), ( int ) m.triangles().size() );
Meshes.calculateNormals( m, mesh );

this.mesh = mesh;
final RealPoint center = Meshes.center( mesh );

Expand Down Expand Up @@ -202,7 +206,7 @@ public static double volume( final Mesh mesh )
{

final Vertices vertices = mesh.vertices();
final Triangles triangles = mesh.triangles();
final net.imglib2.mesh.obj.Triangles triangles = mesh.triangles();
final long nTriangles = triangles.size();
double sum = 0.;
for ( long t = 0; t < nTriangles; t++ )
Expand Down Expand Up @@ -306,7 +310,7 @@ public String toString()
str.append( String.format( "\n%5d: %7.2f %7.2f %7.2f",
i, vertices.x( i ), vertices.y( i ), vertices.z( i ) ) );

final Triangles triangles = mesh.triangles();
final net.imglib2.mesh.obj.Triangles triangles = mesh.triangles();
final long nTriangles = triangles.size();
str.append( "\nF (" + nTriangles + "):" );
for ( long i = 0; i < nTriangles; i++ )
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/fiji/plugin/trackmate/SpotRoi.java
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ public SpotRoi(
final double[] x,
final double[] y )
{
super( ID );
super( ID );
this.x = x;
this.y = y;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,11 @@
import fiji.plugin.trackmate.TrackMate;
import fiji.plugin.trackmate.gui.displaysettings.DisplaySettings;
import fiji.plugin.trackmate.io.IOUtils;
import net.imagej.mesh.Mesh;
import net.imagej.mesh.Meshes;
import net.imagej.mesh.io.ply.PLYMeshIO;
import net.imagej.mesh.nio.BufferMesh;
import net.imagej.mesh.obj.transform.TranslateMesh;
import net.imglib2.mesh.Meshes;
import net.imglib2.mesh.io.ply.PLYMeshIO;
import net.imglib2.mesh.obj.Mesh;
import net.imglib2.mesh.obj.nio.BufferMesh;
import net.imglib2.mesh.obj.transform.TranslateMesh;

public class MeshSeriesExporter extends AbstractTMAction
{
Expand Down Expand Up @@ -106,8 +106,6 @@ public static void exportMeshesToFileSeries( final SpotCollection spots, final F
final File folder = new File( folderName );
folder.mkdirs();

final PLYMeshIO io = new PLYMeshIO();

final NavigableSet< Integer > frames = spots.keySet();
for ( final Integer frame : frames )
{
Expand All @@ -128,7 +126,7 @@ public static void exportMeshesToFileSeries( final SpotCollection spots, final F
Meshes.calculateNormals( merged, mesh );
try
{
io.save( mesh, targetFile.getAbsolutePath() );
PLYMeshIO.save( mesh, targetFile.getAbsolutePath() );
}
catch ( final IOException e )
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -516,7 +516,6 @@ else if ( input.numDimensions() == 3 )
threshold,
simplify,
qualityImage );

}
else
{
Expand Down
Loading

0 comments on commit 89c9faf

Please sign in to comment.