MCPcopy Create free account
hub / github.com/PyMesh/PyMesh / copy_metadata

Function copy_metadata

tools/Compression/Draco/DracoCompressionEngine.cpp:212–234  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

210
211template<typename DracoMesh>
212void copy_metadata(std::unique_ptr<DracoMesh>& draco_mesh, Mesh::Ptr mesh) {
213 const auto metadata = draco_mesh->GetMetadata();
214 if (metadata == nullptr) return;
215 const auto& attr_metadatas = metadata->attribute_metadatas();
216 for (const auto& attr_metadata : attr_metadatas) {
217 std::string name="";
218 attr_metadata->GetEntryString("name", &name);
219 if (name == "") continue;
220 auto uid = attr_metadata->att_unique_id();
221
222 const auto attr = draco_mesh->GetAttributeByUniqueId(uid);
223 const auto num_rows = attr->size();
224 const auto num_cols = attr->num_components();
225
226 VectorF data(num_rows * num_cols);
227 for (size_t i=0; i<num_rows; i++) {
228 attr->ConvertValue(draco::AttributeValueIndex(i),
229 data.data() + i*num_cols);
230 }
231 mesh->add_empty_attribute(name);
232 mesh->set_attribute(name, data);
233 }
234}
235
236Mesh::Ptr from_draco_mesh(std::unique_ptr<draco::Mesh> draco_mesh) {
237 assert(draco_mesh);

Callers 2

from_draco_meshFunction · 0.85
from_draco_point_cloudFunction · 0.85

Calls 4

num_componentsMethod · 0.80
sizeMethod · 0.45
add_empty_attributeMethod · 0.45
set_attributeMethod · 0.45

Tested by

no test coverage detected