ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
MeshTextureApplier.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 #include <pcl/TextureMesh.h>
11 
12 #include <Eigen/Dense>
13 #include <vector>
14 
15 // Forward declarations
16 class vtkLODActor;
17 class vtkPolyData;
18 class vtkRenderer;
19 class vtkRenderWindow;
20 class ccGenericMesh;
21 class ccMaterialSet;
22 
23 namespace PclUtils {
24 namespace renders {
25 
26 class TextureRenderManager;
27 
35 public:
45  static bool ApplyTexturesFromCCMesh(
46  vtkLODActor* actor,
47  ccGenericMesh* mesh, // Non-const because getTriangleVertIndexes is
48  // non-const
49  vtkPolyData* polydata,
50  TextureRenderManager* render_manager,
51  vtkRenderer* renderer);
52 
63  static bool ApplyTexturesFromMaterialSet(
64  vtkLODActor* actor,
65  const ccMaterialSet* materials,
66  const std::vector<std::vector<Eigen::Vector2f>>& tex_coordinates,
67  vtkPolyData* polydata,
68  TextureRenderManager* render_manager,
69  vtkRenderer* renderer);
70 
77  static bool ApplyPBRTextures(vtkLODActor* actor,
78  const pcl::TextureMesh& mesh,
79  vtkPolyData* polydata,
80  TextureRenderManager* render_manager,
81  vtkRenderer* renderer);
82 
87  static bool ApplyTraditionalTextures(vtkLODActor* actor,
88  const pcl::TextureMesh& mesh,
89  vtkPolyData* polydata,
90  vtkRenderWindow* render_window);
91 };
92 
93 } // namespace renders
94 } // namespace PclUtils
Utility class for applying textures to mesh actors.
static bool ApplyTexturesFromCCMesh(vtkLODActor *actor, ccGenericMesh *mesh, vtkPolyData *polydata, TextureRenderManager *render_manager, vtkRenderer *renderer)
Apply textures from ccGenericMesh (preferred method)
static bool ApplyPBRTextures(vtkLODActor *actor, const pcl::TextureMesh &mesh, vtkPolyData *polydata, TextureRenderManager *render_manager, vtkRenderer *renderer)
Apply PBR textures from PCLTextureMesh (deprecated)
static bool ApplyTraditionalTextures(vtkLODActor *actor, const pcl::TextureMesh &mesh, vtkPolyData *polydata, vtkRenderWindow *render_window)
Apply textures from PCLTextureMesh to actor (traditional path)
static bool ApplyTexturesFromMaterialSet(vtkLODActor *actor, const ccMaterialSet *materials, const std::vector< std::vector< Eigen::Vector2f >> &tex_coordinates, vtkPolyData *polydata, TextureRenderManager *render_manager, vtkRenderer *renderer)
Apply textures from ccMaterialSet with texture coordinates.
Generic mesh interface.
Mesh (triangle) material.