WritePLY
Description¶
Note
Unlike vtkPolyDataXMLWriter and most other VTK writers, to write colors to the .ply file you must specify to the vtkPLYWriter:
plyWriter->SetArrayName("Colors");
where your color array was created/named like this:
vtkSmartPointer vtkUnsignedCharArray> colors = vtkSmartPointer vtkUnsignedCharArray>::New(); colors->SetNumberOfComponents(3); colors->SetName("Colors");
(This was found in response to a user question on StackOverflow: http://stackoverflow.com/questions/17783612/save-mesh-with-rgb-in-vtk/19525938)
Question
If you have a simple question about this example contact us at VTKExProject If your question is more complex and may require extended discussion, please use the VTK Discourse Forum
Code¶
WritePLY.py
import vtk
def get_program_parameters():
import argparse
description = 'Generate image data, then write a .ply file.'
epilogue = '''
'''
parser = argparse.ArgumentParser(description=description, epilog=epilogue)
parser.add_argument('filename', help='A required ply filename.', nargs='?',
const='TestWritePLY.ply',
type=str, default='TestWritePLY.ply')
args = parser.parse_args()
return args.filename
def main():
colors = vtk.vtkNamedColors()
filename = get_program_parameters()
sphereSource = vtk.vtkSphereSource()
sphereSource.Update()
plyWriter = vtk.vtkPLYWriter()
plyWriter.SetFileName(filename)
plyWriter.SetInputConnection(sphereSource.GetOutputPort())
plyWriter.Write()
# Read and display for verification
reader = vtk.vtkPLYReader()
reader.SetFileName(filename)
reader.Update()
mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(reader.GetOutputPort())
actor = vtk.vtkActor()
actor.SetMapper(mapper)
renderer = vtk.vtkRenderer()
renderWindow = vtk.vtkRenderWindow()
renderWindow.AddRenderer(renderer)
renderWindowInteractor = vtk.vtkRenderWindowInteractor()
renderWindowInteractor.SetRenderWindow(renderWindow)
renderer.AddActor(actor)
renderer.SetBackground(colors.GetColor3d('cobalt_green'))
renderWindow.Render()
renderWindowInteractor.Start()
if __name__ == '__main__':
main()