14#include <lagrange/Logger.h>
15#include <lagrange/ui/Entity.h>
16#include <lagrange/ui/api.h>
17#include <lagrange/ui/components/MeshData.h>
18#include <lagrange/ui/types/Texture.h>
19#include <lagrange/ui/utils/io_assimp.h>
21#include <lagrange/io/load_mesh_ext.h>
28LA_UI_API std::shared_ptr<Texture> load_texture(
37LA_UI_API std::shared_ptr<Material>
38convert_material(Registry& r,
const fs::path& base_dir,
const tinyobj::material_t& tinymat);
43template <
typename MeshType>
47 const io::MeshLoaderParams& params = io::MeshLoaderParams())
49 if (path.extension() !=
".obj") {
50 lagrange::logger().error(
"wrong file format '{}' for load_obj", path.extension().string());
57 p.load_materials =
false;
60 auto res = lagrange::io::load_mesh_ext<MeshType>(path, params);
61 if (!res.success)
return NullEntity;
64 auto e = register_mesh<MeshType>(r, std::dynamic_pointer_cast<MeshType>(mesh));
65 ui::set_name(r, e, path.filename().string());
73template <
typename MeshType>
77 const io::MeshLoaderParams& params = io::MeshLoaderParams())
79 if (path.extension() !=
".obj") {
80 lagrange::logger().error(
"wrong file format '{}' for load_obj", path.extension().string());
81 return {NullEntity, {}};
87 p.load_materials =
true;
90 auto res = lagrange::io::load_mesh_ext<MeshType>(path, params);
91 if (!res.success)
return {NullEntity, {}};
94 auto e = register_mesh<MeshType>(r, std::dynamic_pointer_cast<MeshType>(mesh));
95 ui::set_name(r, e, path.filename().string());
97 std::vector<std::shared_ptr<Material>> mats;
99 base_dir.remove_filename();
101 for (
auto& tinymat : res.materials) {
LA_CORE_API spdlog::logger & logger()
Retrieves the current logger.
Definition Logger.cpp:40
Lagrange UI Viewer and mini 3D engine.
Definition AcceleratedPicking.h:23
std::pair< Entity, std::vector< std::shared_ptr< Material > > > load_obj_with_materials(Registry &r, const fs::path &path, const io::MeshLoaderParams ¶ms=io::MeshLoaderParams())
Loads obj as a single mesh and materials.
Definition io.h:74
Entity load_obj(Registry &r, const fs::path &path, const io::MeshLoaderParams ¶ms=io::MeshLoaderParams())
Loads obj as a single mesh.
Definition io.h:44
LA_UI_API std::shared_ptr< Material > convert_material(Registry &r, const fs::path &base_dir, const tinyobj::material_t &tinymat)
Converts tinyobj's material_t to UI's Material.
Definition io.cpp:97
Main namespace for Lagrange.
std::shared_ptr< T > to_shared_ptr(std::unique_ptr< T > &&ptr)
Helper for automatic type deduction for unique_ptr to shared_ptr conversion.
Definition common.h:88