[Bug] vtkPlanes: a change to the plane points or normals does not update the clip filters
I maintainer di solito rispondono entro 2 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 78/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- javascript
Direzione di ricerca
Inizia da Sources/Common/DataModel/Planes/index.js:290, dove vengono esposti punti e normali, e verifica come vtkPlanes segnala il proprio tempo di modifica. La riproduzione nell’issue mostra l’output obsoleto tramite vtkClipPolyData; eseguila dopo aver aggiornato il comportamento di MTime e conferma che xmin after è 0.5. Controlla anche lo stesso comportamento per vtkCutter, che secondo l’issue dipende dal MTime della funzione implicita.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Bug description
Sources/Common/DataModel/Planes/index.js:290 gives access to points and
normals through macro.setGet. vtkPlanes does not override getMTime.
If you move a plane with a change to these arrays and call their
modified(), the vtkPlanes MTime does not change. vtkClipPolyData and
vtkCutter use only the MTime of the implicit function, so they keep their
old output.
Steps to reproduce
- Run this code:
import vtkPoints from '@kitware/vtk.js/Common/Core/Points';
import vtkDataArray from '@kitware/vtk.js/Common/Core/DataArray';
import vtkPlanes from '@kitware/vtk.js/Common/DataModel/Planes';
import vtkPolyData from '@kitware/vtk.js/Common/DataModel/PolyData';
import vtkClipPolyData from '@kitware/vtk.js/Filters/Core/ClipPolyData';
const points = vtkPoints.newInstance();
points.setData(new Float32Array([0, 0, 0]), 3);
const normals = vtkDataArray.newInstance({
numberOfComponents: 3,
values: new Float32Array([1, 0, 0]),
});
const planes = vtkPlanes.newInstance();
planes.setPoints(points);
planes.setNormals(normals);
const quad = vtkPolyData.newInstance();
quad.getPoints().setData(
new Float32Array([-1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0]),
3
);
quad.getPolys().setData(new Uint32Array([4, 0, 1, 2, 3]));
const clip = vtkClipPolyData.newInstance({ clipFunction: planes });
clip.setInputData(quad);
console.log('xmin before', clip.getOutputData().getBounds()[0]);
// Move the plane from x = 0 to x = 0.5.
points.setPoint(0, 0.5, 0, 0);
points.modified();
console.log('xmin after', clip.getOutputData().getBounds()[0]);
Detailed Behavior
The output is:
xmin before 0
xmin after 0
A new filter with the plane at x = 0.5 gives xmin 0.5. The old filter does
not execute again.
Expected Behavior
vtkPlanes.getMTime() includes the MTime of the points and the normals. The
filter executes again and xmin after is 0.5.
Environment
- vtk.js version: master (
67328bc3ef) - Browsers: Chromium (Playwright, Vitest 5 browser mode)
- OS: Windows 11
- Lingua principale
- JavaScript
- Stelle
- 1.5k
- Fork
- 428
- Merge medio
- 5g 9h
- PR unite (30g)
- 22
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Kitware/vtk-js
-
type: bug 🐞
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 2 giorni
-
type: bug 🐞
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 2 giorni
-
type: bug 🐞
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
I maintainer di solito rispondono entro 2 giorni
-
type: bug 🐞
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 2 giorni
-
type: bug 🐞
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di Kitware/vtk-js
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
Automattic/node-canvas#2633 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
capricorn86/happy-dom#2594 ·
I maintainer di solito rispondono entro 1 giorno
-
Decoding tag 1 (epoch date) with an 8-byte integer throws "Cannot mix BigInt and other types"Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 79/100
microsoft/monaco-editor#5575 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno