{"id":22753182,"url":"https://github.com/jakethesillysnake/3dviewer","last_synced_at":"2026-04-29T09:31:47.658Z","repository":{"id":263903101,"uuid":"891737287","full_name":"JakeTheSillySnake/3DViewer","owner":"JakeTheSillySnake","description":"App for viewing 3D models, developed using C++ and Qt5.","archived":false,"fork":false,"pushed_at":"2025-04-01T20:34:31.000Z","size":24476,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-08T18:04:15.521Z","etag":null,"topics":["cpp","cpp-stl","qt","qt5","qt5-applications","qt5-gui"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JakeTheSillySnake.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-20T21:37:22.000Z","updated_at":"2025-04-01T20:34:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"8572263a-0a34-48f0-9775-79f6cac7fab1","html_url":"https://github.com/JakeTheSillySnake/3DViewer","commit_stats":null,"previous_names":["jakethesillysnake/3dviewer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JakeTheSillySnake/3DViewer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakeTheSillySnake%2F3DViewer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakeTheSillySnake%2F3DViewer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakeTheSillySnake%2F3DViewer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakeTheSillySnake%2F3DViewer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JakeTheSillySnake","download_url":"https://codeload.github.com/JakeTheSillySnake/3DViewer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakeTheSillySnake%2F3DViewer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32419814,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T06:29:02.080Z","status":"ssl_error","status_checked_at":"2026-04-29T06:29:00.631Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","cpp-stl","qt","qt5","qt5-applications","qt5-gui"],"created_at":"2024-12-11T06:09:28.104Z","updated_at":"2026-04-29T09:31:47.643Z","avatar_url":"https://github.com/JakeTheSillySnake.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Simple 3D Viewer Manual\n\n_Last updated December 2024_\n\n## Introduction\n\nThis document describes how to install, run, check and remove Simple Viewer on Linux and Unix-like systems. Please note that the program was written and tested on Ubuntu 22.04 LTS, so its behaviour may differ if you use other versions or OS distributions.\n\n## Installation \u0026 Running\n\n### Prerequisites\n\nCorrect compilation and running of the program depends on other utilities and libraries. Check that you have their latest versions before proceeding: \n\n| Compilation targets | Utilities |\n| ------------------- | --------- |\n| App Compilation \u0026 Running | gcc, make |\n| Desktop Interface | Qt5, qmake |\n| Testing | GTest library |\n| GCOV Report | gcov, lcov |\n| Leaks Check | valgrind |\n| Convert Manual to DVI | texi2dvi |\n\n\u003c/br\u003e\n\n### Setup\n\nDownload or clone (`git clone \u003clink_to_git_folder\u003e`) the source repository to where you can easily find it. Then type and run the following commands in the terminal: \n\n1. `cd \u003cpath_to_git_folder\u003e/src/viewer`\n\n2. `make install`\n\nNow the program is compiled, placing the app in a folder named `SimpleViewer/`. The app should open automatically. If you want to open it later using command line, run `make viewer`. If there are errors, you're likely missing some packages. Check __Prerequisites__.\n\n\u003c/br\u003e\n\n### Usage\n\nThe app layout should be fairly intuitive. On the first load, you'll see a horizontal __Menu Tab__ plus an __Information Tab__ on the right side of the screen. The __Menu Tab__ is divided into three sub-categories and the options you choose are saved after each session:\n\n__\u003e File__\n\n(a) Upload file — _choose .obj file to display_\n\n(b) Save as .bmp, .jpg — _save current render as a picture_\n\n(c) Make screencast — _save current render as a GIF (5sec, 10 frames/sec, 640x480) with custom model rotation_\n\n(d) Exit — _close the app_\n\n\u003c/br\u003e\n\n__\u003e Model__\n\n(a) Rotate — _rotate the model on a given axis by N degrees_\n\n(b) Translate — _translate the model on a given axis by N degrees_\n\n(c) Scale — _scale the model on a given axis by N degrees_\n\n(d) Wireframe — _display model as wireframe (as opposed to solid)_\n\n(e) Parallel projection — _apply parallel projection (as opposed to central, or perspective projection)_\n\n\u003c/br\u003e\n\n__\u003e Settings__\n\n(a) Set background — _change background colour_\n\n(b) Set texture — _choose texture (only in SOLID MODE)_\n\n(c) Vertices — _set colour, size and display mode (circle, square, none) of vertices (only in WIREFRAME MODE)_\n\n(d) Edges — _set colour, size and dashed mode of edges (only in WIREFRAME MODE)_\n\n(e) Show information — _toggle the visibility of the_ __Information Tab__\n\n\u003c/br\u003e\n\nThe model is initially displayed in the central part of the screen (__Tip:__ if you can't see your model at first, try changing its dimensions and coordinates. Also check the settings to ensure that the model and background are differently coloured). The __Information Tab__ lists the keys to manipulate your model as well as its number of edges and vertices. Additionally, you can __click and drag the mouse to rotate__ your object and __scroll with the mouse wheel to scale__ it.\n\nHere are some examples of what you can produce with this app:\n\n![](src/assets/examples/cat.png)\n_A model of a cat (`src/assets/models/cat.obj`) with a texture applied to it (`src/assets/textures/cat.jpg`). [Source](https://free3d.com/3d-model/cat-v1--522281.html)_\n\n\u003c/br\u003e\n\n![](src/assets/examples/cat_wire.png)\n_And here's the same model in wireframe mode._\n\n\u003c/br\u003e\n\n![](src/assets/examples/sword.gif)\n\u003c/br\u003e\n_And here's a rotating wireframe sword model (`src/assets/models/sword.obj`). [Source](https://free3d.com/3d-model/sting-sword-128810.html)_ \n\n\u003c/br\u003e\n\n## Structure \u0026 testing\n\nThe program was made using C++17 language and standard libraries, with the interface provided by Qt5. It uses an MVC design structure to separate the interface from the controller and model. The source code can be found in `src/viewer/backend` and `src/viewer/frontend folders`. The backend libraries can be tested with GTest: \n\n1. To run tests: `make test `\n\n2. To display test coverage: `make gcov_report`\n\n3. To check for leaks: `make valgrind`  \n\nRunning `make` or `make all` will reinstall and compile the program. You can get DVI documentation with `make dvi` or a distribution .tar.gz package with `make dist`. \n\nAlso note:\n\n1. Not every model can be processed by this simple app — check `src/assets/models` for inspiration.\n\n2. The basic textures and shaders in `src/assets/textures` and `src/assets/shaders` are needed for the app to function (but you can mod and replace them if you know what you're doing).\n\n3. This app uses external libraries to process .gif, .jpg, .bmp and .obj files: please see `src/external` for licenses.\n \n4. All `make` commands should be run from `src/viewer` Use `make clean` to get rid of the post-compilation junk.\n\n\u003c/br\u003e\n\n## Deinstallation\n\nSimply run `make uninstall`. This will remove the `SimpleViewer/` directory but not the original download, which can be safely deleted afterwards.\n\nIf you wish to suggest an improvement or report a bug, contact me __@ginzburg_jake (Telegram) or JakeTheSillySnake (GitHub)__.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakethesillysnake%2F3dviewer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjakethesillysnake%2F3dviewer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakethesillysnake%2F3dviewer/lists"}