[Ves] VES polydata object with multiple elements (triangles and lines)
Joachim Pouderoux
joachim.pouderoux at kitware.com
Tue Mar 18 04:07:31 EDT 2014
Sebastien,
For information, the code you provide is pure VTK, not VES - your
question should be sent to the VTK mailing list instead.
Best,
Joachim Pouderoux
Kitware SAS
Le 14/03/2014 10:49, Sebastien HO a écrit :
>
> Thanks for your answer,
>
> Actually, I am using VTK with a C# wrapper and I have tested based on
> wiki examples. I can't found VES functions in C# library based on the
> example you have sent me. I have tried to build manually a colored
> cube with edges using c# wrapper library but I am getting strange
> results :
>
> -Some face disappeared.
>
> -I do not know how to assign black color to edge. Face colors are
> automatically applied to the edge.
>
> Here are screenshots :
>
> Here is my code :
>
> private void ColoredCube()
>
> {
>
> // Create the geometry of the points (the coordinate)
>
> vtkPoints points = vtkPoints.New();
>
> double[,] p = new double[,] {
>
> {10.0, 10.0, 10.0},
>
> {0.0, 10.0, 10.0},
>
> {10.0, 0.0, 10.0},
>
> {0.0, 0.0, 10.0},
>
> {10.0, 0.0, 0.0},
>
> {0.0, 0.0, 0.0},
>
> {10.0, 10.0, 0.0},
>
> {0.0, 10.0, 0.0}
>
> };
>
> // Create topology of the points (a vertex per point)
>
> vtkCellArray vertices = vtkCellArray.New();
>
> int nPts = 8;
>
> int[] ids = new int[nPts];
>
> for (int i = 0; i < nPts; i++)
>
> ids[i] = points.InsertNextPoint(p[i, 0], p[i,
> 1], p[i, 2]);
>
> int[,] triangles = new int[,]
>
> {
>
> {0, 1, 2},
>
> {2, 1, 3},
>
> {4, 5, 6},
>
> {6, 5, 7},
>
> {3, 5, 2},
>
> {2, 5, 4},
>
> {1, 7, 3},
>
> {3, 7, 5},
>
> {0, 6, 1},
>
> {1, 6, 7},
>
> {2, 4, 0},
>
> {0, 4, 6}
>
> };
>
> int nTrs = 12;
>
> vtkCellArray faces = vtkCellArray.New();
>
> for (int i = 0; i < nTrs; i++)
>
> {
>
> vtkTriangle triangle = vtkTriangle.New();
>
> triangle.GetPointIds().SetId(0, triangles[i, 0]);
>
> triangle.GetPointIds().SetId(1, triangles[i, 1]);
>
> triangle.GetPointIds().SetId(2, triangles[i, 2]);
>
> faces.InsertNextCell(triangle);
>
> }
>
> // Create a cell array to store the triangle in and add the triangle to it
>
> // Setup two colors - one for each line
>
> byte[] red = new byte[] { 255, 0, 0 };
>
> byte[] green = new byte[] { 0, 255, 0 };
>
> byte[] blue = new byte[] { 0, 0, 255 };
>
> // Setup the colors array
>
> vtkUnsignedCharArray colors = vtkUnsignedCharArray.New();
>
> colors.SetNumberOfComponents(3);
>
> colors.SetName("Colors");
>
> // Add the colors we created to the colors array
>
> colors.InsertNextValue(red[0]);
>
> colors.InsertNextValue(red[1]);
>
> colors.InsertNextValue(red[2]);
>
> colors.InsertNextValue(red[0]);
>
> colors.InsertNextValue(red[1]);
>
> colors.InsertNextValue(red[2]);
>
> colors.InsertNextValue(green[0]);
>
> colors.InsertNextValue(green[1]);
>
> colors.InsertNextValue(green[2]);
>
> colors.InsertNextValue(green[0]);
>
> colors.InsertNextValue(green[1]);
>
> colors.InsertNextValue(green[2]);
>
> colors.InsertNextValue(blue[0]);
>
> colors.InsertNextValue(blue[1]);
>
> colors.InsertNextValue(blue[2]);
>
> colors.InsertNextValue(blue[0]);
>
> colors.InsertNextValue(blue[1]);
>
> colors.InsertNextValue(blue[2]);
>
> colors.InsertNextValue(red[0]);
>
> colors.InsertNextValue(red[1]);
>
> colors.InsertNextValue(red[2]);
>
> colors.InsertNextValue(red[0]);
>
> colors.InsertNextValue(red[1]);
>
> colors.InsertNextValue(red[2]);
>
> colors.InsertNextValue(green[0]);
>
> colors.InsertNextValue(green[1]);
>
> colors.InsertNextValue(green[2]);
>
> colors.InsertNextValue(green[0]);
>
> colors.InsertNextValue(green[1]);
>
> colors.InsertNextValue(green[2]);
>
> colors.InsertNextValue(blue[0]);
>
> colors.InsertNextValue(blue[1]);
>
> colors.InsertNextValue(blue[2]);
>
> colors.InsertNextValue(blue[0]);
>
> colors.InsertNextValue(blue[1]);
>
> colors.InsertNextValue(blue[2]);
>
> //Line creation
>
> int[,] linesArray = new int[,]
>
> {
>
> {0, 1},
>
> {0, 2},
>
> {1, 3},
>
> {3, 2}
>
> };
>
> //Create Lines
>
> int nLs = 4;
>
> vtkCellArray lines = vtkCellArray.New();
>
> for (int i = 0; i < nLs; i++)
>
> {
>
> // Create line
>
> vtkLine line = vtkLine.New();
>
> line.GetPointIds().SetId(0, linesArray[i,0]); //0 is the index of the
> Origin in the vtkPoints
>
> line.GetPointIds().SetId(1, linesArray[i, 1]); //1 is the index of P1
> in the vtkPoints
>
> lines.InsertNextCell(line);
>
> }
>
> // Create a polydata to store everything in
>
> vtkPolyData polyData = vtkPolyData.New();
>
> // Add the points to the dataset
>
> polyData.SetPoints(points);
>
> // Add the quad to the dataset
>
> polyData.SetPolys(faces);
>
> polyData.SetLines(lines);
>
> polyData.GetCellData().SetScalars(colors);
>
> // Write the file
>
> vtkXMLPolyDataWriter writer = vtkXMLPolyDataWriter.New();
>
> writer.SetFileName(System.IO.Path.Combine("",
> @"C:\Users\sho\Documents\Trace Parts\Projects\cube.vtp"));
>
> writer.SetInput(polyData);
>
> // Optional - set the mode. The default is binary.
>
> //writer.SetDataModeToBinary();
>
> writer.SetDataModeToAscii();
>
> writer.Write();
>
> // Visualize
>
> vtkPolyDataMapper mapper = vtkPolyDataMapper.New();
>
> mapper.SetInput(polyData);
>
> vtkActor actor = vtkActor.New();
>
> actor.SetMapper(mapper);
>
> actor.GetProperty().SetPointSize(20);
>
> vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow;
>
> vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer();
>
> renderer.SetBackground(0.3, 0.2, 0.1);
>
> renderer.AddActor(actor);
>
> }
>
> Can you help me correcting my issues.
>
> Regards,
>
> Sébastien.
>
> *De :*Aashish Chaudhary [mailto:aashish.chaudhary at kitware.com]
> *Envoyé :* vendredi 14 mars 2014 05:40
> *À :* Sebastien HO
> *Cc :* ves at public.kitware.com
> *Objet :* Re: [Ves] VES polydata object with multiple elements
> (triangles and lines)
>
> On Thu, Mar 13, 2014 at 5:55 AM, Sebastien HO <sho at traceparts.com
> <mailto:sho at traceparts.com>> wrote:
>
> Hi folks,
>
> My goal is to create a VES file that contains a geometric
> representation of a part with colors and its silhouette (shaded with
> edges representation). The silhouette would be computed from our system.
>
> The goal is to have a polydata element with points, colored lines
> (black) and colored triangles (depends on face color). I would like
> to know if VES file format enables to store this kind of element. If
> yes, is there any examples around (like a colored cube with black edges)?
>
> Yes, it is possible. The format for VES geometry data is inspired from
> collada format. Its basically is bunch of arrays with metadata on top
> of it to describe necessary information
>
> for opengl to extract pieces out of it. You can find an example on how
> to draw a plane here:
>
> http://vtk.org/gitweb?p=VES.git;a=blob;f=src/ves/Testing/TestDrawPlane.cpp;h=fc5db8f7d18c6fc0b256fdd2db117309f582b0ad;hb=HEAD
>
> You should be able to add new primitive (vesPrimitive) using the same
> vertices to draw lines as well.
>
> Hope this helps.
>
> - Aashish
>
> Thanks for your help,
>
> Cordialement / Best regards / Mit freundlichen Grüßen / Saludos /
> Cordiali saluti
>
> *Sébastien HO | R&D Engineer | R&D Department*
>
> *TraceParts S.A.*
> Parc Eco Normandie - 76430 St Romain -- France
>
> sho at traceparts.com <mailto:sho at traceparts.com>
>
> Tel: +33(0)232 735 459 <tel:%2B33%280%29232%C2%A0735%C2%A0459>
>
> Fax: +33(0)232 795 961 <tel:%2B33%280%29232%20795%20961>
>
> *www.traceparts.com <http://www.traceparts.com/>***
>
>
>
> /The information contained in this email is intended solely for
> the addressee. Access to his email by anyone else is unauthorized.
> If you are not the intended recipient, any form of disclosure,
> reproduction, distribution or any action taken or refrained form
> in reliance on it, is prohibited and may be unlawful. //Please
> notify the sender immediately./
>
>
> _______________________________________________
> Ves mailing list
> Ves at public.kitware.com <mailto:Ves at public.kitware.com>
> http://public.kitware.com/cgi-bin/mailman/listinfo/ves
>
>
>
> --
> | Aashish Chaudhary
> | R&D Engineer
> | Kitware Inc.
> | www.kitware.com <http://www.kitware.com>
>
>
>
> _______________________________________________
> Ves mailing list
> Ves at public.kitware.com
> http://public.kitware.com/cgi-bin/mailman/listinfo/ves
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/ves/attachments/20140318/4d082750/attachment-0003.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/png
Size: 11861 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/ves/attachments/20140318/4d082750/attachment-0003.png>
More information about the Ves
mailing list