commit 6d5dccf85bb552ca11905fca2191df3206b50e96 Author: lejulien Date: Fri Jan 9 13:14:33 2026 +0100 Moving from gitlab diff --git a/.clangd b/.clangd new file mode 100644 index 0000000..e6b017a --- /dev/null +++ b/.clangd @@ -0,0 +1,6 @@ +CompileFlags: + Add: [ + "-I/usr/include/c++/13", + "-I/usr/include/x86_64-linux-gnu/c++/13", + "-I/usr/lib/gcc/x86_64-linux-gnu/13/include" + ] diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1696efe --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.cache +build-linux-x86_64 +build-win-x86_64 diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..afc871c --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,73 @@ +cmake_minimum_required(VERSION 3.18) +set(NAME "leyngine") +project(${NAME} CXX) + +set(CMAKE_CXX_STANDARD 23) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +# Copying assets +file(COPY "${CMAKE_SOURCE_DIR}/assets" DESTINATION "${CMAKE_BINARY_DIR}") + +# includes +include_directories(./includes) + +# raylib +include(FetchContent) +FetchContent_Declare( + raylib + GIT_REPOSITORY https://github.com/raysan5/raylib.git + GIT_TAG 5.5 + GIT_SHALLOW 1 +) +FetchContent_GetProperties(raylib) +if (NOT raylib_POPULATED) + set(FETCHCONTENT_QUIET NO) + FetchContent_Populate(raylib) + set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) + set(BUILD_GAMES OFF CACHE BOOL "" FORCE) + add_subdirectory(${raylib_SOURCE_DIR} ${raylib_BINARY_DIR}) +endif() + + +# nlohmann::json +FetchContent_Declare( + json + GIT_REPOSITORY https://github.com/nlohmann/json.git + GIT_TAG v3.11.3 +) +FetchContent_MakeAvailable(json) + +include_directories(${imgui_SOURCE_DIR} ${rlImGui_SOURCE_DIR}) + +set(SRC_CXX_FILES "./srcs/main.cpp" + "./srcs/Model.cpp" +) + +add_executable(${NAME} ${SRC_CXX_FILES}) + +target_link_libraries(${NAME} PUBLIC raylib nlohmann_json::nlohmann_json) + +# Windows cross-compilation rule + +if (NOT DEFINED CMAKE_CROSSCOMPILE_WINDOWS_HELPER_ADDED) + set(CMAKE_CROSSCOMPILE_WINDOWS_HELPER_ADDED TRUE) + + set(WIN_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/toolchain-mingw-w64-x86_64.cmake" CACHE PATH "Toolchain for Win x86_64") + + add_custom_target(cmake-win + COMMAND ${CMAKE_COMMAND} -E echo "Configuring Windows x86_64 build in: ${CMAKE_SOURCE_DIR}/build-win-x86_64" + COMMAND ${CMAKE_COMMAND} + -S ${CMAKE_SOURCE_DIR} + -B ${CMAKE_SOURCE_DIR}/build-win-x86_64 + -G "Ninja" + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_TOOLCHAIN_FILE=${WIN_TOOLCHAIN_FILE} + COMMAND ${CMAKE_COMMAND} --build ${CMAKE_SOURCE_DIR}/build-win-x86_64 -- -v + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + COMMENT "Configure & build for Windows x86_64 (MinGW-w64)" + VERBATIM + ) +endif() + diff --git a/assets/can.mtl b/assets/can.mtl new file mode 100644 index 0000000..1b1d435 --- /dev/null +++ b/assets/can.mtl @@ -0,0 +1,12 @@ +# Blender 4.0.2 MTL File: 'can.blend' +# www.blender.org + +newmtl Material.001 +Ns 0.000000 +Ka 1.000000 1.000000 1.000000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.450000 +d 1.000000 +illum 2 +map_Kd can_unwrapped_text.png diff --git a/assets/can.obj b/assets/can.obj new file mode 100644 index 0000000..e20976a --- /dev/null +++ b/assets/can.obj @@ -0,0 +1,368 @@ +# Blender 4.0.2 +# www.blender.org +mtllib can.mtl +o Cylinder +v 0.000000 3.700000 -1.000000 +v 0.642788 3.700000 -0.766044 +v 0.984808 3.700000 -0.173648 +v 0.866025 3.700000 0.500000 +v 0.342020 3.700000 0.939693 +v -0.342020 3.700000 0.939693 +v -0.866025 3.700000 0.500000 +v -0.984808 3.700000 -0.173648 +v -0.642788 3.700000 -0.766044 +v 0.642788 3.700000 -0.766044 +v 0.000000 3.700000 -1.000000 +v 0.984808 3.700000 -0.173648 +v 0.866025 3.700000 0.500000 +v 0.342020 3.700000 0.939693 +v -0.342020 3.700000 0.939693 +v -0.866025 3.700000 0.500000 +v -0.984808 3.700000 -0.173648 +v -0.642788 3.700000 -0.766044 +v 0.655429 3.700000 -0.781109 +v 0.000000 3.700000 -1.019666 +v 1.004175 3.700000 -0.177063 +v 0.883057 3.700000 0.509833 +v 0.348746 3.700000 0.958172 +v -0.348746 3.700000 0.958172 +v -0.883057 3.700000 0.509833 +v -1.004175 3.700000 -0.177063 +v -0.655429 3.700000 -0.781109 +v 0.655429 3.800000 -0.781109 +v -0.000000 3.800000 -1.019666 +v 1.004175 3.800000 -0.177063 +v 0.883057 3.800000 0.509833 +v 0.348746 3.800000 0.958172 +v -0.348746 3.800000 0.958172 +v -0.883057 3.800000 0.509833 +v -1.004175 3.800000 -0.177063 +v -0.655429 3.800000 -0.781109 +v 0.000000 1.900000 -1.000000 +v 0.642788 1.900000 -0.766044 +v 0.984808 1.900000 -0.173648 +v 0.866025 1.900000 0.500000 +v 0.342020 1.900000 0.939693 +v -0.342020 1.900000 0.939693 +v -0.866025 1.900000 0.500000 +v -0.984808 1.900000 -0.173648 +v -0.642788 1.900000 -0.766044 +v 0.000000 0.100000 -1.000000 +v 0.642788 0.100000 -0.766044 +v 0.984808 0.100000 -0.173648 +v 0.866025 0.100000 0.500000 +v 0.342020 0.100000 0.939693 +v -0.342020 0.100000 0.939693 +v -0.866025 0.100000 0.500000 +v -0.984808 0.100000 -0.173648 +v -0.642788 0.100000 -0.766044 +v 0.642788 0.100000 -0.766044 +v 0.000000 0.100000 -1.000000 +v 0.984808 0.100000 -0.173648 +v 0.866025 0.100000 0.500000 +v 0.342020 0.100000 0.939693 +v -0.342020 0.100000 0.939693 +v -0.866025 0.100000 0.500000 +v -0.984808 0.100000 -0.173648 +v -0.642788 0.100000 -0.766044 +v 0.655429 0.100000 -0.781109 +v 0.000000 0.100000 -1.019666 +v 1.004175 0.100000 -0.177063 +v 0.883057 0.100000 0.509833 +v 0.348746 0.100000 0.958172 +v -0.348746 0.100000 0.958172 +v -0.883057 0.100000 0.509833 +v -1.004175 0.100000 -0.177063 +v -0.655429 0.100000 -0.781109 +v 0.655429 -0.000000 -0.781109 +v -0.000000 -0.000000 -1.019666 +v 1.004175 -0.000000 -0.177063 +v 0.883057 -0.000000 0.509833 +v 0.348746 -0.000000 0.958172 +v -0.348746 -0.000000 0.958172 +v -0.883057 -0.000000 0.509833 +v -1.004175 -0.000000 -0.177063 +v -0.655429 -0.000000 -0.781109 +vn 0.3420 -0.0000 -0.9397 +vn 0.8660 -0.0000 -0.5000 +vn 0.9848 -0.0000 0.1736 +vn 0.6428 -0.0000 0.7660 +vn -0.0000 -0.0000 1.0000 +vn -0.6428 -0.0000 0.7660 +vn -0.9848 -0.0000 0.1736 +vn -0.0000 1.0000 -0.0000 +vn -0.8660 -0.0000 -0.5000 +vn -0.3420 -0.0000 -0.9397 +vn -0.0000 -1.0000 -0.0000 +vt 1.000000 1.000000 +vt 0.888889 0.750000 +vt 1.000000 0.750000 +vt 0.888889 1.000000 +vt 0.777778 0.750000 +vt 0.777778 1.000000 +vt 0.666667 0.750000 +vt 0.666667 1.000000 +vt 0.555556 0.750000 +vt 0.555556 1.000000 +vt 0.444444 0.750000 +vt 0.444444 1.000000 +vt 0.333333 0.750000 +vt 0.333333 1.000000 +vt 0.222222 0.750000 +vt 0.222222 1.000000 +vt 0.111111 0.750000 +vt 0.111111 1.000000 +vt 0.000000 0.750000 +vt 0.356868 0.315935 +vt 0.355009 0.313863 +vt 0.355093 0.313832 +vt 0.000000 1.000000 +vt 0.359530 0.316451 +vt 0.356609 0.316427 +vt 0.356828 0.316007 +vt 0.361773 0.315042 +vt 0.362758 0.312569 +vt 0.361831 0.315090 +vt 0.359451 0.308630 +vt 0.361828 0.309945 +vt 0.361760 0.310001 +vt 0.355016 0.311052 +vt 0.355093 0.311082 +vt 0.359514 0.316372 +vt 0.362676 0.312568 +vt 0.356849 0.309050 +vt 0.356810 0.308978 +vt 0.359465 0.308555 +vt 0.262378 0.049801 +vt 0.433643 0.253906 +vt 0.031634 0.324791 +vt 0.359536 0.308099 +vt 0.354566 0.314045 +vt 0.362191 0.315368 +vt 0.362180 0.309634 +vt 0.354566 0.310905 +vt 0.359630 0.316901 +vt 0.363222 0.312551 +vt 0.356569 0.308584 +vt 0.890548 0.749706 +vt 1.001659 0.502247 +vt 1.001659 0.749706 +vt 0.779437 0.749706 +vt 0.890548 0.502247 +vt 0.668326 0.749706 +vt 0.779437 0.502247 +vt 0.557215 0.749706 +vt 0.668326 0.502247 +vt 0.446103 0.749706 +vt 0.557215 0.502247 +vt 0.334992 0.749706 +vt 0.446103 0.502247 +vt 0.223881 0.749706 +vt 0.334992 0.502247 +vt 0.112770 0.749706 +vt 0.223881 0.502247 +vt 0.001659 0.749706 +vt 0.112770 0.502247 +vt 0.353595 0.275318 +vt 0.359107 0.272327 +vt 0.353751 0.275447 +vt 0.358922 0.271100 +vt 0.365169 0.273194 +vt 0.359076 0.272154 +vt 0.369068 0.278074 +vt 0.369264 0.284465 +vt 0.369072 0.284395 +vt 0.365084 0.289361 +vt 0.359009 0.290203 +vt 0.364993 0.289195 +vt 0.351423 0.281389 +vt 0.351614 0.281385 +vt 0.365079 0.273357 +vt 0.353768 0.287186 +vt 0.353628 0.287309 +vt 0.834977 0.037142 +vt 0.590019 0.126299 +vt 0.635285 0.383018 +vt 0.358755 0.291400 +vt 0.358979 0.290374 +vt 0.352785 0.274593 +vt 0.370280 0.277673 +vt 0.369246 0.278005 +vt 0.365584 0.290312 +vt 0.350339 0.281350 +vt 0.365734 0.272293 +vt 0.370280 0.284883 +vt 0.352791 0.287961 +vt 0.385154 0.120686 +vt 0.385154 0.387126 +vt 0.262378 0.458011 +vt 0.122762 0.433393 +vt 0.031634 0.183021 +vt 0.122762 0.074419 +vt 0.001659 0.502247 +vt 0.765625 0.430457 +vt 0.895964 0.383018 +vt 0.965316 0.262896 +vt 0.941231 0.126299 +vt 0.696273 0.037142 +vt 0.565933 0.262896 +s 0 +usemtl Material.001 +f 1/1/1 38/2/1 37/3/1 +f 2/4/2 39/5/2 38/2/2 +f 3/6/3 40/7/3 39/5/3 +f 4/8/4 41/9/4 40/7/4 +f 5/10/5 42/11/5 41/9/5 +f 6/12/6 43/13/6 42/11/6 +f 7/14/7 44/15/7 43/13/7 +f 7/14/8 17/16/8 8/16/8 +f 8/16/9 45/17/9 44/15/9 +f 9/18/10 37/19/10 45/17/10 +f 13/20/11 23/21/11 14/22/11 +f 6/12/8 16/14/8 7/14/8 +f 5/10/8 15/12/8 6/12/8 +f 4/8/8 14/10/8 5/10/8 +f 1/1/8 10/4/8 2/4/8 +f 3/6/8 13/8/8 4/8/8 +f 2/4/8 12/6/8 3/6/8 +f 9/18/8 11/23/8 1/23/8 +f 8/16/8 18/18/8 9/18/8 +f 21/24/3 31/25/3 22/26/3 +f 10/27/11 20/28/11 19/29/11 +f 17/30/11 27/31/11 18/32/11 +f 14/22/11 24/33/11 15/34/11 +f 10/27/11 21/24/11 12/35/11 +f 18/32/11 20/28/11 11/36/11 +f 16/37/11 24/33/11 25/38/11 +f 12/35/11 22/26/11 13/20/11 +f 17/30/11 25/38/11 26/39/11 +f 30/40/8 29/41/8 33/42/8 +f 25/38/7 35/43/7 26/39/7 +f 22/26/4 32/44/4 23/21/4 +f 20/28/1 28/45/1 19/29/1 +f 26/39/9 36/46/9 27/31/9 +f 23/21/5 33/47/5 24/33/5 +f 19/29/2 30/48/2 21/24/2 +f 27/31/10 29/49/10 20/28/10 +f 24/33/6 34/50/6 25/38/6 +f 38/51/1 46/52/1 37/53/1 +f 39/54/2 47/55/2 38/51/2 +f 40/56/3 48/57/3 39/54/3 +f 41/58/4 49/59/4 40/56/4 +f 42/60/5 50/61/5 41/58/5 +f 43/62/6 51/63/6 42/60/6 +f 44/64/7 52/65/7 43/62/7 +f 62/16/8 52/14/8 53/16/8 +f 45/66/9 53/67/9 44/64/9 +f 37/68/10 54/69/10 45/66/10 +f 68/70/8 58/71/8 59/72/8 +f 61/14/8 51/12/8 52/14/8 +f 60/12/8 50/10/8 51/12/8 +f 59/10/8 49/8/8 50/10/8 +f 55/4/8 46/1/8 47/4/8 +f 58/8/8 48/6/8 49/8/8 +f 57/6/8 47/4/8 48/6/8 +f 56/23/8 54/18/8 46/23/8 +f 63/18/8 53/16/8 54/18/8 +f 76/73/3 66/74/3 67/75/3 +f 55/76/8 65/77/8 56/78/8 +f 72/79/8 62/80/8 63/81/8 +f 69/82/8 59/72/8 60/83/8 +f 66/74/8 55/76/8 57/84/8 +f 65/77/8 63/81/8 56/78/8 +f 61/85/8 69/82/8 60/83/8 +f 67/75/8 57/84/8 58/71/8 +f 62/80/8 70/86/8 61/85/8 +f 77/87/11 79/88/11 81/89/11 +f 80/90/7 70/86/7 71/91/7 +f 77/92/4 67/75/4 68/70/4 +f 73/93/1 65/77/1 64/94/1 +f 81/95/9 71/91/9 72/79/9 +f 78/96/5 68/70/5 69/82/5 +f 75/97/2 64/94/2 66/74/2 +f 74/98/10 72/79/10 65/77/10 +f 79/99/6 69/82/6 70/86/6 +f 1/1/1 2/4/1 38/2/1 +f 2/4/2 3/6/2 39/5/2 +f 3/6/3 4/8/3 40/7/3 +f 4/8/4 5/10/4 41/9/4 +f 5/10/5 6/12/5 42/11/5 +f 6/12/6 7/14/6 43/13/6 +f 7/14/7 8/16/7 44/15/7 +f 7/14/8 16/14/8 17/16/8 +f 8/16/9 9/18/9 45/17/9 +f 9/18/10 1/23/10 37/19/10 +f 13/20/11 22/26/11 23/21/11 +f 6/12/8 15/12/8 16/14/8 +f 5/10/8 14/10/8 15/12/8 +f 4/8/8 13/8/8 14/10/8 +f 1/1/8 11/1/8 10/4/8 +f 3/6/8 12/6/8 13/8/8 +f 2/4/8 10/4/8 12/6/8 +f 9/18/8 18/18/8 11/23/8 +f 8/16/8 17/16/8 18/18/8 +f 21/24/3 30/48/3 31/25/3 +f 10/27/11 11/36/11 20/28/11 +f 17/30/11 26/39/11 27/31/11 +f 14/22/11 23/21/11 24/33/11 +f 10/27/11 19/29/11 21/24/11 +f 18/32/11 27/31/11 20/28/11 +f 16/37/11 15/34/11 24/33/11 +f 12/35/11 21/24/11 22/26/11 +f 17/30/11 16/37/11 25/38/11 +f 30/40/8 28/100/8 29/41/8 +f 29/41/8 36/101/8 35/102/8 +f 35/102/8 34/103/8 29/41/8 +f 34/103/8 33/42/8 29/41/8 +f 33/42/8 32/104/8 31/105/8 +f 31/105/8 30/40/8 33/42/8 +f 25/38/7 34/50/7 35/43/7 +f 22/26/4 31/25/4 32/44/4 +f 20/28/1 29/49/1 28/45/1 +f 26/39/9 35/43/9 36/46/9 +f 23/21/5 32/44/5 33/47/5 +f 19/29/2 28/45/2 30/48/2 +f 27/31/10 36/46/10 29/49/10 +f 24/33/6 33/47/6 34/50/6 +f 38/51/1 47/55/1 46/52/1 +f 39/54/2 48/57/2 47/55/2 +f 40/56/3 49/59/3 48/57/3 +f 41/58/4 50/61/4 49/59/4 +f 42/60/5 51/63/5 50/61/5 +f 43/62/6 52/65/6 51/63/6 +f 44/64/7 53/67/7 52/65/7 +f 62/16/8 61/14/8 52/14/8 +f 45/66/9 54/69/9 53/67/9 +f 37/68/10 46/106/10 54/69/10 +f 68/70/8 67/75/8 58/71/8 +f 61/14/8 60/12/8 51/12/8 +f 60/12/8 59/10/8 50/10/8 +f 59/10/8 58/8/8 49/8/8 +f 55/4/8 56/1/8 46/1/8 +f 58/8/8 57/6/8 48/6/8 +f 57/6/8 55/4/8 47/4/8 +f 56/23/8 63/18/8 54/18/8 +f 63/18/8 62/16/8 53/16/8 +f 76/73/3 75/97/3 66/74/3 +f 55/76/8 64/94/8 65/77/8 +f 72/79/8 71/91/8 62/80/8 +f 69/82/8 68/70/8 59/72/8 +f 66/74/8 64/94/8 55/76/8 +f 65/77/8 72/79/8 63/81/8 +f 61/85/8 70/86/8 69/82/8 +f 67/75/8 66/74/8 57/84/8 +f 62/80/8 71/91/8 70/86/8 +f 74/107/11 73/108/11 75/109/11 +f 75/109/11 76/110/11 77/87/11 +f 77/87/11 78/111/11 79/88/11 +f 79/88/11 80/112/11 81/89/11 +f 81/89/11 74/107/11 75/109/11 +f 75/109/11 77/87/11 81/89/11 +f 80/90/7 79/99/7 70/86/7 +f 77/92/4 76/73/4 67/75/4 +f 73/93/1 74/98/1 65/77/1 +f 81/95/9 80/90/9 71/91/9 +f 78/96/5 77/92/5 68/70/5 +f 75/97/2 73/93/2 64/94/2 +f 74/98/10 81/95/10 72/79/10 +f 79/99/6 78/96/6 69/82/6 diff --git a/assets/can_unwrapped_text.png b/assets/can_unwrapped_text.png new file mode 100644 index 0000000..6c73225 Binary files /dev/null and b/assets/can_unwrapped_text.png differ diff --git a/assets/crow.mtl b/assets/crow.mtl new file mode 100644 index 0000000..98e98f2 --- /dev/null +++ b/assets/crow.mtl @@ -0,0 +1,12 @@ +# Blender 4.0.2 MTL File: 'None' +# www.blender.org + +newmtl Material.001 +Ns 0.000000 +Ka 1.000000 1.000000 1.000000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.450000 +d 1.000000 +illum 2 +map_Kd crow_tex.png diff --git a/assets/crow.obj b/assets/crow.obj new file mode 100644 index 0000000..9868ca8 --- /dev/null +++ b/assets/crow.obj @@ -0,0 +1,703 @@ +# Blender 4.0.2 +# www.blender.org +mtllib crow.mtl +o Cube +v 1.849301 2.297165 0.501773 +v 2.000000 1.504633 0.500000 +v -0.822083 2.539810 0.500000 +v -0.611375 1.772359 0.500000 +v -0.701935 1.584171 -0.000000 +v -1.172412 2.399410 0.379724 +v 2.203651 2.061741 0.593438 +v 1.000000 2.364201 0.609568 +v 1.019278 2.738212 -0.000000 +v 0.846913 0.884073 0.471006 +v -1.078062 2.589357 -0.000000 +v 2.219136 1.449849 -0.000000 +v 1.000000 1.754633 0.839506 +v -2.083548 2.507263 -0.000000 +v 1.000000 0.915127 -0.000000 +v 2.676785 2.006173 -0.000000 +v 1.967786 2.668985 -0.000000 +v 2.388323 2.401906 0.540451 +v 2.755676 2.157374 0.428065 +v 2.504326 2.766942 -0.000000 +v 3.215553 2.272343 -0.000000 +v 3.485615 1.956166 -0.000000 +v 0.613044 2.823032 1.005357 +v 0.613044 1.782973 1.026824 +v -1.551936 2.144041 0.895456 +v 0.534295 1.892855 0.740941 +v 0.674439 0.952641 0.469246 +v 0.609396 2.401846 0.586080 +v 0.635152 1.058551 -0.000000 +v 0.569666 2.706302 -0.000000 +v 0.654565 1.279540 0.586080 +v 1.000000 1.145065 0.609568 +v 0.663700 0.880003 0.133231 +v 0.846999 0.809158 0.122509 +v 0.712090 0.701406 0.270366 +v 0.839634 0.692450 0.252618 +v 0.717759 0.707277 0.423279 +v 0.838494 0.696285 0.411132 +v 0.821591 0.116848 0.314187 +v 0.949134 0.107892 0.290007 +v 0.827260 0.122719 0.392578 +v 0.947994 0.111727 0.402151 +v 0.815496 0.037145 0.315506 +v 0.943040 0.028189 0.291827 +v 0.821166 0.043016 0.393897 +v 0.941900 0.032023 0.403971 +v 0.524777 0.044669 0.336888 +v 0.527955 0.047959 0.380831 +v 0.521361 -0.000010 0.337627 +v 0.524539 0.003281 0.381570 +v 0.948403 0.110353 0.361965 +v 0.942309 0.030649 0.363785 +v 0.948833 0.108905 0.319637 +v 0.942739 0.029202 0.321457 +v 1.299288 0.092896 0.363430 +v 1.293194 0.013192 0.365250 +v 1.299718 0.091448 0.321102 +v 1.293624 0.011745 0.322922 +v 1.209102 0.011670 0.488087 +v 1.215196 0.091374 0.486267 +v 1.215604 0.090000 0.446082 +v 1.209510 0.010296 0.447902 +v 1.198819 0.089864 0.259849 +v 1.199120 0.088851 0.230219 +v 1.192724 0.010161 0.261669 +v 1.193026 0.009148 0.232039 +v 1.000000 2.364201 0.609568 +v 1.000000 1.754633 0.839506 +v -1.551936 2.144041 0.895456 +v 1.849301 2.297165 -0.501773 +v 2.000000 1.504633 -0.500000 +v -0.822083 2.539810 -0.500000 +v -0.611375 1.772359 -0.500000 +v -1.172412 2.399410 -0.379724 +v 2.203651 2.061741 -0.593438 +v 1.000000 2.364201 -0.609568 +v 0.846913 0.884073 -0.471006 +v 1.000000 1.754633 -0.839506 +v 2.388323 2.401906 -0.540451 +v 2.755676 2.157374 -0.428065 +v 0.613044 2.823032 -1.005357 +v 0.613044 1.782973 -1.026824 +v -1.551936 2.144041 -0.895456 +v 0.534295 1.892855 -0.740941 +v 0.674439 0.952641 -0.469246 +v 0.609396 2.401846 -0.586080 +v 0.654565 1.279540 -0.586080 +v 1.000000 1.145065 -0.609568 +v 0.663700 0.880003 -0.133231 +v 0.846999 0.809158 -0.122509 +v 0.712090 0.701406 -0.270366 +v 0.839634 0.692450 -0.252618 +v 0.717759 0.707277 -0.423279 +v 0.838494 0.696285 -0.411132 +v 0.821591 0.116848 -0.314187 +v 0.949134 0.107892 -0.290007 +v 0.827260 0.122719 -0.392578 +v 0.947994 0.111727 -0.402151 +v 0.815496 0.037145 -0.315506 +v 0.943040 0.028189 -0.291827 +v 0.821166 0.043016 -0.393897 +v 0.941900 0.032023 -0.403971 +v 0.524777 0.044669 -0.336888 +v 0.527955 0.047959 -0.380831 +v 0.521361 -0.000010 -0.337627 +v 0.524539 0.003281 -0.381570 +v 0.948403 0.110353 -0.361965 +v 0.942309 0.030649 -0.363785 +v 0.948833 0.108905 -0.319637 +v 0.942739 0.029202 -0.321457 +v 1.299288 0.092896 -0.363430 +v 1.293194 0.013192 -0.365250 +v 1.299718 0.091448 -0.321102 +v 1.293624 0.011745 -0.322922 +v 1.209102 0.011670 -0.488087 +v 1.215196 0.091374 -0.486267 +v 1.215604 0.090000 -0.446082 +v 1.209510 0.010296 -0.447902 +v 1.198819 0.089864 -0.259849 +v 1.199120 0.088851 -0.230219 +v 1.192724 0.010161 -0.261669 +v 1.193026 0.009148 -0.232039 +v 1.000000 2.364201 -0.609568 +v 1.000000 1.754633 -0.839506 +v -1.551936 2.144041 -0.895456 +vn -0.0702 0.9885 0.1339 +vn 0.2236 -0.3440 0.9120 +vn -0.2544 -0.1794 0.9503 +vn -0.1705 -0.2725 0.9469 +vn -0.2861 -0.6311 -0.7210 +vn 0.6400 -0.5265 0.5596 +vn 0.1353 0.5297 0.8373 +vn 0.0581 0.7955 0.6032 +vn 0.4385 0.6305 0.6404 +vn -0.1522 0.8339 0.5305 +vn -0.1108 0.2114 0.9711 +vn 0.1327 0.8429 0.5214 +vn 0.3267 -0.5089 0.7964 +vn 0.5400 0.4612 0.7040 +vn 0.3057 -0.6173 0.7249 +vn -0.1399 0.5764 -0.8051 +vn -0.0489 0.6284 -0.7763 +vn -0.1971 -0.3460 0.9173 +vn -0.1523 -0.9741 -0.1673 +vn -0.0571 0.0206 0.9982 +vn -0.3439 -0.8748 0.3412 +vn -0.0929 0.3514 0.9316 +vn -0.0627 0.8839 0.4634 +vn -0.1951 -0.3406 0.9197 +vn -0.2272 -0.5780 -0.7838 +vn -0.1441 -0.1008 -0.9844 +vn 0.0677 -0.3058 0.9497 +vn -0.9824 -0.1816 0.0434 +vn 0.9987 -0.0506 0.0111 +vn -0.1827 -0.0023 -0.9832 +vn -0.0818 -0.0306 0.9962 +vn 0.9829 0.1841 0.0037 +vn -0.0815 -0.9934 0.0803 +vn 0.1298 -0.9894 0.0647 +vn -0.0805 0.0289 0.9963 +vn -0.2969 0.0445 0.9539 +vn -0.2399 0.9692 -0.0552 +vn -0.0442 0.0199 0.9988 +vn -0.0736 -0.0109 -0.9972 +vn 0.0030 -0.0231 -0.9997 +vn -0.9816 -0.1862 0.0435 +vn -0.9916 -0.1162 0.0568 +vn 0.7870 -0.5772 0.2177 +vn 0.3512 -0.8760 0.3305 +vn -0.4435 0.8408 0.3104 +vn -0.0616 -0.9971 0.0442 +vn 0.2329 0.0044 0.9725 +vn 0.9970 -0.0759 0.0127 +vn 0.0498 0.9982 -0.0336 +vn -0.0030 0.0231 0.9997 +vn -0.0498 -0.9982 0.0336 +vn 0.0863 0.9957 -0.0332 +vn 0.2969 -0.0445 -0.9539 +vn -0.0863 -0.9957 0.0332 +vn 0.9970 -0.0759 0.0128 +vn 0.0680 0.9971 -0.0334 +vn -0.2329 -0.0044 -0.9725 +vn -0.0680 -0.9971 0.0334 +vn -0.9948 0.0772 0.0662 +vn -0.7300 -0.5855 0.3526 +vn -0.0742 -0.3520 -0.9331 +vn -0.0702 0.9885 -0.1339 +vn 0.2547 -0.2498 -0.9342 +vn -0.0290 0.2949 -0.9551 +vn -0.1705 -0.2725 -0.9469 +vn -0.2861 -0.6311 0.7210 +vn 0.6400 -0.5265 -0.5596 +vn 0.1353 0.5297 -0.8373 +vn 0.0581 0.7955 -0.6032 +vn 0.4385 0.6305 -0.6404 +vn -0.1970 0.8094 -0.5533 +vn -0.1108 0.2114 -0.9711 +vn 0.1327 0.8429 -0.5214 +vn 0.3267 -0.5089 -0.7964 +vn 0.5400 0.4612 -0.7040 +vn 0.3057 -0.6173 -0.7249 +vn -0.1399 0.5764 0.8051 +vn -0.0489 0.6284 0.7763 +vn -0.1971 -0.3460 -0.9173 +vn -0.1523 -0.9741 0.1673 +vn -0.0571 0.0206 -0.9982 +vn -0.3574 -0.8509 -0.3850 +vn -0.0929 0.3514 -0.9316 +vn 0.0505 0.8505 -0.5235 +vn -0.1629 -0.3864 -0.9078 +vn -0.2767 -0.6027 0.7484 +vn -0.1441 -0.1008 0.9844 +vn -0.0889 -0.1986 -0.9761 +vn -0.9756 -0.2062 -0.0757 +vn 0.9987 -0.0506 -0.0111 +vn -0.1868 -0.0081 0.9824 +vn 0.0970 -0.0341 -0.9947 +vn 0.9829 0.1841 -0.0037 +vn -0.0934 -0.9951 -0.0331 +vn 0.1298 -0.9894 -0.0647 +vn -0.0770 0.0224 -0.9968 +vn -0.2969 0.0445 -0.9539 +vn -0.2399 0.9692 0.0552 +vn -0.0442 0.0199 -0.9988 +vn -0.0736 -0.0109 0.9972 +vn 0.0030 -0.0231 0.9997 +vn -0.9816 -0.1862 -0.0435 +vn -0.9916 -0.1162 -0.0568 +vn 0.6457 -0.7465 -0.1606 +vn 0.3872 -0.8827 -0.2664 +vn -0.4435 0.8408 -0.3104 +vn -0.0616 -0.9971 -0.0442 +vn 0.2329 0.0044 -0.9725 +vn 0.9970 -0.0759 -0.0127 +vn 0.0498 0.9982 0.0336 +vn -0.0030 0.0231 -0.9997 +vn -0.0498 -0.9982 -0.0336 +vn 0.0863 0.9957 0.0332 +vn 0.2969 -0.0445 0.9539 +vn -0.0863 -0.9957 -0.0332 +vn 0.9970 -0.0760 -0.0127 +vn 0.0680 0.9971 0.0334 +vn -0.2329 -0.0044 0.9725 +vn -0.0680 -0.9971 -0.0334 +vn -0.9948 0.0772 -0.0662 +vn -0.7300 -0.5855 -0.3526 +vn -0.0742 -0.3520 0.9331 +vn 0.0580 0.8875 0.4571 +vn 0.2547 -0.2498 0.9342 +vn -0.0290 0.2949 0.9551 +vn -0.2061 0.0033 0.9785 +vn -0.1440 -0.7326 -0.6653 +vn 0.8341 -0.3731 0.4064 +vn 0.3841 0.0191 0.9231 +vn 0.5747 0.6156 0.5392 +vn -0.1970 0.8094 0.5533 +vn 0.2881 -0.0073 0.9576 +vn -0.2789 -0.2862 0.9167 +vn -0.3574 -0.8509 0.3850 +vn 0.0505 0.8505 0.5235 +vn -0.1629 -0.3864 0.9078 +vn -0.2767 -0.6027 -0.7484 +vn -0.1920 -0.0984 -0.9764 +vn -0.0889 -0.1986 0.9761 +vn -0.9756 -0.2062 0.0757 +vn 0.9988 -0.0474 0.0083 +vn -0.1868 -0.0081 -0.9824 +vn 0.0970 -0.0341 0.9947 +vn 0.9829 0.1843 0.0037 +vn 0.9829 0.1842 0.0026 +vn -0.0638 -0.9974 0.0335 +vn -0.0638 -0.9974 0.0334 +vn -0.0934 -0.9951 0.0331 +vn -0.0770 0.0224 0.9968 +vn -0.9805 -0.1774 0.0842 +vn -0.9944 -0.0835 0.0644 +vn 0.6457 -0.7465 0.1606 +vn 0.3872 -0.8827 0.2664 +vn -0.0734 0.8991 0.4315 +vn 0.9970 -0.0760 0.0127 +vn -0.3743 -0.5602 0.7390 +vn 0.0580 0.8875 -0.4571 +vn 0.2236 -0.3440 -0.9120 +vn -0.2544 -0.1794 -0.9503 +vn -0.2061 0.0033 -0.9785 +vn -0.1440 -0.7326 0.6653 +vn 0.8341 -0.3731 -0.4064 +vn 0.3841 0.0191 -0.9231 +vn 0.5747 0.6156 -0.5392 +vn -0.1522 0.8339 -0.5305 +vn 0.2881 -0.0073 -0.9576 +vn -0.2789 -0.2862 -0.9167 +vn -0.3439 -0.8748 -0.3412 +vn -0.0627 0.8839 -0.4634 +vn -0.1951 -0.3406 -0.9197 +vn -0.2272 -0.5780 0.7838 +vn -0.1920 -0.0984 0.9764 +vn 0.0677 -0.3058 -0.9497 +vn -0.9824 -0.1816 -0.0434 +vn 0.9988 -0.0474 -0.0083 +vn -0.1827 -0.0023 0.9832 +vn -0.0818 -0.0306 -0.9962 +vn 0.9829 0.1842 -0.0026 +vn 0.9829 0.1843 -0.0037 +vn -0.0638 -0.9974 -0.0334 +vn -0.0638 -0.9974 -0.0335 +vn -0.0815 -0.9934 -0.0803 +vn -0.0805 0.0289 -0.9963 +vn -0.9805 -0.1774 -0.0842 +vn -0.9944 -0.0835 -0.0644 +vn 0.7870 -0.5772 -0.2177 +vn 0.3512 -0.8760 -0.3305 +vn -0.0734 0.8991 -0.4315 +vn 0.9970 -0.0759 -0.0128 +vn -0.3743 -0.5602 -0.7390 +vt 0.990063 0.124833 +vt 0.831186 0.386465 +vt 0.898635 0.053466 +vt 0.992054 0.349607 +vt 0.824168 0.131761 +vt 0.980653 0.079107 +vt 0.764881 0.173142 +vt 0.978244 0.298828 +vt 0.992502 0.361681 +vt 0.965834 0.078351 +vt 0.850638 0.293078 +vt 0.850638 0.011245 +vt 0.475647 0.491640 +vt 0.476064 0.494576 +vt 0.472148 0.494405 +vt 0.810144 0.231346 +vt 0.963475 0.359193 +vt 0.802425 0.409380 +vt 0.538610 0.682079 +vt 0.420197 0.485893 +vt 0.607611 0.675227 +vt 0.940024 0.385395 +vt 0.792686 0.107684 +vt 0.980241 0.107684 +vt 0.864622 0.453691 +vt 0.611519 0.136176 +vt 0.382695 0.254329 +vt 0.940079 0.435840 +vt 0.746022 0.298986 +vt 0.692368 0.429083 +vt 0.820773 0.190259 +vt 0.831995 0.082589 +vt 0.941900 0.194673 +vt 0.966051 0.207164 +vt 0.966051 0.419758 +vt 0.753458 0.419758 +vt 0.522930 0.163245 +vt 0.589176 0.046887 +vt 0.075245 0.191667 +vt 0.306411 0.315849 +vt 0.515548 0.148480 +vt 0.035873 0.203970 +vt 0.237319 0.468006 +vt 0.523808 0.641464 +vt 0.124610 0.451277 +vt 0.489480 0.694797 +vt 0.605249 0.615663 +vt 0.142510 0.419257 +vt 0.103290 0.458747 +vt 0.431154 0.556625 +vt 0.547726 0.818306 +vt 0.809558 0.446192 +vt 0.873149 0.221309 +vt 0.996645 0.292555 +vt 0.659471 0.714162 +vt 0.563186 0.708628 +vt 0.150061 0.441058 +vt 0.505698 0.523119 +vt 0.423561 0.694468 +vt 0.119796 0.411808 +vt 0.984558 0.015571 +vt 0.852060 0.403587 +vt 0.814261 0.014995 +vt 0.927251 0.397264 +vt 0.848589 0.294163 +vt 0.941364 0.272991 +vt 0.937082 0.266496 +vt 0.814115 0.429356 +vt 0.774780 0.319820 +vt 0.986914 0.304234 +vt 0.814108 0.435724 +vt 0.812695 0.235779 +vt 0.989099 0.209722 +vt 0.842192 0.424513 +vt 0.842192 0.132546 +vt 0.476626 0.493541 +vt 0.478506 0.479429 +vt 0.479748 0.497303 +vt 0.476550 0.495306 +vt 0.476937 0.494276 +vt 0.475917 0.502371 +vt 0.478940 0.477354 +vt 0.478643 0.479144 +vt 0.478544 0.479739 +vt 0.479395 0.478944 +vt 0.479013 0.478531 +vt 0.478653 0.479279 +vt 0.478877 0.478342 +vt 0.478589 0.479395 +vt 0.479079 0.478639 +vt 0.479214 0.478625 +vt 0.478582 0.479400 +vt 0.478869 0.477852 +vt 0.478825 0.478207 +vt 0.478501 0.477720 +vt 0.988836 0.326966 +vt 0.870699 0.079459 +vt 0.987215 0.131534 +vt 0.969413 0.159416 +vt 0.843722 0.377088 +vt 0.843722 0.047089 +vt 0.804363 0.386179 +vt 0.987345 0.074978 +vt 0.990347 0.380101 +vt 0.856125 0.306421 +vt 0.965078 0.297506 +vt 0.965078 0.397066 +vt 0.122808 0.181725 +vt 0.254089 0.139456 +vt 0.397970 0.180497 +vt 0.478790 0.464391 +vt 0.479593 0.465111 +vt 0.478864 0.478198 +vt 0.478839 0.478215 +vt 0.478869 0.478207 +vt 0.479203 0.478625 +vt 0.479187 0.478630 +vt 0.479172 0.478636 +vt 0.478901 0.464634 +vt 0.479748 0.463178 +vt 0.477747 0.477636 +vt 0.996104 0.231077 +vt 0.848032 0.009316 +vt 0.990383 0.007850 +vt 0.580981 0.784252 +vt 0.653416 0.636956 +vt 0.036542 0.430350 +vt 0.876324 0.448423 +vt 0.831249 0.116239 +vt 0.962563 0.292395 +vt 0.998166 0.385235 +vt 0.983893 0.356562 +vt 0.990444 0.404091 +vt 0.994871 0.356182 +vt 0.949934 0.338918 +vt 0.845584 0.008182 +vt 0.963095 0.419927 +vt 0.923117 0.435079 +vt 0.950757 0.231346 +vt 0.319342 0.617429 +vt 0.950267 0.193173 +vt 0.696976 0.084695 +vt 0.658164 0.343249 +vt 0.851781 0.397264 +vt 0.478601 0.479394 +vt 0.821570 0.432138 +vt 0.899733 0.056640 +vt 0.848032 0.445856 +s 0 +usemtl Material.001 +f 3/1/1 30/2/1 11/3/1 +f 2/4/2 13/5/2 32/6/2 +f 26/7/3 3/8/3 6/9/3 +f 26/10/4 4/11/4 31/12/4 +f 34/13/5 35/14/5 33/15/5 +f 7/16/6 12/17/6 16/18/6 +f 1/19/7 24/20/7 7/21/7 +f 9/22/8 1/23/8 17/24/8 +f 20/25/9 19/26/9 21/27/9 +f 17/28/10 18/29/10 20/30/10 +f 7/31/11 18/32/11 1/33/11 +f 9/34/12 8/35/12 1/36/12 +f 19/37/13 7/38/13 22/39/13 +f 21/40/14 19/41/14 22/42/14 +f 13/43/15 7/44/15 24/45/15 +f 23/46/16 8/47/16 25/48/16 +f 1/49/17 8/50/17 23/51/17 +f 13/52/18 31/53/18 32/54/18 +f 13/55/19 24/56/19 25/57/19 +f 24/58/20 23/59/20 25/60/20 +f 31/61/21 5/62/21 29/63/21 +f 8/64/22 26/65/22 13/66/22 +f 28/67/23 9/68/23 30/69/23 +f 27/70/24 32/71/24 31/72/24 +f 34/73/25 29/74/25 15/75/25 +f 36/76/26 39/77/26 35/14/26 +f 10/78/27 37/79/27 38/80/27 +f 27/81/28 35/14/28 37/79/28 +f 10/78/29 36/76/29 34/13/29 +f 39/77/30 44/82/30 43/83/30 +f 38/80/31 41/84/31 42/85/31 +f 38/80/32 42/85/32 51/86/32 +f 45/87/33 43/83/33 52/88/33 +f 50/89/34 43/83/34 45/87/34 +f 42/85/35 45/87/35 46/90/35 +f 46/90/36 60/91/36 42/85/36 +f 39/77/37 48/92/37 41/84/37 +f 45/87/38 48/92/38 50/89/38 +f 43/83/39 47/89/39 39/77/39 +f 53/93/40 58/94/40 54/95/40 +f 35/14/41 41/84/41 37/79/41 +f 27/96/42 29/97/42 33/98/42 +f 10/99/43 15/100/43 32/101/43 +f 15/102/44 2/103/44 32/104/44 +f 11/105/45 6/106/45 3/107/45 +f 7/108/46 16/109/46 22/110/46 +f 53/93/47 65/111/47 63/112/47 +f 57/113/48 56/114/48 58/94/48 +f 53/93/49 55/115/49 57/113/49 +f 51/86/50 56/114/50 55/115/50 +f 54/95/51 56/114/51 52/88/51 +f 61/116/48 59/117/48 62/118/48 +f 42/85/52 61/116/52 51/86/52 +f 52/88/53 61/116/53 62/118/53 +f 46/90/54 62/118/54 59/117/54 +f 64/119/55 65/111/55 66/120/55 +f 40/121/56 63/112/56 64/119/56 +f 40/121/57 66/120/57 44/82/57 +f 44/82/58 65/111/58 54/95/58 +f 47/89/59 50/89/59 48/92/59 +f 6/122/60 5/123/60 4/124/60 +f 67/125/61 68/126/61 69/127/61 +f 30/2/62 72/1/62 11/3/62 +f 71/4/63 78/5/63 75/128/63 +f 84/7/64 72/8/64 86/129/64 +f 73/11/65 84/10/65 87/12/65 +f 91/14/66 90/13/66 89/15/66 +f 12/17/67 75/16/67 16/18/67 +f 82/20/68 70/19/68 75/21/68 +f 9/22/69 17/24/69 70/23/69 +f 80/26/70 20/25/70 21/27/70 +f 17/28/71 79/29/71 70/130/71 +f 79/32/72 75/31/72 70/33/72 +f 9/34/73 70/36/73 76/35/73 +f 80/37/74 22/39/74 75/38/74 +f 21/40/75 22/42/75 80/41/75 +f 78/43/76 82/45/76 75/44/76 +f 81/46/77 83/48/77 76/47/77 +f 70/49/78 81/51/78 76/50/78 +f 87/53/79 78/52/79 88/54/79 +f 78/55/80 83/57/80 82/56/80 +f 82/58/81 83/60/81 81/59/81 +f 87/61/82 5/62/82 73/131/82 +f 84/65/83 76/64/83 78/66/83 +f 86/67/84 9/68/84 76/132/84 +f 85/70/85 88/71/85 77/133/85 +f 90/73/86 29/74/86 89/134/86 +f 95/77/87 92/76/87 91/14/87 +f 77/78/88 93/79/88 85/81/88 +f 85/81/89 91/14/89 89/15/89 +f 92/76/90 77/78/90 90/13/90 +f 95/77/91 100/82/91 96/121/91 +f 94/80/92 97/84/92 93/79/92 +f 107/86/93 98/85/93 94/80/93 +f 101/87/94 102/90/94 108/88/94 +f 99/83/95 106/89/95 101/87/95 +f 98/85/96 101/87/96 97/84/96 +f 116/91/97 102/90/97 98/85/97 +f 104/92/98 95/77/98 97/84/98 +f 101/87/99 104/92/99 97/84/99 +f 103/89/100 99/83/100 95/77/100 +f 114/94/101 109/93/101 110/95/101 +f 97/84/102 91/14/102 93/79/102 +f 29/97/103 85/96/103 89/98/103 +f 77/99/104 15/100/104 90/135/104 +f 15/102/105 71/103/105 12/136/105 +f 74/106/106 11/105/106 72/107/106 +f 75/108/107 22/110/107 16/109/107 +f 109/93/108 121/111/108 110/95/108 +f 113/113/109 112/114/109 111/115/109 +f 109/93/110 111/115/110 107/86/110 +f 107/86/111 112/114/111 108/88/111 +f 112/114/112 110/95/112 108/88/112 +f 117/116/109 115/117/109 116/91/109 +f 117/116/113 98/85/113 107/86/113 +f 108/88/114 117/116/114 107/86/114 +f 102/90/115 118/118/115 108/88/115 +f 120/119/116 121/111/116 119/112/116 +f 96/121/117 119/112/117 109/93/117 +f 122/120/118 96/121/118 100/82/118 +f 121/111/119 100/82/119 110/95/119 +f 106/89/120 103/89/120 104/92/120 +f 5/123/121 74/122/121 73/124/121 +f 123/125/122 125/127/122 124/126/122 +f 3/1/123 28/137/123 30/2/123 +f 2/4/124 7/128/124 13/5/124 +f 26/7/125 28/129/125 3/8/125 +f 26/10/126 6/138/126 4/11/126 +f 34/13/127 36/76/127 35/14/127 +f 7/16/128 2/139/128 12/17/128 +f 1/19/129 23/140/129 24/20/129 +f 20/25/130 18/141/130 19/26/130 +f 17/28/131 1/130/131 18/29/131 +f 7/31/132 19/142/132 18/32/132 +f 13/52/133 26/143/133 31/53/133 +f 31/61/134 4/131/134 5/62/134 +f 8/64/125 28/144/125 26/65/125 +f 28/67/135 8/132/135 9/68/135 +f 27/70/136 10/133/136 32/71/136 +f 34/73/137 33/134/137 29/74/137 +f 36/76/138 40/121/138 39/77/138 +f 10/78/139 27/81/139 37/79/139 +f 27/81/140 33/15/140 35/14/140 +f 10/78/141 38/80/141 36/76/141 +f 39/77/142 40/121/142 44/82/142 +f 38/80/143 37/79/143 41/84/143 +f 40/121/144 36/76/144 53/93/144 +f 36/76/145 38/80/145 51/86/145 +f 53/93/144 36/76/144 51/86/144 +f 44/82/146 54/95/146 43/83/146 +f 54/95/147 52/88/147 43/83/147 +f 52/88/148 46/90/148 45/87/148 +f 50/89/34 49/145/34 43/83/34 +f 42/85/149 41/84/149 45/87/149 +f 46/90/36 59/117/36 60/91/36 +f 39/77/37 47/89/37 48/92/37 +f 45/87/38 41/84/38 48/92/38 +f 43/83/39 49/145/39 47/89/39 +f 53/93/40 57/113/40 58/94/40 +f 35/14/150 39/77/150 41/84/150 +f 27/96/151 31/146/151 29/97/151 +f 10/99/152 34/135/152 15/100/152 +f 15/102/153 12/136/153 2/103/153 +f 11/105/154 14/147/154 6/106/154 +f 53/93/47 54/95/47 65/111/47 +f 57/113/48 55/115/48 56/114/48 +f 53/93/49 51/86/49 55/115/49 +f 51/86/50 52/88/50 56/114/50 +f 54/95/51 58/94/51 56/114/51 +f 61/116/48 60/91/48 59/117/48 +f 42/85/52 60/91/52 61/116/52 +f 52/88/53 51/86/53 61/116/53 +f 46/90/54 52/88/54 62/118/54 +f 64/119/155 63/112/155 65/111/155 +f 40/121/56 53/93/56 63/112/56 +f 40/121/57 64/119/57 66/120/57 +f 44/82/58 66/120/58 65/111/58 +f 47/89/59 49/145/59 50/89/59 +f 6/122/156 14/148/156 5/123/156 +f 30/2/157 86/137/157 72/1/157 +f 71/4/158 88/6/158 78/5/158 +f 84/7/159 74/9/159 72/8/159 +f 73/11/160 74/138/160 84/10/160 +f 91/14/161 92/76/161 90/13/161 +f 12/17/162 71/139/162 75/16/162 +f 82/20/163 81/140/163 70/19/163 +f 80/26/164 79/141/164 20/25/164 +f 17/28/165 20/30/165 79/29/165 +f 79/32/166 80/142/166 75/31/166 +f 87/53/167 84/143/167 78/52/167 +f 87/61/168 29/63/168 5/62/168 +f 84/65/64 86/144/64 76/64/64 +f 86/67/169 30/69/169 9/68/169 +f 85/70/170 87/72/170 88/71/170 +f 90/73/171 15/75/171 29/74/171 +f 95/77/172 96/121/172 92/76/172 +f 77/78/173 94/80/173 93/79/173 +f 85/81/174 93/79/174 91/14/174 +f 92/76/175 94/80/175 77/78/175 +f 95/77/176 99/83/176 100/82/176 +f 94/80/177 98/85/177 97/84/177 +f 94/80/178 92/76/178 107/86/178 +f 92/76/179 96/121/179 109/93/179 +f 109/93/179 107/86/179 92/76/179 +f 108/88/180 110/95/180 99/83/180 +f 110/95/181 100/82/181 99/83/181 +f 99/83/182 101/87/182 108/88/182 +f 99/83/95 105/145/95 106/89/95 +f 98/85/183 102/90/183 101/87/183 +f 116/91/97 115/117/97 102/90/97 +f 104/92/98 103/89/98 95/77/98 +f 101/87/99 106/89/99 104/92/99 +f 103/89/100 105/145/100 99/83/100 +f 114/94/101 113/113/101 109/93/101 +f 97/84/184 95/77/184 91/14/184 +f 29/97/185 87/146/185 85/96/185 +f 77/99/186 88/101/186 15/100/186 +f 15/102/187 88/104/187 71/103/187 +f 74/106/188 14/147/188 11/105/188 +f 109/93/108 119/112/108 121/111/108 +f 113/113/109 114/94/109 112/114/109 +f 109/93/110 113/113/110 111/115/110 +f 107/86/111 111/115/111 112/114/111 +f 112/114/112 114/94/112 110/95/112 +f 117/116/109 118/118/109 115/117/109 +f 117/116/113 116/91/113 98/85/113 +f 108/88/114 118/118/114 117/116/114 +f 102/90/115 115/117/115 118/118/115 +f 120/119/189 122/120/189 121/111/189 +f 96/121/117 120/119/117 119/112/117 +f 122/120/118 120/119/118 96/121/118 +f 121/111/119 122/120/119 100/82/119 +f 106/89/120 105/145/120 103/89/120 +f 5/123/190 14/148/190 74/122/190 diff --git a/assets/crow_tex.png b/assets/crow_tex.png new file mode 100644 index 0000000..ba2910e Binary files /dev/null and b/assets/crow_tex.png differ diff --git a/build-linux.sh b/build-linux.sh new file mode 100755 index 0000000..310dc11 --- /dev/null +++ b/build-linux.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +cmake -S . -B build-linux-x86_64 +cmake --build build-linux-x86_64 diff --git a/build-win.sh b/build-win.sh new file mode 100755 index 0000000..02b506c --- /dev/null +++ b/build-win.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +cmake -S . -B build-win-x86_64 -G Ninja -DCMAKE_TOOLCHAIN_FILE=toolchain-mingw-w64-x86_64.cmake +cmake --build build-win-x86_64 diff --git a/compile_commands.json b/compile_commands.json new file mode 120000 index 0000000..25eb4b2 --- /dev/null +++ b/compile_commands.json @@ -0,0 +1 @@ +build/compile_commands.json \ No newline at end of file diff --git a/includes/FilesystemHelper.hpp b/includes/FilesystemHelper.hpp new file mode 100644 index 0000000..023c1d0 --- /dev/null +++ b/includes/FilesystemHelper.hpp @@ -0,0 +1,28 @@ +#pragma once + +#include +#include + +#ifdef _WIN32 + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #endif + #include +#endif + +// Safer portable conversion: +std::string to_utf8(const std::filesystem::path& path) { + #ifdef _WIN32 + // path.native() gives wchar_t, convert to UTF-8 + std::wstring ws = path.native(); + if (ws.empty()) return {}; + int size_needed = WideCharToMultiByte(CP_UTF8, 0, ws.data(), int(ws.size()), + nullptr, 0, nullptr, nullptr); + std::string result(size_needed, 0); + WideCharToMultiByte(CP_UTF8, 0, ws.data(), int(ws.size()), result.data(), size_needed, nullptr, nullptr); + return result; + #else + return path.string(); // on POSIX this is already UTF-8-compatible + #endif +} + diff --git a/includes/Model.hpp b/includes/Model.hpp new file mode 100644 index 0000000..dc44215 --- /dev/null +++ b/includes/Model.hpp @@ -0,0 +1,27 @@ +#pragma once + +#include +namespace rl { +#include "raylib.h" +} + +namespace Ley { + +class Model { +private: + Model(const std::string &obj_path, const std::string &texture_path); +public: + static Model create(const std::string &obj_path, const std::string &texture_path); + ~Model(); + void setPosition(rl::Vector3 position) { _position = position; } + rl::Vector3 getPosition() const { return _position; } + rl::Model getModel() const { return _model; } + void Draw(rl::Color color) const { rl::DrawModel(_model, _position, 1.0f, color); } +private: + rl::Model _model; + rl::Texture2D _texture; + rl::Vector3 _position; + std::string _obj_path; + std::string _texture_path; +}; +} // namespace Ley diff --git a/srcs/Model.cpp b/srcs/Model.cpp new file mode 100644 index 0000000..62fc54e --- /dev/null +++ b/srcs/Model.cpp @@ -0,0 +1,29 @@ +#include +#include +#include + +namespace Ley { + +Model::Model(const std::string &obj, const std::string &texture) { + std::filesystem::path asset_path("assets"); + std::filesystem::path obj_path(obj); + _obj_path = to_utf8(asset_path / obj_path); + _model = rl::LoadModel(_obj_path.c_str()); + std::filesystem::path texture_path(texture); + _texture_path = to_utf8(asset_path / texture_path); + _texture = rl::LoadTexture(_texture_path.c_str()); + _model.materials[0].maps[rl::MATERIAL_MAP_DIFFUSE].texture = _texture; + _position = {0.0f, 0.0f, 0.0f}; +} + +Model::~Model() { + rl::UnloadTexture(_texture); + rl::UnloadModel(_model); +} + +Model Model::create(const std::string &obj_path, + const std::string &texture_path) { + return Model(obj_path, texture_path); +} + +} // namespace Ley diff --git a/srcs/main.cpp b/srcs/main.cpp new file mode 100644 index 0000000..79ff8cb --- /dev/null +++ b/srcs/main.cpp @@ -0,0 +1,68 @@ +/* ************************************************************************** */ +/* */ +/* / ) */ +/* main.cpp (\__/) ( ( */ +/* ) ( ) ) */ +/* By: lejulien ={ }= / / */ +/* ) `-------/ / */ +/* Created: 2023/01/09 12:17:58 by lejulien ( / */ +/* Updated: 2023/01/14 17:12:27 by lejulien \ | */ +/* */ +/* ************************************************************************** */ +#include +#include +#include +#include +#include +#include + +namespace rl { +#include "raylib.h" +} // namespace rl + +int main(int ac, char **av) { + rl::InitWindow(1920, 1080, &av[0][2]); + + // Initializing a camera + rl::Camera camera = {0}; + camera.position = (rl::Vector3){1.0f, 10.0f, 1.0f}; + camera.target = (rl::Vector3){0.0f, 10.0f, 0.0f}; + camera.up = (rl::Vector3){0.0f, 1.0f, 0.0f}; + camera.fovy = 90.0f; + camera.projection = rl::CAMERA_PERSPECTIVE; + { // model lifetime scope + auto can_model = Ley::Model::create("can.obj", "can_unwrapped_text.png"); + auto crow_model = Ley::Model::create("crow.obj", "crow_tex.png"); + + // rl::Model pos + can_model.setPosition({0.0f, 0.0f, 0.0f}); + crow_model.setPosition({-0.5f, 3.8f, 0.0f}); + + rl::BoundingBox box = rl::GetModelBoundingBox(can_model.getModel()); + + rl::DisableCursor(); + + while (!rl::WindowShouldClose()) { + // Update + UpdateCamera(&camera, rl::CAMERA_FREE); + + // Draw + rl::BeginDrawing(); + ClearBackground(rl::GRAY); + + BeginMode3D(camera); + + can_model.Draw(rl::WHITE); + crow_model.Draw(rl::WHITE); + + rl::DrawGrid(20, 10.0f); // Draw a grid + + rl::EndMode3D(); + + rl::DrawFPS(10, 10); + rl::EndDrawing(); + } + } // Unload model + rl::CloseWindow(); + return 0; +} diff --git a/toolchain-mingw-w64-x86_64.cmake b/toolchain-mingw-w64-x86_64.cmake new file mode 100644 index 0000000..e93a1ee --- /dev/null +++ b/toolchain-mingw-w64-x86_64.cmake @@ -0,0 +1,21 @@ +set(CMAKE_SYSTEM_NAME Windows) +set(CMAKE_SYSTEM_VERSION 1) +set(CMAKE_CROSSCOMPILING TRUE) + +set(MINGW_TRIPLET "x86_64-w64-mingw32") + +set(CMAKE_C_COMPILER ${MINGW_TRIPLET}-gcc) +set(CMAKE_CXX_COMPILER ${MINGW_TRIPLET}-g++) +set(CMAKE_RC_COMPILER ${MINGW_TRIPLET}-windres) +set(CMAKE_AR ${MINGW_TRIPLET}-ar) +set(CMAKE_RANLIB ${MINGW_TRIPLET}-ranlib) +set(CMAKE_OBJCOPY ${MINGW_TRIPLET}-objcopy) + +set(CMAKE_FIND_ROOT_PATH /usr/${MINGW_TRIPLET}) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +set(CMAKE_C_FLAGS_INIT "-static -static-libgcc -static-libstdc++") +set(CMAKE_CXX_FLAGS_INIT "-static -static-libgcc -static-libstdc++") +