Fix OBJ mesh importer smoothing handling

This commit is contained in:
kleonc 2023-03-25 11:38:55 +01:00
parent 0291fcd7b6
commit e8900a2cac

View file

@ -245,6 +245,7 @@ static Error _parse_obj(const String &p_path, List<Ref<Mesh>> &r_meshes, bool p_
String current_group;
uint32_t smooth_group = 0;
bool smoothing = true;
const uint32_t no_smoothing_smooth_group = (uint32_t)-1;
while (true) {
String l = f->get_line().strip_edges();
@ -349,10 +350,7 @@ static Error _parse_obj(const String &p_path, List<Ref<Mesh>> &r_meshes, bool p_
if (!colors.is_empty()) {
surf_tool->set_color(colors[vtx]);
}
if (!smoothing) {
smooth_group++;
}
surf_tool->set_smooth_group(smooth_group);
surf_tool->set_smooth_group(smoothing ? smooth_group : no_smoothing_smooth_group);
surf_tool->add_vertex(vertex);
}
@ -367,8 +365,10 @@ static Error _parse_obj(const String &p_path, List<Ref<Mesh>> &r_meshes, bool p_
do_smooth = true;
}
if (do_smooth != smoothing) {
smooth_group++;
smoothing = do_smooth;
if (smoothing) {
smooth_group++;
}
}
} else if (/*l.begins_with("g ") ||*/ l.begins_with("usemtl ") || (l.begins_with("o ") || f->eof_reached())) { //commit group to mesh
//groups are too annoying