• Stars
    star
    160
  • Rank 234,703 (Top 5 %)
  • Language
    C
  • License
    GNU General Publi...
  • Created over 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A simple 3D model editor based on simple quads and a sprite set.

VersaTile 3D Model Editor

Build Status

Screenshot

VersaTile is a simple 3D model editor that allows editing models based on tilesets.

Tiles can be placed on an axis-aligned plane and a model can be constructed this way.

Features

  • Model editing
  • Undo/redo
  • Vertex displacement
  • Post-placement edit (move/rotate/mirror/displace/…)
  • Export via Assimp

Usage

The editor is mainly controlled with the mouse. On the right hand side is a side bar that shows the models sprite sheet and allows the selection of sprites.

The center of the editor contains a 3D viewport that shows the model and allows editing.

Creating a model

When creating a new model, the following dialog appears:

Create new model dialog

It provides several options that must be set up correctly to import a sprite sheet:

  • File Name This option is required and defines the file that should be used as the sprite sheet.
  • Sprite Size This option defines the size of the smallest tile that can be selected in the sprite sheet view. This also defines the grid size.
  • Spritesheet Margin If the sprite sheet image has a border around the contained sprites, set this value to the number of pixels this border is wide.
  • Sprite Padding If there is a padding between the single sprites in the sheet, set this value to the number of pixels this padding is wide.
  • Preview Here you can see a preview of the imported sprites. The magenta lines will disappear in the editor, but are displayed here for you to check if your setup of the sprite sheet is correct.

Navigating in the Viewport

Generic Controls

VersaTile uses a grid aligned movement for the camera focus. This grid is shown as white lines and aligns itself to fit a comfortable insertion position.

To rotate the camera, hold the right mouse button and drag. Horizontal movement rotates the camera around the focus point, vertical movement looks up and down.

To move the focus point, press W,A,S,D,Q and E. W moves the camera forward horizontally, S moves it backwards. A moves to the left and B to the right. E moves the camera upwards and Q downwards.

For a quick rotation of the camera, all shortcuts listed in the table below.

If the option Automatic adjust grid orientation is set, the displayed grid will align with the camera so always the most convenient grid is active. If this option is disabled, the active grid can be changed by pressing G or the Toggle Grid Plane button.

Inserting a tile

To insert a tile, select the sprite on the right side by clicking and dragging until the wanted portion is selected. Now a tile can be inserted in the 3D viewport on the white grid.

When inserting, the tile snaps to the grid unless the Shift key is pressed, then a pixel perfect insertion can be done.

When a good position is chosen, a left click will insert the tile at the previewed position. Then, another tile can be inserted. To insert a different tile, just select another sprite in the right panel. To end tile insertion, press Space or use the Selection mode button in the toolbar.

Modifying an existing tile

Modify Display

Tiles can be modified in different ways:

Translate / Move

Click and drag the tiles center gizmo to move the tile on its own placement plane. You can move the tile up,down,left and right.

Rotate Left / Right

Click the corresponding button in the toolbar or menu to rotate the tile around its upper left corner.

Flip Horizontal / Vertical

Click the corresponding button in the toolbar or menu to mirror the contents of the tile.

Displace Vertex

This feature allows you to displace a vertex to the tiles own plane. Click and drag a vertex gizmo to displace it along the tiles normal.

This can be used to achieve slopes and skewed tiles.

Delete

Click the button on the toolbar or press Delete to remove the tile from the model.

Controls

Key Function
W,A,S,D Move camera focus horizontal
Q,E Move camera focus up/down
Space Cancel/Stop tile insertion
H Flip horizontal
V Flip vertical
R,Ctrl+R Rotate tile
Shift Enable fine grid snapping (pixel perfect)
Num-2 Rotate camera down 90°
Num-8 Rotate camera up 90°
Num-4 Rotate camera left 90°
Num-6 Rotate camera right 90°
Num-Plus Zoom camera in
Num-Minus Zoom camera out
Right Mouse Drag to rotate camera
Left Mouse Click to select, modify or insert tile
Delete Remove the selected tile
Ctrl+Z Undo the last modification
Ctrl+Y Redo the last undone modification
Ctrl+H Rotate camera into Home position
Ctrl+T Rotate camera into Top position
Ctrl+F Rotate camera into Front position
Ctrl+G Rotate camera into Side position
Ctrl+Shift+H Set camera home position
G When AutoGrid is disabled, selects the next grid option
F Moves the camera center to the currently selected tile.

Supported Export Formats

VersaTile supports exporting the created 3D models with Assimp. Every format that can be exported by Assimp can also be used with VersaTile.

On export, the Y-axis is up and the model is scaled in a way that a single texture pixel is equivalent to one model unit.

So a model that is 64 pixels wide is also 64 units wide.

Preferences

In this dialog, you can set up your preferences on how VeraTile should behave.

Behaviour

Preferences dialog: Behaviour

Automatic adjust grid orientation

When this option is active, the grid will align itself with the camera as soon as it is moved.

Horizontal Grid Threshold

This is a factor from 0.0…1.0 that scales the y axis when determining the current auto grid.

