saba
OpenGL Viewer (OBJ PMD PMX)
File Explorer
Download Latest Version (.zip)- build-linux.yml
- FindGLFW.cmake
- build.bat
- mmd.fx
- mmd.pso.h
- mmd.vso.h
- mmd_edge.fx
- mmd_edge.pso.h
- mmd_edge.vso.h
- mmd_ground_shadow.fx
- mmd_ground_shadow.pso.h
- mmd_ground_shadow.vso.h
- build.bat
- mmd.frag
- mmd.frag.spv.h
- mmd.vert
- mmd.vert.spv.h
- mmd_edge.frag
- mmd_edge.frag.spv.h
- mmd_edge.vert
- mmd_edge.vert.spv.h
- mmd_ground_shadow.frag
- mmd_ground_shadow.frag.spv.h
- mmd_ground_shadow.vert
- mmd_ground_shadow.vert.spv.h
- CMakeLists.txt
- simple_mmd_viewer_dx11.cpp
- simple_mmd_viewer_glfw.cpp
- simple_mmd_viewer_vulkan.cpp
- CMakeLists.txt
- COPYING
- cpp.h
- cpp1.c
- cpp2.c
- cpp3.c
- cpp4.c
- cpp5.c
- cpp6.c
- cppadd.h
- cppdef.h
- fpp.exp
- fpp.fd
- fpp.h
- fpp_pragmas.h
- FPP_protos.h
- FPPBase.h
- makefile
- README
- gl3w.h
- glcorearb.h
- gl3w.c
- clear.hpp
- clear.inl
- comparison.inl
- convert.inl
- convert_func.hpp
- coord.hpp
- copy.inl
- dummy.cpp
- duplicate.inl
- dx.inl
- file.hpp
- file.inl
- filter.hpp
- filter.inl
- filter_compute.hpp
- flip.hpp
- flip.inl
- format.inl
- generate_mipmaps.inl
- gl.inl
- image.inl
- levels.inl
- load.inl
- load_dds.inl
- load_kmg.inl
- load_ktx.inl
- make_texture.inl
- mipmaps_compute.hpp
- reduce.inl
- sampler.inl
- sampler1d.inl
- sampler1d_array.inl
- sampler2d.inl
- sampler2d_array.inl
- sampler3d.inl
- sampler_cube.inl
- sampler_cube_array.inl
- save.inl
- save_dds.inl
- save_kmg.inl
- save_ktx.inl
- storage.hpp
- storage.inl
- storage_linear.hpp
- storage_linear.inl
- texture.inl
- texture1d.inl
- texture1d_array.inl
- texture2d.inl
- texture2d_array.inl
- texture3d.inl
- texture_cube.inl
- texture_cube_array.inl
- transform.inl
- view.inl
- workaround.hpp
- clear.hpp
- CMakeLists.txt
- comparison.hpp
- convert.hpp
- copy.hpp
- duplicate.hpp
- dx.hpp
- format.hpp
- generate_mipmaps.hpp
- gl.hpp
- gli.hpp
- image.hpp
- levels.hpp
- load.hpp
- load_dds.hpp
- load_kmg.hpp
- load_ktx.hpp
- make_texture.hpp
- reduce.hpp
- sampler.hpp
- sampler1d.hpp
- sampler1d_array.hpp
- sampler2d.hpp
- sampler2d_array.hpp
- sampler3d.hpp
- sampler_cube.hpp
- sampler_cube_array.hpp
- save.hpp
- save_dds.hpp
- save_kmg.hpp
- save_ktx.hpp
- target.hpp
- texture.hpp
- texture1d.hpp
- texture1d_array.hpp
- texture2d.hpp
- texture2d_array.hpp
- texture3d.hpp
- texture_cube.hpp
- texture_cube_array.hpp
- transform.hpp
- type.hpp
- view.hpp
- _features.hpp
- _fixes.hpp
- _noise.hpp
- _swizzle.hpp
- _swizzle_func.hpp
- _vectorize.hpp
- compute_vector_relational.hpp
- dummy.cpp
- func_common.inl
- func_common_simd.inl
- func_exponential.inl
- func_exponential_simd.inl
- func_geometric.inl
- func_geometric_simd.inl
- func_integer.inl
- func_integer_simd.inl
- func_matrix.inl
- func_matrix_simd.inl
- func_packing.inl
- func_packing_simd.inl
- func_trigonometric.inl
- func_trigonometric_simd.inl
- func_vector_relational.inl
- func_vector_relational_simd.inl
- glm.cpp
- qualifier.hpp
- setup.hpp
- type_float.hpp
- type_gentype.hpp
- type_gentype.inl
- type_half.hpp
- type_half.inl
- type_int.hpp
- type_mat.hpp
- type_mat.inl
- type_mat2x2.hpp
- type_mat2x2.inl
- type_mat2x3.hpp
- type_mat2x3.inl
- type_mat2x4.hpp
- type_mat2x4.inl
- type_mat3x2.hpp
- type_mat3x2.inl
- type_mat3x3.hpp
- type_mat3x3.inl
- type_mat3x4.hpp
- type_mat3x4.inl
- type_mat4x2.hpp
- type_mat4x2.inl
- type_mat4x3.hpp
- type_mat4x3.inl
- type_mat4x4.hpp
- type_mat4x4.inl
- type_mat4x4_simd.inl
- type_vec.hpp
- type_vec.inl
- type_vec1.hpp
- type_vec1.inl
- type_vec2.hpp
- type_vec2.inl
- type_vec3.hpp
- type_vec3.inl
- type_vec4.hpp
- type_vec4.inl
- type_vec4_simd.inl
- vec1.hpp
- vec1.inl
- vector_relational.hpp
- vector_relational.inl
- bitfield.hpp
- bitfield.inl
- color_space.hpp
- color_space.inl
- constants.hpp
- constants.inl
- epsilon.hpp
- epsilon.inl
- integer.hpp
- integer.inl
- matrix_access.hpp
- matrix_access.inl
- matrix_integer.hpp
- matrix_inverse.hpp
- matrix_inverse.inl
- matrix_transform.hpp
- matrix_transform.inl
- noise.hpp
- noise.inl
- packing.hpp
- packing.inl
- quaternion.hpp
- quaternion.inl
- quaternion_simd.inl
- random.hpp
- random.inl
- reciprocal.hpp
- reciprocal.inl
- round.hpp
- round.inl
- type_aligned.hpp
- type_precision.hpp
- type_precision.inl
- type_ptr.hpp
- type_ptr.inl
- ulp.hpp
- ulp.inl
- vec1.hpp
- vec1.inl
- associated_min_max.hpp
- associated_min_max.inl
- bit.hpp
- bit.inl
- closest_point.hpp
- closest_point.inl
- color_encoding.hpp
- color_encoding.inl
- color_space.hpp
- color_space.inl
- color_space_YCoCg.hpp
- color_space_YCoCg.inl
- common.hpp
- common.inl
- compatibility.hpp
- compatibility.inl
- component_wise.hpp
- component_wise.inl
- dual_quaternion.hpp
- dual_quaternion.inl
- easing.hpp
- easing.inl
- euler_angles.hpp
- euler_angles.inl
- extend.hpp
- extend.inl
- extended_min_max.hpp
- extended_min_max.inl
- exterior_product.hpp
- exterior_product.inl
- fast_exponential.hpp
- fast_exponential.inl
- fast_square_root.hpp
- fast_square_root.inl
- fast_trigonometry.hpp
- fast_trigonometry.inl
- float_notmalize.inl
- functions.hpp
- functions.inl
- gradient_paint.hpp
- gradient_paint.inl
- handed_coordinate_space.hpp
- handed_coordinate_space.inl
- hash.hpp
- hash.inl
- integer.hpp
- integer.inl
- intersect.hpp
- intersect.inl
- io.hpp
- io.inl
- log_base.hpp
- log_base.inl
- matrix_cross_product.hpp
- matrix_cross_product.inl
- matrix_decompose.hpp
- matrix_decompose.inl
- matrix_factorisation.hpp
- matrix_factorisation.inl
- matrix_interpolation.hpp
- matrix_interpolation.inl
- matrix_major_storage.hpp
- matrix_major_storage.inl
- matrix_operation.hpp
- matrix_operation.inl
- matrix_query.hpp
- matrix_query.inl
- matrix_transform_2d.hpp
- matrix_transform_2d.inl
- mixed_product.hpp
- mixed_product.inl
- norm.hpp
- norm.inl
- normal.hpp
- normal.inl
- normalize_dot.hpp
- normalize_dot.inl
- number_precision.hpp
- number_precision.inl
- optimum_pow.hpp
- optimum_pow.inl
- orthonormalize.hpp
- orthonormalize.inl
- perpendicular.hpp
- perpendicular.inl
- polar_coordinates.hpp
- polar_coordinates.inl
- projection.hpp
- projection.inl
- quaternion.hpp
- quaternion.inl
- range.hpp
- raw_data.hpp
- raw_data.inl
- rotate_normalized_axis.hpp
- rotate_normalized_axis.inl
- rotate_vector.hpp
- rotate_vector.inl
- scalar_multiplication.hpp
- scalar_relational.hpp
- scalar_relational.inl
- spline.hpp
- spline.inl
- std_based_type.hpp
- std_based_type.inl
- string_cast.hpp
- string_cast.inl
- texture.hpp
- texture.inl
- transform.hpp
- transform.inl
- transform2.hpp
- transform2.inl
- type_aligned.hpp
- type_aligned.inl
- type_trait.hpp
- type_trait.inl
- vec_swizzle.hpp
- vector_angle.hpp
- vector_angle.inl
- vector_query.hpp
- vector_query.inl
- wrap.hpp
- wrap.inl
- common.h
- exponential.h
- geometric.h
- integer.h
- matrix.h
- packing.h
- platform.h
- trigonometric.h
- vector_relational.h
- CMakeLists.txt
- common.hpp
- exponential.hpp
- ext.hpp
- fwd.hpp
- geometric.hpp
- glm.hpp
- integer.hpp
- mat2x2.hpp
- mat2x3.hpp
- mat2x4.hpp
- mat3x2.hpp
- mat3x3.hpp
- mat3x4.hpp
- mat4x2.hpp
- mat4x3.hpp
- mat4x4.hpp
- matrix.hpp
- packing.hpp
- trigonometric.hpp
- vec2.hpp
- vec3.hpp
- vec4.hpp
- vector_relational.hpp
- imconfig.h
- imgui.h
- imgui_impl_glfw.h
- imgui_impl_opengl3.h
- ImGuizmo.h
- imgui.cpp
- imgui_draw.cpp
- imgui_impl_glfw.cpp
- imgui_impl_opengl3.cpp
- imgui_internal.h
- imgui_widgets.cpp
- ImGuizmo.cpp
- imstb_rectpack.h
- imstb_textedit.h
- imstb_truetype.h
- json.hpp
- CMakeLists.txt
- lapi.c
- lapi.h
- lauxlib.c
- lauxlib.h
- lbaselib.c
- lbitlib.c
- lcode.c
- lcode.h
- lcorolib.c
- lctype.c
- lctype.h
- ldblib.c
- ldebug.c
- ldebug.h
- ldo.c
- ldo.h
- ldump.c
- lfunc.c
- lfunc.h
- lgc.c
- lgc.h
- linit.c
- liolib.c
- llex.c
- llex.h
- llimits.h
- lmathlib.c
- lmem.c
- lmem.h
- loadlib.c
- lobject.c
- lobject.h
- lopcodes.c
- lopcodes.h
- loslib.c
- lparser.c
- lparser.h
- lprefix.h
- lstate.c
- lstate.h
- lstring.c
- lstring.h
- lstrlib.c
- ltable.c
- ltable.h
- ltablib.c
- ltm.c
- ltm.h
- lua.c
- lua.h
- lua.hpp
- luac.c
- luaconf.h
- lualib.h
- lundump.c
- lundump.h
- lutf8lib.c
- lvm.c
- lvm.h
- lzio.c
- lzio.h
- Makefile
- sol.hpp
- async_log_helper.h
- async_logger_impl.h
- file_helper.h
- log_msg.h
- logger_impl.h
- mpmc_bounded_q.h
- null_mutex.h
- os.h
- pattern_formatter_impl.h
- registry.h
- spdlog_impl.h
- format.cc
- format.h
- ostream.cc
- ostream.h
- posix.cc
- posix.h
- printf.h
- time.h
- fmt.h
- ostr.h
- android_sink.h
- ansicolor_sink.h
- base_sink.h
- dist_sink.h
- file_sinks.h
- msvc_sink.h
- null_sink.h
- ostream_sink.h
- sink.h
- stdout_sinks.h
- syslog_sink.h
- wincolor_sink.h
- async_logger.h
- common.h
- formatter.h
- logger.h
- spdlog.h
- tweakme.h
- stb.h
- stb_c_lexer.h
- stb_connected_components.h
- stb_divide.h
- stb_dxt.h
- stb_easy_font.h
- stb_herringbone_wang_tile.h
- stb_image.h
- stb_image_resize.h
- stb_image_write.h
- stb_leakcheck.h
- stb_perlin.h
- stb_rect_pack.h
- stb_sprintf.h
- stb_textedit.h
- stb_tilemap_editor.h
- stb_truetype.h
- stb_vorbis.c
- stb_voxel_render.h
- stretchy_buffer.h
- tinyddsloader.h
- tiny_obj_loader.h
- tinyxfileloader.h
- CMakeLists.txt
- glfw
- glslang
- error.dds
- error.png
- test.bmp
- test.dds
- test.gif
- test.jpg
- test.png
- test.tga
- ๆฅๆฌ่ช.dds
- ๆฅๆฌ่ช.png
- common.sh
- include_test2.sh
- include_test3.sh
- test1.frag
- test1.vert
- test2.frag
- test2.vert
- test3.frag
- test3.vert
- test4.frag
- test4.vert
- test5.frag
- test5.vert
- text_test1.txt
- text_test2.txt
- ๆฅๆฌ่ช.txt
- gtest-port.h
- gtest-printers.h
- gtest.h
- gtest-death-test-internal.h
- gtest-filepath.h
- gtest-internal.h
- gtest-linked_ptr.h
- gtest-param-util-generated.h
- gtest-param-util-generated.h.pump
- gtest-param-util.h
- gtest-port-arch.h
- gtest-port.h
- gtest-string.h
- gtest-tuple.h
- gtest-tuple.h.pump
- gtest-type-util.h
- gtest-type-util.h.pump
- gtest-death-test.h
- gtest-message.h
- gtest-param-test.h
- gtest-param-test.h.pump
- gtest-printers.h
- gtest-spi.h
- gtest-test-part.h
- gtest-typed-test.h
- gtest.h
- gtest_pred_impl.h
- gtest_prod.h
- gtest-all.cc
- gtest-death-test.cc
- gtest-filepath.cc
- gtest-internal-inl.h
- gtest-port.cc
- gtest-printers.cc
- gtest-test-part.cc
- gtest-typed-test.cc
- gtest.cc
- gtest_main.cc
- GL.ShaderUtil.test.cpp
- GL.test.cpp
- GL.TextureUtil.test.cpp
- GL.VertexUtil.test.cpp
- GLSLUtil.test.cpp
- Base.File.test.cpp
- Base.Log.test.cpp
- Base.Path.test.cpp
- Base.Singleton.test.cpp
- Base.UnicodeUtil.test.cpp
- CMakeLists.txt
- main.cpp
- Viewer.ViewerCommand.test.cpp
- saba_viewer_01.png
- saba_viewer_02.png
- transparent_sample.gif
- LICENSE.txt
- LICENSE.txt
- COPYING.txt
- licence.txt
- licence.txt
- licence.txt
- LICENSE
- LICENSE
- LICENSE
- LICENSE.MIT
- LICENSE.txt
- SIL_Open_Font_License_1.1.txt
- LICENSE.txt
- LICENSE
- LICENSE
- File.cpp
- File.h
- Log.cpp
- Log.h
- Path.cpp
- Path.h
- Singleton.cpp
- Singleton.h
- Time.cpp
- Time.h
- UnicodeUtil.cpp
- UnicodeUtil.h
- MMDCamera.cpp
- MMDCamera.h
- MMDFileString.h
- MMDIkSolver.cpp
- MMDIkSolver.h
- MMDMaterial.cpp
- MMDMaterial.h
- MMDModel.cpp
- MMDModel.h
- MMDMorph.cpp
- MMDMorph.h
- MMDNode.cpp
- MMDNode.h
- MMDPhysics.cpp
- MMDPhysics.h
- PMDFile.cpp
- PMDFile.h
- PMDModel.cpp
- PMDModel.h
- PMXFile.cpp
- PMXFile.h
- PMXModel.cpp
- PMXModel.h
- SjisToUnicode.cpp
- SjisToUnicode.h
- VMDAnimation.cpp
- VMDAnimation.h
- VMDAnimationCommon.h
- VMDCameraAnimation.cpp
- VMDCameraAnimation.h
- VMDFile.cpp
- VMDFile.h
- VPDFile.cpp
- VPDFile.h
- OBJModel.cpp
- OBJModel.h
- tinyobjloader.cpp
- XFileModel.cpp
- XFileModel.h
- CMakeLists.txt
- bin2h.py
- unzip-sjis.py
- GLMMDModel.cpp
- GLMMDModel.h
- GLMMDModelDrawContext.cpp
- GLMMDModelDrawContext.h
- GLMMDModelDrawer.cpp
- GLMMDModelDrawer.h
- GLOBJModel.cpp
- GLOBJModel.h
- GLOBJModelDrawContext.cpp
- GLOBJModelDrawContext.h
- GLOBJModelDrawer.cpp
- GLOBJModelDrawer.h
- GLXFileModel.cpp
- GLXFileModel.h
- GLXFileModelDrawContext.cpp
- GLXFileModelDrawContext.h
- GLXFileModelDrawer.cpp
- GLXFileModelDrawer.h
- GLObject.h
- GLShaderUtil.cpp
- GLShaderUtil.h
- GLSLUtil.cpp
- GLSLUtil.h
- GLTextureUtil.cpp
- GLTextureUtil.h
- GLVertexUtil.h
- mgenplus-1mn-bold.ttf
- toon01.bmp
- toon02.bmp
- toon03.bmp
- toon04.bmp
- toon05.bmp
- toon06.bmp
- toon07.bmp
- toon08.bmp
- toon09.bmp
- toon10.bmp
- bg.frag
- bg.vert
- copy.frag
- copy_transparent_window.frag
- grid.frag
- grid.vert
- mmd.frag
- mmd.vert
- mmd_edge.frag
- mmd_edge.vert
- mmd_ground_shadow.frag
- mmd_ground_shadow.vert
- obj_shader.frag
- obj_shader.vert
- quad.vert
- shadow_shader.frag
- shadow_shader.vert
- xfile_shader.frag
- xfile_shader.vert
- Camera.cpp
- Camera.h
- CameraOverrider.cpp
- CameraOverrider.h
- Grid.cpp
- Grid.h
- Light.cpp
- Light.h
- ModelDrawer.cpp
- ModelDrawer.h
- ShadowMap.cpp
- ShadowMap.h
- Viewer.cpp
- Viewer.h
- ViewerCommand.cpp
- ViewerCommand.h
- ViewerContext.cpp
- ViewerContext.h
- VMDCameraOverrider.cpp
- VMDCameraOverrider.h
- CMakeLists.txt
- .gitignore
- .gitmodules
- .travis.yml
- appveyor.yml
- CMakeLists.txt
- LICENCE
- mmd2obj.cpp
- README.jp.md
- README.md
- saba_viewer.cpp
- to_utf8.bat
- to_utf8.ps1
# Installation Guide
git clone https://github.com/benikabocha/saba
Downloads the entire project code from GitHub to your computer.
cd saba
Moves into the project folder you just downloaded.
2. Official Install Script
Easy Recommended- Homebrew A package manager for macOS/Linux.
- APT (Debian/Ubuntu ๊ณ์ด) Built into Debian/Ubuntu-based Linux distributions.
brew install bullet
Installs the pre-built package via Homebrew โ no source build required.
apt-get install libbullet-dev
Installs directly from the APT package repository (Debian/Ubuntu-based).
brew install glfw
Installs the pre-built package via Homebrew โ no source build required.
apt-get install libglfw3-dev
Installs directly from the APT package repository (Debian/Ubuntu-based).
Pulled directly from this repo's README.
3. CMake
Mediumpacman -S mingw-w64-x86_64-cmake
Type this command into your terminal and run it.
cmake -G "Visual Studio 14 2015 Win64" ^
Type this command into your terminal and run it.
cmake --build . --config Debug --target ALL_BUILD
Type this command into your terminal and run it.
cmake --build . --config Debug --target INSTALL
Type this command into your terminal and run it.
cmake --build . --config Release --target ALL_BUILD
Type this command into your terminal and run it.
Pulled directly from this repo's README.
4. Make
Medium- Git Needed to download the project code from GitHub.
- Make Usually pre-installed on Linux/macOS. On Windows, install separately (e.g. via MSYS2 or WSL).
make -j4
Compiles the code based on the generated build configuration to produce an executable.
Pulled directly from this repo's README.
