From 5ccf59dfecad755a2283f1b4a4bf25158b57a5a7 Mon Sep 17 00:00:00 2001 From: Julien Finet Date: Sat, 13 Jan 2024 16:41:01 +0100 Subject: [PATCH] fix(plywriter): fix vtkPLYWriter normals Also update the example and associated example image for the gallery --- .../docs/gallery/PLYWriterWithIcon.jpg | Bin 8928 -> 5415 bytes .../IO/Geometry/PLYWriter/example/index.js | 6 +++--- Sources/IO/Geometry/PLYWriter/index.js | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Documentation/content/docs/gallery/PLYWriterWithIcon.jpg b/Documentation/content/docs/gallery/PLYWriterWithIcon.jpg index 4ae6ff271a5190054b623cb79a3166f4c8c7bba2..3374bb42a1df0bf6b7ba91831a3f0fd7741be9d4 100644 GIT binary patch literal 5415 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 literal 8928 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 Oeu=bpJX>L}yZS%g@9Coe diff --git a/Sources/IO/Geometry/PLYWriter/example/index.js b/Sources/IO/Geometry/PLYWriter/example/index.js index 42803181c86..d71ec84ce9c 100644 --- a/Sources/IO/Geometry/PLYWriter/example/index.js +++ b/Sources/IO/Geometry/PLYWriter/example/index.js @@ -22,19 +22,19 @@ const reader = vtkPolyDataReader.newInstance(); const writerReader = vtkPLYReader.newInstance(); const writer = vtkPLYWriter.newInstance(); +writer.setInputConnection(reader.getOutputPort()); reader .setUrl(`${__BASE_PATH__}/data/legacy/sphere.vtk`, { loadData: true }) .then(() => { - writer.setInputData(reader.getOutputData()); - // writer.setTextureFileName('mytexture.jpg'); const fileContents = writer.getOutputData(); + writerReader.parseAsText(new TextEncoder().encode(fileContents)); // Can also use a static function to write to PLY: // const fileContents = vtkPLYWriter.writePLY(reader.getOutputData()); + // writerReader.parseAsArrayBuffer(fileContents.buffer); // Display the resulting PLY - writerReader.parseAsArrayBuffer(fileContents.buffer); renderer.resetCamera(); renderWindow.render(); diff --git a/Sources/IO/Geometry/PLYWriter/index.js b/Sources/IO/Geometry/PLYWriter/index.js index bdd11ee3f16..de974ee63ac 100644 --- a/Sources/IO/Geometry/PLYWriter/index.js +++ b/Sources/IO/Geometry/PLYWriter/index.js @@ -361,9 +361,9 @@ function writePLY( } if (normals) { - nx = normals.getData()[i * 2]; - ny = normals.getData()[i * 2 + 1]; - nz = normals.getData()[i * 2 + 2]; + nx = normals.getData()[i * 3]; + ny = normals.getData()[i * 3 + 1]; + nz = normals.getData()[i * 3 + 2]; } writer.writeVertice(x, y, z, nx, ny, nz, u, v, r, g, b);