{"id":29434427,"url":"https://github.com/dnyarri/povmosaic","last_synced_at":"2026-02-09T09:09:11.189Z","repository":{"id":215309201,"uuid":"738618516","full_name":"Dnyarri/POVmosaic","owner":"Dnyarri","description":"Converting bitmaps to 3D objects mosaic in POV-Ray format.","archived":false,"fork":false,"pushed_at":"2026-01-22T17:41:52.000Z","size":288,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-23T10:35:26.448Z","etag":null,"topics":["3d","3d-graphics","euclidean-tilings","mosaic","pattern","plane","plane-geometry","plane-partition","pov-ray","povray","python","python3","regular-plane-partition","symmetry","symmetry-group","tiling"],"latest_commit_sha":null,"homepage":"https://dnyarri.github.io/povzaika.html","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Dnyarri.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-03T16:38:35.000Z","updated_at":"2026-01-22T17:42:19.000Z","dependencies_parsed_at":"2024-05-21T06:42:00.179Z","dependency_job_id":"f00740b8-aa91-4ad2-b228-d34c5b69fa34","html_url":"https://github.com/Dnyarri/POVmosaic","commit_stats":null,"previous_names":["dnyarri/povmosaic"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/Dnyarri/POVmosaic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dnyarri%2FPOVmosaic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dnyarri%2FPOVmosaic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dnyarri%2FPOVmosaic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dnyarri%2FPOVmosaic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dnyarri","download_url":"https://codeload.github.com/Dnyarri/POVmosaic/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dnyarri%2FPOVmosaic/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29260426,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-09T04:11:57.159Z","status":"ssl_error","status_checked_at":"2026-02-09T04:11:56.117Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["3d","3d-graphics","euclidean-tilings","mosaic","pattern","plane","plane-geometry","plane-partition","pov-ray","povray","python","python3","regular-plane-partition","symmetry","symmetry-group","tiling"],"created_at":"2025-07-13T02:16:11.916Z","updated_at":"2026-02-09T09:09:11.174Z","avatar_url":"https://github.com/Dnyarri.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# POV-Ray Mosaic - Bitmap to 3D solid mosaic converter\n\nPython utilities for conversion of bitmap image (in PNG or PPM format) to some sort of solid objects mosaic in [POV-Ray](https://www.povray.org/ \"Persistence of Vision Raytracer\") format. Each source image pixel is converted to a 3D object, and objects are packed side by side, forming a grid following [Euclidean tilings](https://en.wikipedia.org/wiki/List_of_regular_polytopes#Euclidean_tilings \"Brief Euclidean tilings explanation\").\n\n[![Example of 63zaika export rendering](https://dnyarri.github.io/3z/301.png \"Example of 6/3 POV-Ray Mosaic export rendering\")](https://dnyarri.github.io/pov3zaika.html)\n\n## Brief programs description\n\nCurrent version of POV-Ray Mosaic consist of several parts:\n\n- [**POVRayMosaic.py**](https://github.com/Dnyarri/POVmosaic/blob/main/POVRayMosaic.py) - Main program GUI, joining all components together;\n\n- **povzaika** export module, including:\n\n  - [**zaika63.py**](https://github.com/Dnyarri/POVmosaic/blob/main/export/zaika63.py) - converts every single pixel into 3D object, by default a solid sphere. Spheres are packed into triangle/hexagon grid. Spheres may be easily replaced by other predefined objects, object positions and properties may be mapped to source image brightness and/or randomized, etc.\n  - [**zaika44.py**](https://github.com/Dnyarri/POVmosaic/blob/main/export/zaika44.py) - converts every single pixel into 3D object, by default an isosurface looking like cube with rounded corners (well, it would be logical to use cube by default but cubes are flat and boring). Cubes are packed into square grid. Cubes may be easily replaced by other predefined objects, object positions and properties may be mapped to source image brightness and/or randomized, etc.\n  - [**zaika36.py**](https://github.com/Dnyarri/POVmosaic/blob/main/export/zaika36.py) - converts every single pixel into 3D object, by default a triangular prism. Prisms are packed into triangle grid.\n\n- **pypng** and **pypnm** modules contain components providing PNG and PPM image files reading, correspondingly. PyPNM is also used for source image preview on screen.\n\n[![Example of 44zaika export rendering](https://dnyarri.github.io/4z/406.png \"Example of 4/4 POV-Ray Mosaic export rendering\")](https://dnyarri.github.io/pov4zaika.html)\n\n## Prerequisite and Dependencies\n\n1. [Python](https://www.python.org/ \"CPython\") 3.11 or above.\n2. [PyPNG](https://gitlab.com/drj11/pypng \"PyPNG module for reading and writing PNG image files\"). Copy included into current POV-Ray Mosaic distribution.\n3. [PyPNM](https://pypi.org/project/PyPNM/ \"PyPNM module for displaying pictures and reading and writing PNM image files\"). Copy included into current POV-Ray Mosaic distribution.\n4. Tkinter. Normally included into standard CPython distribution.\n\n\u003e [!NOTE]\n\u003e Since POVRayMosaic 1.21.2.2 PyPNM version included into distribution updated to [PyPNM \"Victory 2\" main](https://github.com/Dnyarri/PyPNM \"Pure Python module for displaying pictures and reading and writing PNM image files\"), intended to be used with Python 3.11 and above. The only actual limitation is that this version does not contain a workaround for displaying 16 bpc images, necessary for old Tkinter included into old CPython distributions. If you want bringing old Tkinter compatibility back, download [PyPNM extended compatibility version](https://github.com/Dnyarri/PyPNM/tree/py34 \"Pure Python module for displaying pictures and reading and writing PNM image files, Python 3.4 compatible\") and downgrade PyPNM manually.\n\n## Usage\n\nProgram is equipped with simple GUI for file browsing and selection. Exported scene contains enough basic stuff (globals, light, camera) to be rendered out of the box, and is well structured and commented for further editing. For detail on scene structure and editing refer to *help.html* included in current distribution.\n\n### Related\n\n[Dnyarri website - more Python freeware for image processing, 3D, and batch automation](https://dnyarri.github.io \"The Toad's Slimy Mudhole - Python freeware for POV-Ray and other 3D, Scale2x, Scale3x, Scale2xSFX, Scale3xSFX, PPM and PGM image support, bilinear and barycentric image interpolation, and batch processing\") by the same author.\n\n[POV‑Ray Mosaic general information](https://dnyarri.github.io/povzaika.html \"POV‑Ray Mosaic general and updates info\"), explanations etc.;\n\n- [POV-Ray Mosaic 6³ examples](https://dnyarri.github.io/pov3zaika.html \"POV-Ray Mosaic 6³ renderings and scene options explanation\")\n- [POV-Ray Mosaic 4⁴ examples](https://dnyarri.github.io/pov4zaika.html \"POV-Ray Mosaic 4⁴ renderings and scene options explanation\")\n- [POV-Ray Mosaic 3⁶ examples](https://dnyarri.github.io/pov36zaika.html \"POV-Ray Mosaic 3⁶ renderings and scene options explanation\")\n\n[POV‑Ray Mosaic source at Github](https://github.com/Dnyarri/POVmosaic \"POV‑Ray Mosaic source at Github\")\n\n[POV‑Ray Mosaic source at Gitflic mirror](https://gitflic.ru/project/dnyarri/povmosaic \"POV‑Ray Mosaic source at Gitflic mirror\")\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdnyarri%2Fpovmosaic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdnyarri%2Fpovmosaic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdnyarri%2Fpovmosaic/lists"}