Point Cloud Library (PCL)
1.15.1
Toggle main menu visibility
Loading...
Searching...
No Matches
pcl
TextureMesh.h
1
/*
2
* Software License Agreement (BSD License)
3
*
4
* Point Cloud Library (PCL) - www.pointclouds.org
5
* Copyright (c) 2010-2011, Willow Garage, Inc.
6
* Copyright (c) 2012-, Open Perception, Inc.
7
*
8
* All rights reserved.
9
*
10
* Redistribution and use in source and binary forms, with or without
11
* modification, are permitted provided that the following conditions
12
* are met:
13
*
14
* * Redistributions of source code must retain the above copyright
15
* notice, this list of conditions and the following disclaimer.
16
* * Redistributions in binary form must reproduce the above
17
* copyright notice, this list of conditions and the following
18
* disclaimer in the documentation and/or other materials provided
19
* with the distribution.
20
* * Neither the name of the copyright holder(s) nor the names of its
21
* contributors may be used to endorse or promote products derived
22
* from this software without specific prior written permission.
23
*
24
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35
* POSSIBILITY OF SUCH DAMAGE.
36
*
37
*/
38
39
#pragma once
40
41
#include <Eigen/Core>
42
#include <string>
43
#include <pcl/PCLPointCloud2.h>
44
#include <pcl/Vertices.h>
45
46
namespace
pcl
47
{
48
/** \author Khai Tran */
49
struct
TexMaterial
50
{
51
struct
RGB
52
{
53
float
r
= 0;
54
float
g
= 0;
55
float
b
= 0;
56
};
//RGB
57
58
/** \brief Texture name. */
59
std::string
tex_name
;
60
61
/** \brief Texture file. */
62
std::string
tex_file
;
63
64
/** \brief Defines the ambient color of the material to be (r,g,b). */
65
RGB
tex_Ka
;
66
67
/** \brief Defines the diffuse color of the material to be (r,g,b). */
68
RGB
tex_Kd
;
69
70
/** \brief Defines the specular color of the material to be (r,g,b). This color shows up in highlights. */
71
RGB
tex_Ks
;
72
73
/** \brief Defines the transparency of the material to be alpha. */
74
float
tex_d
;
75
76
/** \brief Defines the shininess of the material to be s. */
77
float
tex_Ns
;
78
79
/** \brief Denotes the illumination model used by the material.
80
*
81
* illum = 1 indicates a flat material with no specular highlights, so the value of Ks is not used.
82
* illum = 2 denotes the presence of specular highlights, and so a specification for Ks is required.
83
*/
84
int
tex_illum
;
85
};
// TexMaterial
86
87
/** \author Khai Tran */
88
struct
TextureMesh
89
{
90
pcl::PCLPointCloud2
cloud
;
91
pcl::PCLHeader
header
;
92
93
94
/** \brief polygon which is mapped with specific texture defined in TexMaterial */
95
std::vector<std::vector<pcl::Vertices> >
tex_polygons
;
96
/** \brief UV coordinates */
97
std::vector<std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f> > >
tex_coordinates
;
98
/** \brief define texture material */
99
std::vector<pcl::TexMaterial>
tex_materials
;
100
/** \brief Specifies which texture coordinates from tex_coordinates each polygon/face uses.
101
* The vectors must have the same sizes as in tex_polygons, but the pcl::Vertices
102
* may be empty for those polygons/faces that do not use coordinates.
103
*/
104
std::vector<std::vector<pcl::Vertices> >
tex_coord_indices
;
105
106
public
:
107
using
Ptr
= shared_ptr<pcl::TextureMesh>;
108
using
ConstPtr
= shared_ptr<const pcl::TextureMesh>;
109
};
// struct TextureMesh
110
111
using
TextureMeshPtr
=
TextureMesh::Ptr
;
112
using
TextureMeshConstPtr
=
TextureMesh::ConstPtr
;
113
}
// namespace pcl
pcl
Definition
convolution.h:46
pcl::TextureMeshConstPtr
TextureMesh::ConstPtr TextureMeshConstPtr
Definition
TextureMesh.h:112
pcl::TextureMeshPtr
TextureMesh::Ptr TextureMeshPtr
Definition
TextureMesh.h:111
pcl::PCLHeader
Definition
PCLHeader.h:11
pcl::PCLPointCloud2
Definition
PCLPointCloud2.h:17
pcl::TexMaterial::RGB
Definition
TextureMesh.h:52
pcl::TexMaterial::RGB::g
float g
Definition
TextureMesh.h:54
pcl::TexMaterial::RGB::b
float b
Definition
TextureMesh.h:55
pcl::TexMaterial::RGB::r
float r
Definition
TextureMesh.h:53
pcl::TexMaterial
Definition
TextureMesh.h:50
pcl::TexMaterial::tex_d
float tex_d
Defines the transparency of the material to be alpha.
Definition
TextureMesh.h:74
pcl::TexMaterial::tex_Kd
RGB tex_Kd
Defines the diffuse color of the material to be (r,g,b).
Definition
TextureMesh.h:68
pcl::TexMaterial::tex_Ka
RGB tex_Ka
Defines the ambient color of the material to be (r,g,b).
Definition
TextureMesh.h:65
pcl::TexMaterial::tex_Ks
RGB tex_Ks
Defines the specular color of the material to be (r,g,b).
Definition
TextureMesh.h:71
pcl::TexMaterial::tex_name
std::string tex_name
Texture name.
Definition
TextureMesh.h:59
pcl::TexMaterial::tex_file
std::string tex_file
Texture file.
Definition
TextureMesh.h:62
pcl::TexMaterial::tex_illum
int tex_illum
Denotes the illumination model used by the material.
Definition
TextureMesh.h:84
pcl::TexMaterial::tex_Ns
float tex_Ns
Defines the shininess of the material to be s.
Definition
TextureMesh.h:77
pcl::TextureMesh
Definition
TextureMesh.h:89
pcl::TextureMesh::tex_polygons
std::vector< std::vector< pcl::Vertices > > tex_polygons
polygon which is mapped with specific texture defined in TexMaterial
Definition
TextureMesh.h:95
pcl::TextureMesh::tex_coordinates
std::vector< std::vector< Eigen::Vector2f, Eigen::aligned_allocator< Eigen::Vector2f > > > tex_coordinates
UV coordinates.
Definition
TextureMesh.h:97
pcl::TextureMesh::header
pcl::PCLHeader header
Definition
TextureMesh.h:91
pcl::TextureMesh::tex_materials
std::vector< pcl::TexMaterial > tex_materials
define texture material
Definition
TextureMesh.h:99
pcl::TextureMesh::cloud
pcl::PCLPointCloud2 cloud
Definition
TextureMesh.h:90
pcl::TextureMesh::ConstPtr
shared_ptr< const pcl::TextureMesh > ConstPtr
Definition
TextureMesh.h:108
pcl::TextureMesh::Ptr
shared_ptr< pcl::TextureMesh > Ptr
Definition
TextureMesh.h:107
pcl::TextureMesh::tex_coord_indices
std::vector< std::vector< pcl::Vertices > > tex_coord_indices
Specifies which texture coordinates from tex_coordinates each polygon/face uses.
Definition
TextureMesh.h:104