diff options
Diffstat (limited to 'source/blender/io/usd/intern/usd_writer_mesh.cc')
-rw-r--r-- | source/blender/io/usd/intern/usd_writer_mesh.cc | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/source/blender/io/usd/intern/usd_writer_mesh.cc b/source/blender/io/usd/intern/usd_writer_mesh.cc index a39f74c6420..e949bafe517 100644 --- a/source/blender/io/usd/intern/usd_writer_mesh.cc +++ b/source/blender/io/usd/intern/usd_writer_mesh.cc @@ -283,25 +283,22 @@ static void get_loops_polys(const Mesh *mesh, USDMeshData &usd_mesh_data) static void get_edge_creases(const Mesh *mesh, USDMeshData &usd_mesh_data) { - const float factor = 1.0f / 255.0f; + const float *creases = static_cast<const float *>(CustomData_get_layer(&mesh->edata, CD_CREASE)); + if (!creases) { + return; + } const Span<MEdge> edges = mesh->edges(); - float sharpness; for (const int i : edges.index_range()) { - const MEdge &edge = edges[i]; - if (edge.crease == 0) { + const float crease = creases[i]; + if (crease == 0.0f) { continue; } - if (edge.crease == 255) { - sharpness = pxr::UsdGeomMesh::SHARPNESS_INFINITE; - } - else { - sharpness = static_cast<float>(edge.crease) * factor; - } + const float sharpness = crease >= 1.0f ? pxr::UsdGeomMesh::SHARPNESS_INFINITE : crease; - usd_mesh_data.crease_vertex_indices.push_back(edge.v1); - usd_mesh_data.crease_vertex_indices.push_back(edge.v2); + usd_mesh_data.crease_vertex_indices.push_back(edges[i].v1); + usd_mesh_data.crease_vertex_indices.push_back(edges[i].v2); usd_mesh_data.crease_lengths.push_back(2); usd_mesh_data.crease_sharpnesses.push_back(sharpness); } |