31 const std::vector<PointXYZ>& points,
35 filename, points, std::vector<uint32_t>(), std::vector<uint16_t>(), useBinary);
39 const std::vector<PointXYZ>& points,
40 const std::vector<uint32_t>& rgbaMap,
43 return WriteFormatPLY(filename, points, rgbaMap, std::vector<uint16_t>(), useBinary);
47 const std::vector<PointXYZ>& points,
48 const std::vector<uint16_t>& intensityMap,
51 return WriteFormatPLY(filename, points, std::vector<uint32_t>(), intensityMap, useBinary);
55 const std::vector<PointXYZ>& points,
56 const std::vector<uint32_t>& rgbaMap,
57 const std::vector<uint16_t>& intensityMap,
62 bool hasColors = points.size() == rgbaMap.size();
63 bool hasIntensities = points.size() == intensityMap.size();
69 useBinary ? (std::ios_base::out | std::ios_base::binary) : std::ios_base::out);
75 stream <<
"format " << (useBinary ?
"binary_little_endian" :
"ascii") <<
" 1.0\n";
76 stream <<
"element vertex " << points.size() <<
"\n";
77 stream <<
"property float x\n";
78 stream <<
"property float y\n";
79 stream <<
"property float z\n";
82 stream <<
"property uchar red\n";
83 stream <<
"property uchar green\n";
84 stream <<
"property uchar blue\n";
88 stream <<
"property float intensity\n";
90 stream <<
"end_header\n";
92 if (useBinary ==
false)
95 for (
int i = 0; i < static_cast<int>(points.size()); i++)
98 stream << point.
x <<
" " << point.
y <<
" " << point.
z;
102 const uint8_t* rgba =
reinterpret_cast<const uint8_t*
>(&rgbaMap.at(i));
103 stream <<
" " <<
static_cast<uint32_t
>(rgba[0]) <<
" " <<
static_cast<uint32_t
>(rgba[1])
104 <<
" " <<
static_cast<uint32_t
>(rgba[2]);
108 float intensity =
static_cast<float>(intensityMap.at(i)) / 65535.0f;
109 stream <<
" " << intensity;
118 for (
int i = 0; i < static_cast<int>(points.size()); i++)
125 stream.write(
reinterpret_cast<char*
>(&x), 4);
126 stream.write(
reinterpret_cast<char*
>(&y), 4);
127 stream.write(
reinterpret_cast<char*
>(&z), 4);
131 stream.write(
reinterpret_cast<const char*
>(&rgbaMap.at(i)), 3);
135 float intensity =
static_cast<float>(intensityMap.at(i)) / 65535.0f;
136 stream.write(
reinterpret_cast<const char*
>(&intensity), 4);