| 22 | |
| 23 | template <typename DracoMesh> |
| 24 | void copy_vertices(Mesh::Ptr mesh, std::unique_ptr<DracoMesh>& draco_mesh) { |
| 25 | const auto dim = mesh->get_dim(); |
| 26 | const auto num_vertices = mesh->get_num_vertices(); |
| 27 | draco_mesh->set_num_points(num_vertices); |
| 28 | draco::GeometryAttribute positions; |
| 29 | positions.Init(draco::GeometryAttribute::POSITION, // Attribute type |
| 30 | nullptr, // data buffer |
| 31 | dim, // number of components |
| 32 | draco::DT_FLOAT64, // data type |
| 33 | false, // normalized |
| 34 | sizeof(Float) * dim, // byte stride |
| 35 | 0); // byte offset |
| 36 | auto pos_att_id = draco_mesh->AddAttribute( |
| 37 | positions, // attribute object |
| 38 | true, // identity mapping |
| 39 | num_vertices); // num attribute values |
| 40 | |
| 41 | for (int i = 0; i < num_vertices; ++i) { |
| 42 | draco_mesh->attribute(pos_att_id)->SetAttributeValue( |
| 43 | draco::AttributeValueIndex(i), mesh->get_vertex(i).data()); |
| 44 | } |
| 45 | } |
| 46 | |
| 47 | template <typename DracoMesh> |
| 48 | void copy_faces(Mesh::Ptr mesh, std::unique_ptr<DracoMesh>& draco_mesh) { |
no test coverage detected