Skip to content

Commit

Permalink
correctly parse flat meshes from old versions
Browse files Browse the repository at this point in the history
  • Loading branch information
nathanhhughes committed Aug 15, 2024
1 parent e03d875 commit c7c0253
Showing 1 changed file with 33 additions and 1 deletion.
34 changes: 33 additions & 1 deletion src/node_attributes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -480,11 +480,43 @@ void KhronosObjectAttributes::serialization_info() {
SemanticNodeAttributes::serialization_info();
serialization::field("first_observed_ns", first_observed_ns);
serialization::field("last_observed_ns", last_observed_ns);
serialization::field("mesh", mesh);
serialization::field("trajectory_positions", trajectory_positions);
serialization::field("trajectory_timestamps", trajectory_timestamps);
serialization::field("dynamic_object_points", dynamic_object_points);
serialization::field("details", details);

const auto& header = io::GlobalInfo::loadedHeader();
if (header.version <= io::Version(1, 0, 1)) {
std::vector<float> xyz;
serialization::field("vertices", xyz);
std::vector<uint8_t> rgb;
serialization::field("colors", rgb);
std::vector<uint32_t> faces;
serialization::field("faces", faces);
const auto num_vertices = xyz.size() / 3;
const auto num_colors = rgb.size() / 4;
const auto num_faces = faces.size();
if (num_vertices != num_colors || num_vertices != num_faces) {
return;
}

mesh = Mesh(true, false, false, false);
mesh.resizeVertices(num_vertices);
for (size_t i = 0; i < num_vertices; ++i) {
mesh.setPos(i, {xyz[3 * i], xyz[3 * i + 1], xyz[3 * i + 2]});
mesh.setColor(i, {rgb[4 * i], rgb[4 * i + 1], rgb[4 * i + 2], rgb[4 * i + 3]});
}

mesh.resizeFaces(num_faces);
for (size_t i = 0; i < num_faces; ++i) {
auto& face = mesh.face(i);
for (size_t j = 0; j < 3; ++j) {
face[j] = faces[3 * i + j];
}
}
} else {
serialization::field("mesh", mesh);
}
}

bool KhronosObjectAttributes::is_equal(const NodeAttributes& other) const {
Expand Down

0 comments on commit c7c0253

Please sign in to comment.