def GetTorus(): uResolution = 51 vResolution = 51 surface = vtk.vtkParametricTorus() source = vtk.vtkParametricFunctionSource() source.SetUResolution(uResolution) source.SetVResolution(vResolution) source.SetParametricFunction(surface) source.Update() # Build the tcoords pd = UVTcoords(uResolution, vResolution, source.GetOutput()) # Now the tangents tangents = vtk.vtkPolyDataTangents() tangents.SetInputData(pd) tangents.Update() transform = vtk.vtkTransform() transform.RotateX(90.0) transformFilter = vtk.vtkTransformPolyDataFilter() transformFilter.SetInputConnection(tangents.GetOutputPort()) transformFilter.SetTransform(transform) transformFilter.Update() return transformFilter.GetOutput()
def GetRandomHills(): uResolution = 51 vResolution = 51 surface = vtk.vtkParametricRandomHills() surface.SetRandomSeed(1) surface.SetNumberOfHills(30) # If you want a plane # surface.SetHillAmplitude(0) source = vtk.vtkParametricFunctionSource() source.SetUResolution(uResolution) source.SetVResolution(vResolution) source.SetParametricFunction(surface) source.Update() # Build the tcoords pd = UVTcoords(uResolution, vResolution, source.GetOutput()) # Now the tangents tangents = vtk.vtkPolyDataTangents() tangents.SetInputData(pd) tangents.Update() transform = vtk.vtkTransform() transform.RotateZ(180.0) transform.RotateX(90.0) transformFilter = vtk.vtkTransformPolyDataFilter() transformFilter.SetInputConnection(tangents.GetOutputPort()) transformFilter.SetTransform(transform) transformFilter.Update() return transformFilter.GetOutput()
def make_actor(mesh_path, diffuse_path, normal_path ): if diffuse_path!="none": albedo = GetTexture(diffuse_path) albedo.UseSRGBColorSpaceOn() normal = GetTexture(normal_path) # reader = vtk.vtkOBJReader() reader = vtk.vtkPLYReader() reader.SetFileName(mesh_path) reader.Update() polydata=reader.GetOutputDataObject(0) # #make it into triangles # triangulator=vtk.vtkTriangleFilter() # triangulator.SetInputData(polydata) # triangulator.Update() # polydata=triangulator.GetOutput() #compute tangents if diffuse_path!="none": tangents=vtk.vtkPolyDataTangents() tangents.SetInputData(polydata) tangents.Update() polydata=tangents.GetOutput() mapper = vtk.vtkPolyDataMapper() # mapper.SetInputConnection(reader.GetOutputPort()) mapper.SetInputData(polydata) actor = vtk.vtkActor() actor.SetMapper(mapper) actor.GetProperty().SetInterpolationToPBR() colors = vtk.vtkNamedColors() actor.GetProperty().SetColor(colors.GetColor3d('White')) actor.GetProperty().SetMetallic(0.0) actor.GetProperty().SetRoughness(0.5) # configure textures (needs tcoords on the mesh) if diffuse_path!="none": actor.GetProperty().SetBaseColorTexture(albedo) # help(actor.GetProperty()) # exit(1) # actor.GetProperty().SetORMTexture(material) # actor.GetProperty().SetOcclusionStrength(occlusionStrength) # actor.GetProperty().SetEmissiveTexture(emissive) # actor.GetProperty().SetEmissiveFactor(emissiveFactor) # needs tcoords, normals and tangents on the mesh if diffuse_path!="none": actor.GetProperty().SetNormalTexture(normal) actor.GetProperty().BackfaceCullingOn() return actor
def GetSphere(): thetaResolution = 32 phiResolution = 32 surface = vtk.vtkTexturedSphereSource() surface.SetThetaResolution(thetaResolution) surface.SetPhiResolution(phiResolution) # Now the tangents tangents = vtk.vtkPolyDataTangents() tangents.SetInputConnection(surface.GetOutputPort()) tangents.Update() return tangents.GetOutput()
def GetCube(): surface = vtk.vtkCubeSource() # Triangulate triangulation = vtk.vtkTriangleFilter() triangulation.SetInputConnection(surface.GetOutputPort()) # Subdivide the triangles subdivide = vtk.vtkLinearSubdivisionFilter() subdivide.SetInputConnection(triangulation.GetOutputPort()) subdivide.SetNumberOfSubdivisions(3) # Now the tangents tangents = vtk.vtkPolyDataTangents() tangents.SetInputConnection(subdivide.GetOutputPort()) tangents.Update() return tangents.GetOutput()
def GetBoy(): uResolution = 51 vResolution = 51 surface = vtk.vtkParametricBoy() source = vtk.vtkParametricFunctionSource() source.SetUResolution(uResolution) source.SetVResolution(vResolution) source.SetParametricFunction(surface) source.Update() # Build the tcoords pd = UVTcoords(uResolution, vResolution, source.GetOutput()) # Now the tangents tangents = vtk.vtkPolyDataTangents() tangents.SetInputData(pd) tangents.Update() return tangents.GetOutput()