Loading GUI/pom.xml +5 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,11 @@ <artifactId>MeshModel</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>${project.groupId}</groupId> <artifactId>Landmarks</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>${project.groupId}</groupId> <artifactId>MeshAlgorithms</artifactId> Loading GUI/src/main/java/cz/fidentis/analyst/gui/app/tools/BatchOctreeTestsMultipleFaces.java +5 −4 Original line number Diff line number Diff line package cz.fidentis.analyst.gui.app.tools; import cz.fidentis.analyst.gui.task.batch.Stopwatch; import cz.fidentis.analyst.avgmesh.AvgMeshConstructorOctree; import cz.fidentis.analyst.face.HumanFace; import cz.fidentis.analyst.face.HumanFaceFactory; import cz.fidentis.analyst.gui.task.batch.Stopwatch; import cz.fidentis.analyst.mesh.MeshIO; import cz.fidentis.analyst.registration.RegistrationUtils; import cz.fidentis.analyst.mesh.io.MeshObjExporter; import cz.fidentis.analyst.sampling.RandomSampling; import cz.fidentis.analyst.avgmesh.AvgMeshConstructorOctree; import java.io.File; import java.io.IOException; import java.nio.file.Files; Loading Loading @@ -112,7 +113,7 @@ public class BatchOctreeTestsMultipleFaces { File tempFile = new File(PATH_AVG_TIME); avgFace = new HumanFace(avgFaceConstructorOctree.getAveragedMeshModel(), tempFile.getCanonicalPath()); try { new MeshObjExporter(avgFace.getMeshModel()).exportModelToObj(tempFile); MeshIO.exportMeshModel(avgFace.getMeshModel(), tempFile); } catch (IOException ex) { System.err.println(ex.toString()); } Loading GUI/src/main/java/cz/fidentis/analyst/gui/app/tools/BatchOctreeTestsTwoFaces.java +7 −6 Original line number Diff line number Diff line package cz.fidentis.analyst.gui.app.tools; import cz.fidentis.analyst.gui.task.batch.Stopwatch; import cz.fidentis.analyst.avgmesh.AvgMeshConstructorOctree; import cz.fidentis.analyst.face.HumanFace; import cz.fidentis.analyst.face.HumanFaceFactory; import cz.fidentis.analyst.mesh.core.MeshModel; import cz.fidentis.analyst.mesh.io.MeshObjExporter; import cz.fidentis.analyst.avgmesh.AvgMeshConstructorOctree; import cz.fidentis.analyst.mesh.core.MeshFacet; import cz.fidentis.analyst.gui.task.batch.Stopwatch; import cz.fidentis.analyst.mesh.MeshFacet; import cz.fidentis.analyst.mesh.MeshIO; import cz.fidentis.analyst.mesh.MeshModel; import java.io.File; import java.io.IOException; Loading Loading @@ -101,7 +102,7 @@ public class BatchOctreeTestsTwoFaces { protected static void writeToFile(MeshModel model, String path) { File file = new File(path); try { new MeshObjExporter(model).exportModelToObj(file); MeshIO.exportMeshModel(model, file); } catch (IOException ex) { System.err.println(ex.toString()); } Loading GUI/src/main/java/cz/fidentis/analyst/gui/app/tools/IcpDownsampling.java +11 −8 Original line number Diff line number Diff line Loading @@ -2,12 +2,12 @@ package cz.fidentis.analyst.gui.app.tools; import cz.fidentis.analyst.distance.surface2surface.MeshDistanceNN; import cz.fidentis.analyst.face.HumanFace; import cz.fidentis.analyst.registration.RegistrationUtils; import cz.fidentis.analyst.gui.task.batch.Stopwatch; import cz.fidentis.analyst.icp.UndersampledMeshFacet; import cz.fidentis.analyst.mesh.core.MeshFacet; import cz.fidentis.analyst.mesh.core.MeshModel; import cz.fidentis.analyst.mesh.core.MeshTriangle; import cz.fidentis.analyst.mesh.MeshFacet; import cz.fidentis.analyst.mesh.MeshFactory; import cz.fidentis.analyst.mesh.MeshModel; import cz.fidentis.analyst.mesh.MeshTriangle; import cz.fidentis.analyst.registration.RegistrationUtils; import cz.fidentis.analyst.sampling.*; import java.io.File; Loading Loading @@ -158,7 +158,9 @@ public class IcpDownsampling { double bestDist = Double.POSITIVE_INFINITY; System.out.println("Faces: " + secFaceFromFile.getShortName() + " -> " + priFace.getShortName()); for (int numSamples: SUB_SAMPLE_TO) { HumanFace secFace = new HumanFace(new MeshModel(secFaceFromFile.getMeshModel()), secFaceFromFile.getId()); HumanFace secFace = new HumanFace( MeshFactory.cloneMeshModel(secFaceFromFile.getMeshModel()), secFaceFromFile.getId()); PointSampling secSampling; if (numSamples == 0) { // skip sub-sampling, use full resolution Loading Loading @@ -215,8 +217,9 @@ public class IcpDownsampling { } private static HumanFace downsamplePriFace(HumanFace priFace, PointSampling sampling) { MeshFacet reducedFacet = new UndersampledMeshFacet(priFace.getMeshModel().getFacets().get(0), sampling); MeshModel model = new MeshModel(); sampling.visitMeshFacet(priFace.getMeshModel().getFacets().get(0)); MeshFacet reducedFacet = MeshFactory.createPointCloudFacet(sampling.getSamples()); MeshModel model = MeshFactory.createEmptyMeshModel(); model.setFacets(List.of(reducedFacet)); HumanFace ret = new HumanFace(model, priFace.getId()); return ret; Loading GUI/src/main/java/cz/fidentis/analyst/gui/app/tools/TestSymmetryAlgorithms.java +10 −8 Original line number Diff line number Diff line package cz.fidentis.analyst.gui.app.tools; import cz.fidentis.analyst.gui.task.batch.Stopwatch; import cz.fidentis.analyst.face.HumanFace; import cz.fidentis.analyst.mesh.core.MeshFacet; import cz.fidentis.analyst.mesh.core.MeshModel; import cz.fidentis.analyst.symmetry.SymmetryEstimatorMesh; import cz.fidentis.analyst.symmetry.SymmetryEstimatorRobust; import cz.fidentis.analyst.symmetry.SymmetryEstimatorRobustMesh; import cz.fidentis.analyst.distance.surface2surface.MeshDistanceNN; import cz.fidentis.analyst.face.HumanFace; import cz.fidentis.analyst.gui.task.batch.Stopwatch; import cz.fidentis.analyst.mesh.MeshFacet; import cz.fidentis.analyst.mesh.MeshFactory; import cz.fidentis.analyst.mesh.MeshModel; import cz.fidentis.analyst.sampling.CurvatureSampling; import cz.fidentis.analyst.sampling.CurvatureSampling.CurvatureAlg; import cz.fidentis.analyst.sampling.RandomSampling; import cz.fidentis.analyst.sampling.UniformSpaceSampling; import cz.fidentis.analyst.symmetry.SymmetryEstimatorMesh; import cz.fidentis.analyst.symmetry.SymmetryEstimatorRobust; import cz.fidentis.analyst.symmetry.SymmetryEstimatorRobustMesh; import java.io.File; import java.io.IOException; import java.nio.file.Files; Loading Loading @@ -166,7 +168,7 @@ public class TestSymmetryAlgorithms { } protected static DoubleSummaryStatistics checkPecision(HumanFace face) { MeshModel clone = new MeshModel(face.getMeshModel()); MeshModel clone = MeshFactory.cloneMeshModel(face.getMeshModel()); if (face.getSymmetryPlane() == null) { System.out.println("No plane: " + face.getShortName()); Loading Loading
GUI/pom.xml +5 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,11 @@ <artifactId>MeshModel</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>${project.groupId}</groupId> <artifactId>Landmarks</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>${project.groupId}</groupId> <artifactId>MeshAlgorithms</artifactId> Loading
GUI/src/main/java/cz/fidentis/analyst/gui/app/tools/BatchOctreeTestsMultipleFaces.java +5 −4 Original line number Diff line number Diff line package cz.fidentis.analyst.gui.app.tools; import cz.fidentis.analyst.gui.task.batch.Stopwatch; import cz.fidentis.analyst.avgmesh.AvgMeshConstructorOctree; import cz.fidentis.analyst.face.HumanFace; import cz.fidentis.analyst.face.HumanFaceFactory; import cz.fidentis.analyst.gui.task.batch.Stopwatch; import cz.fidentis.analyst.mesh.MeshIO; import cz.fidentis.analyst.registration.RegistrationUtils; import cz.fidentis.analyst.mesh.io.MeshObjExporter; import cz.fidentis.analyst.sampling.RandomSampling; import cz.fidentis.analyst.avgmesh.AvgMeshConstructorOctree; import java.io.File; import java.io.IOException; import java.nio.file.Files; Loading Loading @@ -112,7 +113,7 @@ public class BatchOctreeTestsMultipleFaces { File tempFile = new File(PATH_AVG_TIME); avgFace = new HumanFace(avgFaceConstructorOctree.getAveragedMeshModel(), tempFile.getCanonicalPath()); try { new MeshObjExporter(avgFace.getMeshModel()).exportModelToObj(tempFile); MeshIO.exportMeshModel(avgFace.getMeshModel(), tempFile); } catch (IOException ex) { System.err.println(ex.toString()); } Loading
GUI/src/main/java/cz/fidentis/analyst/gui/app/tools/BatchOctreeTestsTwoFaces.java +7 −6 Original line number Diff line number Diff line package cz.fidentis.analyst.gui.app.tools; import cz.fidentis.analyst.gui.task.batch.Stopwatch; import cz.fidentis.analyst.avgmesh.AvgMeshConstructorOctree; import cz.fidentis.analyst.face.HumanFace; import cz.fidentis.analyst.face.HumanFaceFactory; import cz.fidentis.analyst.mesh.core.MeshModel; import cz.fidentis.analyst.mesh.io.MeshObjExporter; import cz.fidentis.analyst.avgmesh.AvgMeshConstructorOctree; import cz.fidentis.analyst.mesh.core.MeshFacet; import cz.fidentis.analyst.gui.task.batch.Stopwatch; import cz.fidentis.analyst.mesh.MeshFacet; import cz.fidentis.analyst.mesh.MeshIO; import cz.fidentis.analyst.mesh.MeshModel; import java.io.File; import java.io.IOException; Loading Loading @@ -101,7 +102,7 @@ public class BatchOctreeTestsTwoFaces { protected static void writeToFile(MeshModel model, String path) { File file = new File(path); try { new MeshObjExporter(model).exportModelToObj(file); MeshIO.exportMeshModel(model, file); } catch (IOException ex) { System.err.println(ex.toString()); } Loading
GUI/src/main/java/cz/fidentis/analyst/gui/app/tools/IcpDownsampling.java +11 −8 Original line number Diff line number Diff line Loading @@ -2,12 +2,12 @@ package cz.fidentis.analyst.gui.app.tools; import cz.fidentis.analyst.distance.surface2surface.MeshDistanceNN; import cz.fidentis.analyst.face.HumanFace; import cz.fidentis.analyst.registration.RegistrationUtils; import cz.fidentis.analyst.gui.task.batch.Stopwatch; import cz.fidentis.analyst.icp.UndersampledMeshFacet; import cz.fidentis.analyst.mesh.core.MeshFacet; import cz.fidentis.analyst.mesh.core.MeshModel; import cz.fidentis.analyst.mesh.core.MeshTriangle; import cz.fidentis.analyst.mesh.MeshFacet; import cz.fidentis.analyst.mesh.MeshFactory; import cz.fidentis.analyst.mesh.MeshModel; import cz.fidentis.analyst.mesh.MeshTriangle; import cz.fidentis.analyst.registration.RegistrationUtils; import cz.fidentis.analyst.sampling.*; import java.io.File; Loading Loading @@ -158,7 +158,9 @@ public class IcpDownsampling { double bestDist = Double.POSITIVE_INFINITY; System.out.println("Faces: " + secFaceFromFile.getShortName() + " -> " + priFace.getShortName()); for (int numSamples: SUB_SAMPLE_TO) { HumanFace secFace = new HumanFace(new MeshModel(secFaceFromFile.getMeshModel()), secFaceFromFile.getId()); HumanFace secFace = new HumanFace( MeshFactory.cloneMeshModel(secFaceFromFile.getMeshModel()), secFaceFromFile.getId()); PointSampling secSampling; if (numSamples == 0) { // skip sub-sampling, use full resolution Loading Loading @@ -215,8 +217,9 @@ public class IcpDownsampling { } private static HumanFace downsamplePriFace(HumanFace priFace, PointSampling sampling) { MeshFacet reducedFacet = new UndersampledMeshFacet(priFace.getMeshModel().getFacets().get(0), sampling); MeshModel model = new MeshModel(); sampling.visitMeshFacet(priFace.getMeshModel().getFacets().get(0)); MeshFacet reducedFacet = MeshFactory.createPointCloudFacet(sampling.getSamples()); MeshModel model = MeshFactory.createEmptyMeshModel(); model.setFacets(List.of(reducedFacet)); HumanFace ret = new HumanFace(model, priFace.getId()); return ret; Loading
GUI/src/main/java/cz/fidentis/analyst/gui/app/tools/TestSymmetryAlgorithms.java +10 −8 Original line number Diff line number Diff line package cz.fidentis.analyst.gui.app.tools; import cz.fidentis.analyst.gui.task.batch.Stopwatch; import cz.fidentis.analyst.face.HumanFace; import cz.fidentis.analyst.mesh.core.MeshFacet; import cz.fidentis.analyst.mesh.core.MeshModel; import cz.fidentis.analyst.symmetry.SymmetryEstimatorMesh; import cz.fidentis.analyst.symmetry.SymmetryEstimatorRobust; import cz.fidentis.analyst.symmetry.SymmetryEstimatorRobustMesh; import cz.fidentis.analyst.distance.surface2surface.MeshDistanceNN; import cz.fidentis.analyst.face.HumanFace; import cz.fidentis.analyst.gui.task.batch.Stopwatch; import cz.fidentis.analyst.mesh.MeshFacet; import cz.fidentis.analyst.mesh.MeshFactory; import cz.fidentis.analyst.mesh.MeshModel; import cz.fidentis.analyst.sampling.CurvatureSampling; import cz.fidentis.analyst.sampling.CurvatureSampling.CurvatureAlg; import cz.fidentis.analyst.sampling.RandomSampling; import cz.fidentis.analyst.sampling.UniformSpaceSampling; import cz.fidentis.analyst.symmetry.SymmetryEstimatorMesh; import cz.fidentis.analyst.symmetry.SymmetryEstimatorRobust; import cz.fidentis.analyst.symmetry.SymmetryEstimatorRobustMesh; import java.io.File; import java.io.IOException; import java.nio.file.Files; Loading Loading @@ -166,7 +168,7 @@ public class TestSymmetryAlgorithms { } protected static DoubleSummaryStatistics checkPecision(HumanFace face) { MeshModel clone = new MeshModel(face.getMeshModel()); MeshModel clone = MeshFactory.cloneMeshModel(face.getMeshModel()); if (face.getSymmetryPlane() == null) { System.out.println("No plane: " + face.getShortName()); Loading