The lower this is, the later the grid will align into "horizontal" mode, allowing more camera movement before swapping into horizontal mode.

Display

Preferences dialog: Display

Ground Display

Determines the way a ground plane is shown. When None, no ground plane is visible, Grid is a static horizontal grid, even when the vertical one is shown and Solid is a solid, green surface that is supposed to resemble a grassy ground.

Ground Size

The extends of the ground in tiles. The larger this is, the larger the ground will be displayed.

Show Coordinate Axis

If this option is enabled, the coordinate axis are shown by three short lines in the colors red (x-axis), green (y-axis) and blue (z-axis). The intersection of the three lines is the current camera focus point.

Credits

Thanks for each Crocotile3D and Sprytile for inspiring me to create VersaTile!

Also thanks to kenney.nl for delivering our default tile set! It suits this editor very much.

More Screenshots

More Repositories

1

kristall

Graphical small-internet client for windows, linux, MacOS X and BSDs. Supports gemini, http, https, gopher, finger.
C++
653
star
2

zig-network

A smallest-common-subset of socket functions for crossplatform networking, TCP & UDP
Zig
271
star
3

ZigAndroidTemplate

This repository contains a example on how to create a minimal Android app in Zig.
Zig
202
star
4

SDL.zig

A shallow wrapper around SDL that provides object API and error handling
C
188
star
5

LoLa

LoLa is a small programming language meant to be embedded into games.
Zig
150
star
6

zero-graphics

Application framework based on OpenGL ES 2.0. Runs on desktop machines, Android phones and the web
Zig
124
star
7

zig-args

Simple-to-use argument parser with struct-based config
Zig
119
star
8

zig-qoi

Quite OK Image format encoder/decoder written in Zig
Zig
109
star
9

zig-opengl

OpenGL binding generator based on the opengl registry
C#
62
star
10

Ziguana-Game-System

A retro-style gaming console running on bare x86 metal written in Zig
Zig
47
star
11

parser-toolkit

A toolkit that makes it easier to write recursive-descent parsers in Zig.
Zig
45
star
12

TinyVG

A new format for vector graphics: Tiny vector graphics
Zig
36
star
13

TextEditor

A backbone for text editors. No rendering, no input, but everything else.
Zig
32
star
14

zig-serve

Server implementations for several protocols in Zig. Includes http(s), gemini and gopher
Zig
30
star
15

zig-bearssl

A BearSSL binding for Zig
Zig
27
star
16

livedecode

A super hacky tool to decode unknown binary formats
Zig
26
star
17

any-pointer

A type erasure library for Zig that is meant to be eventually upstreamed to std
Zig
25
star
18

ZTT

Precompiled Zig text template engine
Zig
20
star
19

spu-mark-ii

CPU and home computer project
VHDL
17
star
20

zig-gamedev-lib

xq's Zig Game Development Library
Zig
16
star
21

SoftRenderLib

A collection of software rendering routines
Zig
16
star
22

BrokenRemote

A remote debugging tool for The Binding of Isaac: Afterbirth+
C++
14
star
23

zig-mqtt

A build package for mqtt-c.
Zig
14
star
24

gurl

A curl-like cli application to interact with Gemini sites.
Zig
14
star
25

ftz

A simple cross-platform file transfer utility
Zig
14
star
26

zig-uri

A small URI parser that parses URIs after RFC3986
Zig
12
star
27

makeshift

A dead-simple programming language
Zig
11
star
28

zig-gemtext

A zig library to manipulate gemini text files
Zig
10
star
29

SDL.zig-Example

A small usage example on how to build and use SDL.zig
Zig
10
star
30

waveform

Generates nice Unicode rendered waveforms.
Zig
9
star
31

OpenWorld.Engine

A C# game engine based on OpenGL and OpenTK.
C#
9
star
32

zig-tracer

A small raytracer written in zig.
Zig
9
star
33

WaveFunctionCollapse

A just-for-fun implementation of 2D wave function collapse
Zig
9
star
34

SLF

The Simple Linking Format
Zig
8
star
35

zig-assimp

Open Asset Importer Library built with Zig
C
8
star
36

OpenCL

An open source OpenCL wrapper written in C#. Usable with all .NET versions since 2.0.
C#
7
star
37

ZigPaint

A simple paint application written in Zig. Used to create an OpenGL loader/wrapper and a minimal UI system.
Zig
7
star
38

zyclone

A game engine modelled after the Acknex A8 engine which is used for Gamestudio A8.
Zig
7
star
39

lua

Fork of Lua with support for build.zig
C
6
star
40

zig-build-chapter-2

Files for the zig build explained series
C
6
star
41

TIS-100

A real word implementation of the fantastic TIS-100 CPU by Zachtronics.
VHDL
5
star
42

Crayos

Global Game Jam 2024 Game
Go
5
star
43

acknext

A game engine prototype loosely inspired on the Acknex A8 engine.
Logos
4
star
44

SQEditor

ShadeQ Level Editor for Lite-C
C
4
star
45

turtlefont

A small vector graphics font file format with an example font.
Zig
4
star
46

cg-workbench

Live shader and graphics coding tool
C
4
star
47

zig-sg4f-playground

