-
-
Notifications
You must be signed in to change notification settings - Fork 247
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
12 changed files
with
111 additions
and
146 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
# Lorien Manual v0.7.0-dev | ||
|
||
Drawing tablets are supported and recommended, but you can also just use Keyboard+Mouse. | ||
|
||
## Basic Usage | ||
- Draw with the left mouse button (<kbd>LMB</kbd>) or with your drawing tablet's pen | ||
- Pan/drag across the canvas with the middle mouse button (i recommend to map a button on your pen to the middle mouse button for easy navigation) | ||
- Zoom with the mouse wheel. You can also zoom while holding <kbd>CTRL</kbd> and the middle mouse button <kbd>MMB</kbd> while moving the mose up/down. This is especially useful when using a drawing tablet with a pen. | ||
- You can open files by dragging them into the window or by opening it via the menu (Shortcut <kbd>CTRL</kbd> + <kbd>O</kbd>) | ||
|
||
## Tools | ||
Lorien provides you with different tools which you can find in the toolbar. If you want to enable a tool all you have to do is click on it or use the keyboard shortcut. If you hover over the icons you can also see a short description including the keyboard shortcut. | ||
|
||
### Brush Tool | ||
- The brush tool is selected by default. It allows you to freely draw on the canvas with your mouse or drawing tablet. | ||
- You can change the brush size with the adjuster in the toolbar | ||
- The brush color can be changed by clicking on the colored button in the toolbar next to the brush size adjuster | ||
- It is pressure sensitve | ||
|
||
### Rectangle Tool | ||
- You can use the rectangle tool to create perfect (unfilled) rectagles | ||
- Not pressure sensitive | ||
|
||
### Line Tool | ||
- Allows you to draw perfect lines | ||
- You can hold down <kbd>Shift</kbd> while using the line tool to snap the line in 15° increments | ||
- Not pressure sensitve | ||
|
||
### Circle Tool | ||
- Allows you to draw perfect ellipses and circles | ||
- You can hold down <kbd>Shift</kbd> while using the circle tool to draw perfect circles. Otherwise it defaults to ellipses | ||
- Not pressure sensitve | ||
|
||
### Eraser Tool | ||
- Allows you to erease brush strokes by drawing over it. Once the eraser intersects with a brush stroke, the whole brush stroke will be removed | ||
- The brush size affects the area of effect | ||
- When using a stylus/pen that supports erasing with the other side, Lorien automatically switches into the eraser mode | ||
|
||
### Selection Tool | ||
- With the Selection tool you can select a number of brush strokes by dragging across the screen with your <kbd>LMB</kbd> pressed. Brush strokes which are considered inside the selection recatangle will be added to the current selection. You can add more strokes to your current selection by holding down <kbd>Shift</kbd> while dragging. | ||
- You can deselect your current selection by pressing <kbd>RMB</kbd> or <kbd>Esc</kbd>. | ||
- To move the selected strokes simply drag them while holding down <kbd>LMB</kbd>. If you did not move your mouse while pressing <kbd>LMB</kbd>, everything will be deselected automatically. | ||
- Press <kbd>Delete</kbd> to delete the current selection | ||
- Press <kbd>CTRL</kbd> + <kbd>C</kbd> to copy the current selection | ||
- Press <kbd>CTRL</kbd> + <kbd>V</kbd> to paste the copied brush strokes | ||
- Press <kbd>CTRL</kbd> + <kbd>D</kbd> to duplicate the current selection | ||
|
||
## Color Palettes | ||
- Color palettes allow you to easily switch between different pre-defined colors. To open the pallete you have to click on the colored button in the toolbar next to the brush size adjsuter. | ||
- You can add/edit/delete custom color palettes | ||
- The default color palette can't be edited or deleted. If you want to customize it you can can make a copy of it and edit that instead. | ||
|
||
## Keyboard shortcuts | ||
- <kbd>Ctrl</kbd> + <kbd>S</kbd>: Saves the current file | ||
- <kbd>Ctrl</kbd> + <kbd>N</kbd>: Open a new file | ||
- <kbd>Ctrl</kbd> + <kbd>O</kbd>: Open a new empty tab | ||
- <kbd>Ctrl</kbd> + <kbd>E</kbd>: Opens the SVG export dialog | ||
- <kbd>Ctrl</kbd> + <kbd>Z</kbd>: Undo a brush stroke | ||
- <kbd>Ctrl</kbd> + <kbd>Y</kbd>: Redo a brush stroke | ||
- <kbd>Ctrl</kbd> + <kbd>C</kbd>: Copy selected brush strokes | ||
- <kbd>Ctrl</kbd> + <kbd>V</kbd>: Paste copied brush strokes | ||
- <kbd>Ctrl</kbd> + <kbd>D</kbd>: Duplicate selected brush strokes | ||
- <kbd>B</kbd>: Brush tool | ||
- <kbd>R</kbd>: Rectangle tool | ||
- <kbd>E</kbd>: Eraser tool | ||
- <kbd>L</kbd>: Line tool | ||
- <kbd>C</kbd>: Circle tool | ||
- <kbd>S</kbd>: Selection tool | ||
- <kbd>Esc</kbd> or <kbd>RMB</kbd>: Deselect everything | ||
- <kbd>Delete</kbd>: Deletes selected brush strokes | ||
- <kbd>Tab</kbd>: enter/exit distraction free mode (no UI) | ||
- <kbd>F12</kbd>: Spwans a playable character at the mouse position who can walk on the drawn lines (easteregg) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,63 +1,3 @@ | ||
# Roadmap | ||
|
||
This file provides an overview of the direction this project is heading. There is no timeline attached to milestones, because i don't know much i'm going to work on this in the future and how much people are willing to help. | ||
|
||
## Milestone 1 - Basic functionality and stability | ||
There are still a lot of placeholders in the program. While i did my best to implement as much features as possible before i made the project public, there is still a lot to do. This is a list of features which i would expect from a program like this (and which are not implemented yet): | ||
|
||
- Basic shape tools (rectangle, line, maybe a circle/oval) | ||
- Color picker tool (picks colors from brush strokes on the canvas) | ||
- Persist last opened projects, so you don't have to reopen files between program restarts | ||
- Different themes (at least 1 dark and 1 light theme) | ||
- Cleanup UI | ||
- More settings (max zoom level, zoom speed, min/max brush size etc.) | ||
- Improvements to project tabs (currently custom ui; maybe replace with Godot's `Tabs` to take advantage of scrolling and reordering) | ||
- Improve the brush stroke filter and optimizer | ||
- Improve zooming | ||
- `Save as` functionality | ||
- Stability across all platforms + bugfixing | ||
- Stabilize savefile format (can still change later (before 1.0) but hopefully not as much) | ||
- Improve the logo. I'm actually pretty proud of myself for the current logo, but i'm sure it can be improved. It's supposed to be a leaf by the way ;) | ||
- Maybe setup unit tests? I have never done that in Godot, but it's worth checking out early on in the project | ||
- i18n | ||
- etc. | ||
|
||
## Milestone 2 - Improve rendering & performance | ||
|
||
### The problem | ||
For the first iteration of the project i used Godot's built-in Line2D to render the brush stokes. Because of this built-in functionality i had a working prototype ready in less then a day. Line2D basically has everything i need: | ||
|
||
- Renders lines of (almost) arbitrary length | ||
- Variable width through the use of a Curve (useful for pressure sensitivity) | ||
- Different colors | ||
- Can do anti-aliasing (not ideal though; more on this later) | ||
- Can leverage Godot's 2D batch rendering system for performance | ||
|
||
But there are also some issues: | ||
- Out of the 2 anti-aliasing methods provided none work perfectly: | ||
1. Line2D's `antialiased` property uses an OpenGL hint to draw smooth edges. OpenGL drivers are not required to implement hints, and in fact most don't, so it may work on my machine but not on yours. If it works, it looks really nice, but it's also pretty slow compared to the other method. | ||
|
||
2. Line2D has the ability to fill the rendered line with a texture. If you make a texture in a way that the edges have very low opacity, you can fake anti-aliasing. This is pretty fast and works on every system, but it looks kind of bad when you zoom in really far. This can maybe worked around with by switching between different textures based on the camera zoom level, but it's not ideal either. | ||
|
||
- Using Line2D's `width_curve` for drawing pressure sensitive lines is kind of wonky (the line literally wobbles when it's very long (only while still drawing; i.e. adding points)) | ||
|
||
### Solution 1: GDNative plugin or custom module | ||
Implement a custom system for: | ||
- Line meshing (can reuse a modified version of Godot's LineBuilder which is used internally by Line2D). This should fix the `width_curve` wonkiness. | ||
- Line rendering with custom static batching; also use the VisualServer directly (should improve performance by a lot) | ||
- Anti aliasing. Have to research different AA algorithms and see how feasable it is to implement them in Godot | ||
- Streaming brush strokes in/out based on view frustrum insead of keeping Line2D nodes in scene tree? | ||
|
||
### Solution 2: ? | ||
Something simpler than going native would be nice. | ||
|
||
|
||
## Milestone 3 - More features (all optional) | ||
- Implement a selection tool to select and move multiples strokes. | ||
- Implement a brush stabilizer (can optionally be enabled for the brush tool) | ||
- Color palettes / list of previously used colors | ||
- Export functionality (png, jpg, svg) | ||
- A grid | ||
- Layers (pretty sure i'm NOT going to implement this, because you don't even have opacity (by design) and you can just create a new `.lorien` file instead) | ||
- A ruler | ||
- etc. | ||
The old roadmap is for the most part implemented or obsolete. So this needs to be updated at some point :) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.