Point Cloud Library (PCL)
1.7.1
Main Page
Modules
Namespaces
Classes
common
include
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
#ifndef PCL_TEXTUREMESH_H_
40
#define PCL_TEXTUREMESH_H_
41
42
#include <Eigen/Core>
43
#include <string>
44
#include <pcl/PCLPointCloud2.h>
45
#include <pcl/Vertices.h>
46
47
namespace
pcl
48
{
49
/** \author Khai Tran */
50
struct
TexMaterial
51
{
52
TexMaterial
() :
tex_name
(),
tex_file
(),
tex_Ka
(),
tex_Kd
(),
tex_Ks
(),
tex_d
(),
tex_Ns
(),
tex_illum
() {}
53
54
struct
RGB
55
{
56
float
r
;
57
float
g
;
58
float
b
;
59
};
//RGB
60
61
/** \brief Texture name. */
62
std::string
tex_name
;
63
64
/** \brief Texture file. */
65
std::string
tex_file
;
66
67
/** \brief Defines the ambient color of the material to be (r,g,b). */
68
RGB
tex_Ka
;
69
70
/** \brief Defines the diffuse color of the material to be (r,g,b). */
71
RGB
tex_Kd
;
72
73
/** \brief Defines the specular color of the material to be (r,g,b). This color shows up in highlights. */
74
RGB
tex_Ks
;
75
76
/** \brief Defines the transparency of the material to be alpha. */
77
float
tex_d
;
78
79
/** \brief Defines the shininess of the material to be s. */
80
float
tex_Ns
;
81
82
/** \brief Denotes the illumination model used by the material.
83
*
84
* illum = 1 indicates a flat material with no specular highlights, so the value of Ks is not used.
85
* illum = 2 denotes the presence of specular highlights, and so a specification for Ks is required.
86
*/
87
int
tex_illum
;
88
};
// TexMaterial
89
90
/** \author Khai Tran */
91
struct
TextureMesh
92
{
93
TextureMesh
() :
94
cloud
(),
tex_polygons
(),
tex_coordinates
(),
tex_materials
() {}
95
96
pcl::PCLPointCloud2
cloud
;
97
pcl::PCLHeader
header
;
98
99
100
std::vector<std::vector<pcl::Vertices> >
tex_polygons
;
// polygon which is mapped with specific texture defined in TexMaterial
101
std::vector<std::vector<Eigen::Vector2f> >
tex_coordinates
;
// UV coordinates
102
std::vector<pcl::TexMaterial>
tex_materials
;
// define texture material
103
104
public
:
105
typedef
boost::shared_ptr<pcl::TextureMesh>
Ptr
;
106
typedef
boost::shared_ptr<pcl::TextureMesh const>
ConstPtr
;
107
};
// struct TextureMesh
108
109
typedef
boost::shared_ptr<pcl::TextureMesh>
TextureMeshPtr
;
110
typedef
boost::shared_ptr<pcl::TextureMesh const>
TextureMeshConstPtr
;
111
}
// namespace pcl
112
113
#endif
/* PCL_TEXTUREMESH_H_ */
114