Volume Grid Isosurface mesh issue
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 48/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- À l'abandon
- Stack technique
- cpp
- Domaine
- computer-graphics
Piste de recherche
Commencez dans src/volume_grid_scalar_quantity.cpp en examinant createIsosurfaceProgram() et registerIsosurfaceAsMesh(), où sont présentés les appels à MarchingCube et la transformation des coordonnées. Comparez l’ordre des dimensions de la grille dans les deux chemins avec la disposition du tampon de volume. Le travail est terminé lorsque les isosurfaces de volume-grid sont rendues avec l’orientation et l’ordre des cellules corrects dans les deux utilisations.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Hi,
I've run into an issue with the isosurface generation for volume grid scalar quantities. The problem appears to be that the change made to fix the frame transformation for #253 wasn't propagated into the grid dimensions passed to the MarchingCube library, resulting in the grid cells being interpreted in the wrong order.
The following shows a volume grid of the Stanford Bunny and its isosurface visualization with the 2.2.1 release:
By swizzling the grid dimensions passed into MarchingCube we get the following (correct) result instead:
The patch for the above fix is:
diff --git a/src/volume_grid_scalar_quantity.cpp b/src/volume_grid_scalar_quantity.cpp
index cde441a..603841f 100644
--- a/src/volume_grid_scalar_quantity.cpp
+++ b/src/volume_grid_scalar_quantity.cpp
@@ -165,8 +165,8 @@ void VolumeGridNodeScalarQuantity::createIsosurfaceProgram() {
// Extract the isosurface from the level set of the scalar field
MC::mcMesh isosurfaceMesh;
- MC::marching_cube(&values.data.front(), isosurfaceLevel.get(), parent.getGridNodeDim().x, parent.getGridNodeDim().y,
- parent.getGridNodeDim().z, isosurfaceMesh);
+ MC::marching_cube(&values.data.front(), isosurfaceLevel.get(), parent.getGridNodeDim().z, parent.getGridNodeDim().y,
+ parent.getGridNodeDim().x, isosurfaceMesh);
// Transform the result to be aligned with our volume's spatial layout
glm::vec3 scale = parent.gridSpacing();
@@ -215,8 +215,8 @@ SurfaceMesh* VolumeGridNodeScalarQuantity::registerIsosurfaceAsMesh(std::string
// extract the mesh
MC::mcMesh isosurfaceMesh;
- MC::marching_cube(&values.data.front(), isosurfaceLevel.get(), parent.getGridNodeDim().x, parent.getGridNodeDim().y,
- parent.getGridNodeDim().z, isosurfaceMesh);
+ MC::marching_cube(&values.data.front(), isosurfaceLevel.get(), parent.getGridNodeDim().z, parent.getGridNodeDim().y,
+ parent.getGridNodeDim().x, isosurfaceMesh);
glm::vec3 scale = parent.gridSpacing();
for (auto& p : isosurfaceMesh.vertices) {
// swizzle to account for change of coordinate/buffer ordering in the MC lib
I'm not sure how you prefer to manage the repo, but if you'd like me to open a PR for the fix I'm happy to. Thanks!
- Langage dominant
- C++
- Étoiles
- 2.2k
- Forks
- 242
- Merge moyen
- 11 min
- PR mergées (30 j)
- 1
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de nmwsharp/polyscope
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
-
CurveNetwork - Node radius bug? Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 48/100
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 30/100
-
Rust Version Ouverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 15/100
-
enhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 20/100
Toutes les issues de nmwsharp/polyscope
Issues similaires
-
[CI] Nightly Clang build broken: structured binding captured in a lambda in FileDataSource.cpp Ouvertebug build
Difficulté 1/5 Moins d'une heure Accessibilité débutants 91/100
facebookincubator/velox#19194 ·
-
JIT-compiled number -> Decimal conversion silently overflows instead of raising DECIMAL_OVERFLOW Ouvertefuzz
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
ClickHouse/ClickHouse#122114 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
-
module/agent platform/macos type/bug/regression
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
-
enhancement PyCDE
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100