diff --git a/source/blender/io/wavefront_obj/CMakeLists.txt b/source/blender/io/wavefront_obj/CMakeLists.txt index 42ae3ae5fbd..beebfdbca29 100644 --- a/source/blender/io/wavefront_obj/CMakeLists.txt +++ b/source/blender/io/wavefront_obj/CMakeLists.txt @@ -33,6 +33,7 @@ set(INC ../../ikplugin ../../../../intern/iksolver/extern ../../bmesh + k:/BlenderGit/lib/win64_vc15/OpenImageIO/include/OpenImageIO/fmt ) set(INC_SYS diff --git a/source/blender/io/wavefront_obj/intern/wavefront_obj_file_handler.cc b/source/blender/io/wavefront_obj/intern/wavefront_obj_file_handler.cc index 359c4df0c4c..e6d31ff642a 100644 --- a/source/blender/io/wavefront_obj/intern/wavefront_obj_file_handler.cc +++ b/source/blender/io/wavefront_obj/intern/wavefront_obj_file_handler.cc @@ -28,7 +28,10 @@ #include "wavefront_obj.hh" #include "wavefront_obj_file_handler.hh" - +#define FMT_HEADER_ONLY +#include "format.h" +#include "printf.h" +#define fprintf fmt::fprintf namespace io { namespace obj { @@ -117,32 +120,28 @@ void write_obj_data_fprintf(const char *filepath, OBJ_data_to_export *data_to_ex printf("Error in creating the file\n"); return; } + setvbuf(outfile, NULL, _IOFBF, 1024*1024*32); fprintf(outfile, "# Blender 2.90\n"); fprintf(outfile, "o %s\n", data_to_export->ob_eval->id.name + 2); for (uint i = 0; i < data_to_export->tot_vertices; i++) { MVert *vertex = &data_to_export->mvert[i]; - fprintf(outfile, "v "); - fprintf(outfile, "%f ", vertex->co[0]); - fprintf(outfile, "%f ", vertex->co[1]); - fprintf(outfile, "%f\n", vertex->co[2]); + fprintf(outfile, "v %.8f %.8f %.8f\n", vertex->co[0], vertex->co[1], vertex->co[2]); } for (uint i = 0; i < data_to_export->tot_uv_vertices; i++) { std::array &uv_vertex = data_to_export->uv_coords[i]; - fprintf(outfile, "vt "); - fprintf(outfile, "%f ", uv_vertex[0]); - fprintf(outfile, "%f\n", uv_vertex[1]); + fprintf(outfile, "vt %.8f %.8f\n", uv_vertex[0], uv_vertex[1]); } for (uint i = 0; i < data_to_export->tot_poly; i++) { MVert *vertex_list = data_to_export->mvert; const Polygon &polygon = data_to_export->polygon_list[i]; - fprintf(outfile, "vn "); - fprintf(outfile, "%hd ", face_normal_axis_component(polygon, AXIS_X, vertex_list)); - fprintf(outfile, "%hd ", face_normal_axis_component(polygon, AXIS_Y, vertex_list)); - fprintf(outfile, "%hd\n", face_normal_axis_component(polygon, AXIS_Z, vertex_list)); + fprintf(outfile, "vn %hd %hd %hd\n", + face_normal_axis_component(polygon, AXIS_X, vertex_list), + face_normal_axis_component(polygon, AXIS_Y, vertex_list), + face_normal_axis_component(polygon, AXIS_Z, vertex_list)); } for (uint i = 0; i < data_to_export->tot_poly; i++) {