A playground to try out different stuff with a propietary LPC1786 hardware
Zig
4
star
48

zig-ihex

An intel hex loader written in Zig
Zig
3
star
49

ESOPUNKS

Implementation of the EXA programming language by Zachtronics
Zig
3
star
50

SmallscaleCI

A very tiny CI implementation for self-hosted runners
Shell
3
star
51

TUST

Scripting Library and Game Templates for Gamestudio A8
C
3
star
52

PandorOS

Another attempt to create a small operating system. This time, more features, less fancy code.
C
3
star
53

asciitable

A very basic tool that just prints the ascii table
Zig
3
star
54

AckNET

A .NET wrapper for the Acknex Engine.
C#
3
star
55

LoLa-csharp

Logic Language, a small embeddable scripting language meant for user-based script input in games
C#
3
star
56

ashet.computer

A self-made computer platform
Lua
2
star
57

zig-kms-dri

Experiments with KMS and DRI. Who needs X11/Wayland anyways?!
Zig
2
star
58

Retro-FPS

Oldschoolish first person shooter.
C
2
star
59

zig-ode

Zig ODE sdk
Zig
2
star
60

cbm-tools

A small collection of CBM computer related tools
Zig
2
star
61

pkg

Project and library package manager. Similar to linux package managers but for libraries and project templates.
C#
2
star
62

maps

Multiple Audio Playback Streams - A basic audio mixing library
Zig
2
star
63

psi

A work-in-progress programming language, focused on a kind of crazy, but "well" considered concept...
C#
2
star
64

trainOS

An operating system with everything built custom.
Makefile
2
star
65

WMB

Gamestudio WMB level loader in C++17
C++
2
star
66

zig-mbedtls

A mbedtls build wrapper for Zig build
C
2
star
67

I2P.Sam

C# Interface to the I2P SAM protocol.
C#
2
star
68

Uml2Cpp

Write your own classes with an easy to use modeling language and convert your code to C++. The generated source is prepared for the use with Qt and an example file explains how to use the script.
Lua
2
star
69

ShaderCore

ShaderCore is a shader library for OpenTK and OpenGL 4.0 or larger. It provides single shader files that have conditional compilation, include files, default shader and a shader class system. This provides flexible shader code with much lesser redundtant code to be written.
C#
2
star
70

weekend-raytracer

Just a tiny raytracer in several languages
C++
1
star
71

hyperdoc

A hyperlinked rich text format
Zig
1
star
72

depmake

Simple build system made for trainOS
C#
1
star
73

lola-vscode

LoLa extension for VSCode
1
star
74

SDL3-Api-Generator-Example

C
1
star
75

PeopleDoOpenGL

Made at Nordlicht 2018, teaching people OpenGL
C
1
star
76

ker

A really small C++ library that provides some basic collections and value types.
C++
1
star
77

ecp5-quickstart

A blinky template for a full ECP5 verilog workflow including simulation, synthesis and programming
Verilog
1
star
78

MidiV

A midi visualization tool
C++
1
star
79

fraxinus

Small simple terminal emulation library
Zig
1
star
80

TerraForm

A feature based terrain editor
C++
1
star
81

VoxelizedRenderer

Simple uniform grid voxel renderer with OpenCL, written in C#.
C#
1
star
82

minitest

A minimal C++ testing framework in 101 LOC
C++
1
star
83

ggj-2021

Untitled Game for Global Game Jam
Lua
1
star
84

gemini-web-bridge

Serving simple web files with support for gemini translation
Lua
1
star
85

zfx-logbot

IRC LogBot made for #zfx, #lost on irc.euirc.net
Lua
1
star
86

DasOS

DasOS is a research project which contains prototypes for different parts regarding OS development like kernels, virtual machines, file formats and systems.
C
1
star
87

bullshit-bingo

BULLSHIT!
Lua
1
star
88

avr-tutorial

Contains some basic examples on how to set up an AVR project
TeX
1
star
89

navmesh

A navmesh implementation in zig
Zig
1
star
90

CodersNotepad

Spiritual clone of ProgrammersNotepad 2 made with Qt.
C++
1
star
91

KernelTemplate

A pretty primitive kernel base with physical and virtual memory management and a console.
C
1
star
92

NextMMO

An RPGMaker styled multiplayer game focused on, well, nothing special.
JavaScript
1
star
93

BlocksWorld

BlocksWorld is an attempt to create a small game that provides a creativity environment where players can build their own (small) worlds.
C#
1
star
94

DbusAvrLink

A dbus (TI calculator protocol) implementiation for AVRs.
Assembly
1
star
95

Sharpsole

C# goes scripting! A C# console compile-and-execute tool. Compiles one or more files into a in-memory assembly and runs it immediately.
C#
1
star
96

libgamestudio

A library that decodes file formats used by the Gamestudio/Acknex engine
Zig
1
star
97

tools.mq32.de

A collection of small, web-based tools
HTML
1
star
98

Lylios

A small pathtracer, nothing special really
C++
1
star
99

link.zig-concept-art

A concept for a replacement for linker scripts
Zig
1
star
100

LOST

LOST Programming Language
1
star