{"id":16608069,"url":"https://github.com/ikskuh/versatile","last_synced_at":"2025-10-12T15:20:46.440Z","repository":{"id":68601272,"uuid":"97210216","full_name":"ikskuh/VersaTile","owner":"ikskuh","description":"A simple 3D model editor based on simple quads and a sprite set.","archived":false,"fork":false,"pushed_at":"2017-09-28T16:03:54.000Z","size":1811,"stargazers_count":170,"open_issues_count":11,"forks_count":13,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-07-30T16:24:00.132Z","etag":null,"topics":["3d","3d-modelling","3d-models","3d-tiles","editor","qt","qt5","sprite","tilesets"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ikskuh.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}},"created_at":"2017-07-14T08:13:20.000Z","updated_at":"2025-06-27T13:45:44.000Z","dependencies_parsed_at":"2023-02-21T05:31:53.512Z","dependency_job_id":null,"html_url":"https://github.com/ikskuh/VersaTile","commit_stats":null,"previous_names":["ikskuh/versatile"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/ikskuh/VersaTile","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ikskuh%2FVersaTile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ikskuh%2FVersaTile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ikskuh%2FVersaTile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ikskuh%2FVersaTile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ikskuh","download_url":"https://codeload.github.com/ikskuh/VersaTile/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ikskuh%2FVersaTile/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279011851,"owners_count":26085004,"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","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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-modelling","3d-models","3d-tiles","editor","qt","qt5","sprite","tilesets"],"created_at":"2024-10-12T01:24:59.937Z","updated_at":"2025-10-12T15:20:46.425Z","avatar_url":"https://github.com/ikskuh.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VersaTile 3D Model Editor\n\n[![Build Status](https://travis-ci.org/MasterQ32/VersaTile.svg?branch=master)](https://travis-ci.org/MasterQ32/VersaTile)\n\n![Screenshot](https://puu.sh/wZtBW/e4b61754c2.png)\n\n*VersaTile* is a simple 3D model editor that allows\nediting models based on tilesets.\n\nTiles can be placed on an axis-aligned plane and a\nmodel can be constructed this way.\n\n## Features\n\n- Model editing\n- Undo/redo\n- Vertex displacement\n- Post-placement edit (move/rotate/mirror/displace/…)\n- Export via Assimp\n\n## Usage\n\nThe editor is mainly controlled with the mouse. On the right hand side is a side bar\nthat shows the models sprite sheet and allows the selection of sprites.\n\nThe center of the editor contains a 3D viewport that shows the model and allows editing.\n\n### Creating a model\n\nWhen creating a new model, the following dialog appears:\n\n![Create new model dialog](https://puu.sh/wZtEf/189a1e35fa.png)\n\nIt provides several options that must be set up correctly to import a sprite sheet:\n\n- **File Name**\n  This option is required and defines the file that should be used as the sprite sheet.\n- **Sprite Size**\n  This option defines the size of the smallest tile that can be selected in the sprite\n  sheet view. This also defines the grid size.\n- **Spritesheet Margin**\n  If the sprite sheet image has a border around the contained sprites, set this value to\n  the number of pixels this border is wide.\n- **Sprite Padding**\n  If there is a padding between the single sprites in the sheet, set this value to the\n  number of pixels this padding is wide.\n- **Preview**\n  Here you can see a preview of the imported sprites. The magenta lines will disappear in\n  the editor, but are displayed here for you to check if your setup of the sprite sheet\n  is correct.\n\n### Navigating in the Viewport\n\n![Generic Controls](https://puu.sh/wZuey/352a19e855.png)\n\n*VersaTile* uses a grid aligned movement for the camera focus. This grid is shown\nas white lines and aligns itself to fit a comfortable insertion position.\n\nTo rotate the camera, hold the **right mouse button** and drag. Horizontal movement\nrotates the camera around the focus point, vertical movement looks up and down.\n\nTo move the focus point, press W,A,S,D,Q and E. W moves the camera forward horizontally,\nS moves it backwards. A moves to the left and B to the right. E moves the camera upwards\nand Q downwards.\n\nFor a quick rotation of the camera, all shortcuts listed in the table below.\n\nIf the option `Automatic adjust grid orientation` is set, the displayed grid will align\nwith the camera so always the most convenient grid is active. If this option is disabled,\nthe active grid can be changed by pressing **G** or the **Toggle Grid Plane** button.\n\n### Inserting a tile\nTo insert a tile, select the sprite on the right side by clicking and dragging until\nthe wanted portion is selected. Now a tile can be inserted in the 3D viewport on\nthe white grid.\n\nWhen inserting, the tile snaps to the grid unless the **Shift** key is pressed, then\na pixel perfect insertion can be done.\n\nWhen a good position is chosen, a left click will insert the tile at the previewed\nposition. Then, another tile can be inserted. To insert a different tile, just\nselect another sprite in the right panel. To end tile insertion, press **Space** or\nuse the **Selection mode** button in the toolbar.\n\n### Modifying an existing tile\n\n![Modify Display](https://puu.sh/wZudI/c796116a40.png)\n\nTiles can be modified in different ways:\n\n#### Translate / Move\nClick and drag the tiles center gizmo to move the tile on its own placement\nplane. You can move the tile up,down,left and right.\n\n#### Rotate Left / Right\nClick the corresponding button in the toolbar or menu to rotate the tile around\nits upper left corner.\n\n#### Flip Horizontal / Vertical\nClick the corresponding button in the toolbar or menu to mirror the contents of \nthe tile.\n\n#### Displace Vertex\nThis feature allows you to displace a vertex to the tiles own plane. Click and\ndrag a vertex gizmo to displace it along the tiles normal.\n\nThis can be used to achieve slopes and skewed tiles.\n\n#### Delete\nClick the button on the toolbar or press **Delete** to remove the tile from the\nmodel.\n\n## Controls\n\n| Key          | Function                                                     |\n|--------------|--------------------------------------------------------------|\n| W,A,S,D      | Move camera focus horizontal                                 |\n| Q,E          | Move camera focus up/down                                    |\n| Space        | Cancel/Stop tile insertion                                   |\n| H            | Flip horizontal                                              |\n| V            | Flip vertical                                                |\n| R,Ctrl+R     | Rotate tile                                                  |\n| Shift        | Enable fine grid snapping (pixel perfect)                    |\n| Num-2        | Rotate camera down 90°                                       |\n| Num-8        | Rotate camera up 90°                                         |\n| Num-4        | Rotate camera left 90°                                       |\n| Num-6        | Rotate camera right 90°                                      |\n| Num-Plus     | Zoom camera in                                               |\n| Num-Minus    | Zoom camera out                                              |\n| Right Mouse  | Drag to rotate camera                                        |\n| Left Mouse   | Click to select, modify or insert tile                       |\n| Delete       | Remove the selected tile                                     |\n| Ctrl+Z       | Undo the last modification                                   |\n| Ctrl+Y       | Redo the last undone modification                            |\n| Ctrl+H       | Rotate camera into **Home** position                         |\n| Ctrl+T       | Rotate camera into **Top** position                          |\n| Ctrl+F       | Rotate camera into **Front** position                        |\n| Ctrl+G       | Rotate camera into **Side** position                         |\n| Ctrl+Shift+H | Set camera home position                                     |\n| G            | When AutoGrid is disabled, selects the next grid option      |\n| F            | Moves the camera center to the currently selected tile.      |\n\n## Supported Export Formats\n*VersaTile* supports exporting the created 3D models with [Assimp](http://assimp.sourceforge.net/).\nEvery format that can be exported by Assimp can also be used with *VersaTile*.\n\nOn export, the **Y-axis** is **up** and the model is scaled in a way that a single\ntexture pixel is equivalent to one model unit.\n\nSo a model that is 64 pixels wide is also 64 units wide.\n\n## Preferences\n\nIn this dialog, you can set up your preferences on how *VeraTile* should behave.\n\n### Behaviour\n\n![Preferences dialog: Behaviour](https://puu.sh/wZtOm/c7513f9e86.png)\n\n#### Automatic adjust grid orientation\nWhen this option is active, the grid will align itself with the camera\nas soon as it is moved.\n\n#### Horizontal Grid Threshold\nThis is a factor from `0.0`…`1.0` that scales the **y axis** when determining\nthe current auto grid.\n\nThe lower this is, the later the grid will align into \"horizontal\" mode,\nallowing more camera movement before swapping into horizontal mode.\n\n### Display\n\n![Preferences dialog: Display](https://puu.sh/wZtOY/36fa3cb9e2.png)\n\n#### Ground Display\n\nDetermines the way a ground plane is shown. When **None**, no ground plane is\nvisible, **Grid** is a static horizontal grid, even when the vertical one\nis shown and **Solid** is a solid, green surface that is supposed to resemble\na grassy ground.\n\n#### Ground Size\nThe extends of the ground in tiles. The larger this is, the larger the ground\nwill be displayed.\n\n#### Show Coordinate Axis\nIf this option is enabled, the coordinate axis are shown by three short lines in the\ncolors red (x-axis), green (y-axis) and blue (z-axis). The intersection of the three\nlines is the current camera focus point.\n\n## Credits\n\nThanks for each [Crocotile3D](http://www.crocotile3d.com/) and [Sprytile](https://github.com/ChemiKhazi/Sprytile)\nfor inspiring me to create *VersaTile*!\n\nAlso thanks to [kenney.nl](http://kenney.nl/assets/roguelike-caves-dungeons) for delivering our default tile\nset! It suits this editor very much.\n\n## More Screenshots\n\n![](https://puu.sh/wYFlX/6b0fa22731.png)\n\n![](https://puu.sh/wXGND/2a17f8ef45.png)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fikskuh%2Fversatile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fikskuh%2Fversatile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fikskuh%2Fversatile/lists"}