Changeset View
Changeset View
Standalone View
Standalone View
source/blender/io/wavefront_obj/exporter/obj_export_file_writer.cc
| Context not available. | |||||
| obj_mesh_data.tot_uv_vertices()); | obj_mesh_data.tot_uv_vertices()); | ||||
| const int tot_polygons = obj_mesh_data.tot_polygons(); | const int tot_polygons = obj_mesh_data.tot_polygons(); | ||||
| obj_parallel_chunked_output(fh, tot_polygons, [&](FormatHandler<eFileType::OBJ> &buf, int i) { | obj_parallel_chunked_output(fh, tot_polygons, [&](FormatHandler<eFileType::OBJ> &buf, int raw_i) { | ||||
| /* Polygon order for writing into the file is not necessarily the same | |||||
| * as order in the mesh; it will be sorted by material indices. Remap current | |||||
| * and previous indices here according to the order. */ | |||||
| int prev_i = obj_mesh_data.remap_poly_index(raw_i - 1); | |||||
| int i = obj_mesh_data.remap_poly_index(raw_i); | |||||
| Vector<int> poly_vertex_indices = obj_mesh_data.calc_poly_vertex_indices(i); | Vector<int> poly_vertex_indices = obj_mesh_data.calc_poly_vertex_indices(i); | ||||
| Span<int> poly_uv_indices = obj_mesh_data.calc_poly_uv_indices(i); | Span<int> poly_uv_indices = obj_mesh_data.calc_poly_uv_indices(i); | ||||
| Vector<int> poly_normal_indices = obj_mesh_data.calc_poly_normal_indices(i); | Vector<int> poly_normal_indices = obj_mesh_data.calc_poly_normal_indices(i); | ||||
| /* Write smoothing group if different from previous. */ | /* Write smoothing group if different from previous. */ | ||||
| { | { | ||||
| const int prev_group = get_smooth_group(obj_mesh_data, export_params_, i - 1); | const int prev_group = get_smooth_group(obj_mesh_data, export_params_, prev_i); | ||||
| const int group = get_smooth_group(obj_mesh_data, export_params_, i); | const int group = get_smooth_group(obj_mesh_data, export_params_, i); | ||||
| if (group != prev_group) { | if (group != prev_group) { | ||||
| buf.write<eOBJSyntaxElement::smooth_group>(group); | buf.write<eOBJSyntaxElement::smooth_group>(group); | ||||
| Context not available. | |||||
| /* Write vertex group if different from previous. */ | /* Write vertex group if different from previous. */ | ||||
| if (export_params_.export_vertex_groups) { | if (export_params_.export_vertex_groups) { | ||||
| const int16_t prev_group = i == 0 ? NEGATIVE_INIT : | const int16_t prev_group = raw_i == 0 ? NEGATIVE_INIT : | ||||
| obj_mesh_data.get_poly_deform_group_index(i - 1); | obj_mesh_data.get_poly_deform_group_index(prev_i); | ||||
| const int16_t group = obj_mesh_data.get_poly_deform_group_index(i); | const int16_t group = obj_mesh_data.get_poly_deform_group_index(i); | ||||
| if (group != prev_group) { | if (group != prev_group) { | ||||
| buf.write<eOBJSyntaxElement::object_group>( | buf.write<eOBJSyntaxElement::object_group>( | ||||
| Context not available. | |||||
| /* Write material name and material group if different from previous. */ | /* Write material name and material group if different from previous. */ | ||||
| if (export_params_.export_materials && obj_mesh_data.tot_materials() > 0) { | if (export_params_.export_materials && obj_mesh_data.tot_materials() > 0) { | ||||
| const int16_t prev_mat = i == 0 ? NEGATIVE_INIT : obj_mesh_data.ith_poly_matnr(i - 1); | const int16_t prev_mat = raw_i == 0 ? NEGATIVE_INIT : obj_mesh_data.ith_poly_matnr(prev_i); | ||||
| const int16_t mat = obj_mesh_data.ith_poly_matnr(i); | const int16_t mat = obj_mesh_data.ith_poly_matnr(i); | ||||
| if (mat != prev_mat) { | if (mat != prev_mat) { | ||||
| if (mat == NOT_FOUND) { | if (mat == NOT_FOUND) { | ||||
| Context not available. | |||||