{"name":"objcurses: A Minimalistic 3D Object Viewer for Your Terminal","description":"objcurses is a unique terminal-based 3D object viewer that renders .obj models in real-time using ncurses and ASCII characters. Built from scratch in modern C++20, it offers real-time camera and light control, basic color support, and animation capabilities. This project serves as an excellent example of low-level graphics programming without external engines.","github":"https://github.com/admtrv/objcurses","url":"https://osrepos.com/repo/admtrv-objcurses","source":"osrepos.com","sourceDescription":"This repository profile is provided by osrepos.com, an open source repository discovery platform.","repositoryProfile":"https://osrepos.com/repo/admtrv-objcurses","generatedFor":"open source discovery and AI-assisted research","markdown":"https://osrepos.com/repo/admtrv-objcurses.md","json":"https://osrepos.com/repo/admtrv-objcurses.json","topics":["3D Viewer","Terminal Graphics","ASCII Art","C++","ncurses","Command Line Tool","Retro Programming","OBJ Viewer"],"keywords":["3D Viewer","Terminal Graphics","ASCII Art","C++","ncurses","Command Line Tool","Retro Programming","OBJ Viewer"],"stars":null,"summary":"objcurses is a unique terminal-based 3D object viewer that renders .obj models in real-time using ncurses and ASCII characters. Built from scratch in modern C++20, it offers real-time camera and light control, basic color support, and animation capabilities. This project serves as an excellent example of low-level graphics programming without external engines.","content":"## Introduction\n\n**objcurses** is a minimalistic 3D object viewer designed to run directly in your terminal. Utilizing `ncurses`, it renders `.obj` models in real-time using ASCII characters and a simple, custom-built rendering pipeline. Developed from scratch in modern C++20, `objcurses` showcases up-to-date best practices and a clean, modular design, serving as a personal exploration into low-level graphics programming without relying on external graphic engines or frameworks.\n\nKey features include real-time camera and directional light control, basic color support from `.mtl` material files, and the ability to start animations with consistent auto-rotation. It also provides a HUD overlay for additional statistics and boasts minimal dependencies, primarily C/C++, `ncurses`, and math libraries.\n\n## Installation\n\nThe latest release of `objcurses` is available on the [GitHub releases page](https://github.com/admtrv/objcurses/releases){target=\"_blank\"}. Remember to replace `<version>` with the actual release version, for example, `1.2.3`.\n\n### Manual (Build from Source)\n\nTo manually compile and install `objcurses`, follow these steps:\n\n#### Install Dependencies\n\nEnsure you have CMake and a C++ compiler installed:\n\nbash\nsudo apt update\nsudo apt install cmake g++ libncurses6 libtinfo6 -y\n\n\n#### Clone the Repository\n\nbash\ngit clone https://github.com/admtrv/objcurses\ncd objcurses\n\n\n#### Compile the Program\n\nbash\nmkdir cmake-build-release\ncd cmake-build-release\ncmake ..\nmake\n\n\n#### Install for Global Use (optional)\n\nbash\nsudo make install\n\n\n### From `.tar.gz`\n\nTo install `objcurses` from a binary archive:\n\nbash\ntar -xzvf objcurses-<version>-linux.tar.gz\ncd objcurses-<version>-linux\nsudo mv objcurses /usr/local/bin/\nsudo chmod +x /usr/local/bin/objcurses\n\n\n### From `.deb`\n\nFor Debian-based distributions (Ubuntu, Mint, etc.), use:\n\nbash\nsudo dpkg -i objcurses-<version>-linux.deb\n\n\nTo uninstall:\n\nbash\nsudo dpkg -r objcurses\n\n\n### Verify Installation\n\nbash\nwhich objcurses\nobjcurses --help\n\n\nYou should now be able to use `objcurses` from anywhere in your terminal.\n\n## Examples\n\n### Usage\n\nbash\nobjcurses [OPTIONS] <file.obj>\n\n\n#### Options\n\n\n-c, --color <theme>  Enable colors support, optional theme {dark|light|transparent}\n-l, --light          Disable light rotation\n-a, --animate <deg>  Start with animated object, optional speed [default: 30.0 deg/s]\n-z, --zoom <x>       Provide initial zoom [default: 1.0 x]\n    --flip           Flip faces winding order\n    --invert-x       Flip geometry along X axis\n    --invert-y       Flip geometry along Y axis\n    --invert-z       Flip geometry along Z axis\n-h, --help           Print help\n-v, --version        Print version\n\n\nExamples:\n\nbash\nobjcurses file.obj                # basic\nobjcurses -c file.obj             # enable colors\nobjcurses -c transparent file.obj # set transparent color theme\nobjcurses -c -a -z 1.5 file.obj   # start animation with zoom 1.5 x\nobjcurses -c -a 10 file.obj       # start animation with speed 10.0 deg/s\nobjcurses -c --invert-z file.obj  # flip z axis if blender model\n\n\n### Controls\n\n`objcurses` supports arrow keys, WASD, and Vim-style navigation:\n\n\n?, h, a            Rotate left\n?, l, d            Rotate right\n?, k, w            Rotate up\n?, j, s            Rotate down\n+, i               Zoom in\n-, o               Zoom out\nTab                Toggle HUD\nq                  Quit\n\n\n## Why Use It?\n\n`objcurses` offers several compelling use cases for developers and enthusiasts alike:\n\n*   **Preview 3D files instantly** without launching heavy editors.\n*   **Generate custom ASCII art** for tools like `neofetch` or terminal splash screens.\n*   **Style CLI tools or games** with unique ASCII-based intros and visuals.\n*   **Animate your coding workspace** with rotating retro-style ASCII models.\n*   **Create stylish character-based GIFs** directly from terminal-rendered scenes.\n\n## Links\n\n*   **GitHub Repository:** [https://github.com/admtrv/objcurses](https://github.com/admtrv/objcurses){target=\"_blank\"}","metrics":{"detailViews":2,"githubClicks":4},"dates":{"published":null,"modified":"2026-03-13T17:08:10.000Z"}}