{"id":13623352,"url":"https://github.com/esimov/ascii-fluid","last_synced_at":"2025-03-22T18:34:02.914Z","repository":{"id":42181963,"uuid":"222944786","full_name":"esimov/ascii-fluid","owner":"esimov","description":"Terminal based ASCII fluid simulation controlled by your webcam. 🌊","archived":false,"fork":false,"pushed_at":"2022-07-13T03:31:10.000Z","size":4377,"stargazers_count":67,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-18T14:01:44.702Z","etag":null,"topics":["face-detection","fluid-simulation","fluid-solver","golang","navier-stokes","tcell","terminal","wasm","webassembly","webcam"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/esimov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-11-20T13:33:11.000Z","updated_at":"2025-01-10T18:02:08.000Z","dependencies_parsed_at":"2022-07-29T00:08:45.591Z","dependency_job_id":null,"html_url":"https://github.com/esimov/ascii-fluid","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esimov%2Fascii-fluid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esimov%2Fascii-fluid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esimov%2Fascii-fluid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esimov%2Fascii-fluid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/esimov","download_url":"https://codeload.github.com/esimov/ascii-fluid/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245003497,"owners_count":20545622,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["face-detection","fluid-simulation","fluid-solver","golang","navier-stokes","tcell","terminal","wasm","webassembly","webcam"],"created_at":"2024-08-01T21:01:30.773Z","updated_at":"2025-03-22T18:34:02.098Z","avatar_url":"https://github.com/esimov.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# 🌊 ascii-fluid\n\n**ascii-fluid** is a face controlled ASCII fluid simulation running real time in your terminal. You can control the fluid dynamics with your face by using a webcam, but also with your mouse or touchpad.\n\n![ascii-fluid](https://user-images.githubusercontent.com/883386/73605776-2b83bf00-45ab-11ea-93d1-ad6b2a6010e7.gif)\n\n\n## Usage\n```bash\n $ go get -u -v github.com/esimov/ascii-fluid\n $ cd wasm \u0026\u0026 make\n```\n\n## How does it works?\n\nThe fluid solver is mainly based on Jos Stam's paper [Real-Time Fluid Dynamics for Games](https://pdfs.semanticscholar.org/847f/819a4ea14bd789aca8bc88e85e906cfc657c.pdf). [tcell](https://github.com/gdamore/tcell) library is used for rendering the fluid simulation in terminal and [gorrilla/websocket](https://github.com/gorilla/websocket) package for communicating through a websocket connection with the Webassembly version of the [Pigo](https://github.com/esimov/pigo) face detection library.\n\nThis will start three new operation simultaneously:\n- open a new terminal window\n- start a new web server which is listening on the incoming websocket connection\n- build the webassembly interface for accessing the webcam.\n\nThe coordinates of the first detected face will be transferred over the websocket connection to the terminal application. On each refresh rate (defined as a parameter) the terminal will update the fluid simulation.\n\n## OS Support\n**This program has been tested on Linux and MacOS, but normally it should also run on Windows.**\n\nBecause of the OS imposed security constrains there are some important steps you need to take:\n\n#### MacOS:\nIn MacOS you must set the accessibility authorization for the terminal you are running from.\n\n\u003cimg src=\"https://user-images.githubusercontent.com/705503/80077645-11c09b00-854e-11ea-8b52-ad130b42028b.png\" width=300/\u003e\n\n## Controls\n\n- \u003ckbd\u003e**CTRL-D**\u003c/kbd\u003e show/hide the grid system\n- \u003ckbd\u003e**TAB + mouse down**\u003c/kbd\u003e activate/deactivate agents (agents generates repulsions).\n\n## Dependencies\n\n- https://github.com/gdamore/tcell\n- https://github.com/esimov/pigo\n- https://github.com/gorilla/websocket\n\n## Author\n\n* Endre Simo ([@simo_endre](https://twitter.com/simo_endre))\n\n## License\n\nCopyright © 2020 Endre Simo\n\nThis software is distributed under the MIT license. See the LICENSE file for the full license text.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesimov%2Fascii-fluid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fesimov%2Fascii-fluid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesimov%2Fascii-fluid/lists"}