-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* adding images * Update .DS_Store file * Update README.md * Update README.md
- Loading branch information
1 parent
20b6db5
commit 24c93b8
Showing
7 changed files
with
44 additions
and
13 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,21 +1,52 @@ | ||
# SpriteFire | ||
## Usage | ||
Output is UHD. Input must be a 1280x720 png sequence. | ||
# Readme | ||
![A mosaic right out of spritefire](readme_assets/dive.png) | ||
|
||
User must set their own paths in util/path. Current source path is set to an example video. | ||
Spritefire is a program which converts image sequences into a mosaic of sprites. It does this by matching each “tile” with the sprite that has the closest color. By default, those sprites are Noto emojis (found in the asset folder) but you could build your own library of sprites if you wish. | ||
|
||
The size of the sprite can be set in main as an index for the following possible resolutions: | ||
{120, 80, 60, 48, 40, 30, 24, 16, 15, 12} | ||
![Taking advantage of the alpha channel to do some cool compositing](readme_assets/eye.png) | ||
Spritefire exports .png files with an alpha layer, allowing for more possibilities when compositing. | ||
|
||
Database and resized sprites must be generated before creating mosaic. | ||
## Resolution Requirements | ||
- Output is 3840x2160 .png sequence | ||
- Input must be a 1280x720 .png sequence | ||
- If you are generating your own custom sprites, we recommend 512x512 .png files. Please note “blanktile” is a keyword and cannot be used as a sprite name. | ||
|
||
## Best Practices | ||
The project works best on smaller sequences and while running from a compiled file. I reccomend compiling | ||
## Testing the Program | ||
- To test the project on your machine, we recommend running a `full_full_offline_test` | ||
|
||
## Using the Program | ||
Sprite resizing and sprite database must be built before using the program. You can do this with the `database` and `resize` argument, respectively. | ||
The user can set their own paths in main or simply add it as an argument when calling `main`: `video <sprite size index> <image sequence path>` | ||
Sprite sizes are as follows: `120, 80, 60, 48, 40, 30, 24, 16, 15, 12` (index 0 being 120, 1 being 80, etc) | ||
You can also generate video for multiple sprite resolutions with `batch_res <image sequence path>`. This is currently set to all possible resolutions in the `main` | ||
![All possible resolutions with spritefire](readme_assets/resolutions.jpg) | ||
|
||
|
||
## Sprites | ||
Project has been tested with the google noto emoji pack as the sprites. These can be found in the asset folder. | ||
You can also create your own sprites. However "blanktile" is a keyword and cannot be used as a sprite name | ||
## Best Practices | ||
The program is most stable on smaller clips, after being compiled, so we recommend compiling before using. | ||
The transparent pixels in our emojis are red as just black, so darker areas in source images will result in more transparent mosaics. | ||
The program also will read alpha channels from source images | ||
|
||
## After Effects Resolution Switcher | ||
The AE file included provides a template for switching quickly between resolutions. You may reporpose it for your liking, but if you wish to generate the exact test footage used, please use the batchRes case in main with batchResIndices := `[]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}.` | ||
The AE file included provides a template for switching quickly between resolutions. It should link automatically to sequences generated with the `full_full_offline_test` | ||
|
||
# Roadmap and To-Do | ||
## Up Next: | ||
- [ ] Use Raylib the sprite resize | ||
- [ ] Use a Goroutine the database creation | ||
- [ ] Better Continuous Integration, hopefully one that can handle | ||
- [ ] Fix issue where it crashes after large resolution batches | ||
- [ ] Don't open the raylib window each time (perhaps just once and keep it open) | ||
- [ ] Batch importer/automatic setup for after effects | ||
- [ ] Illustrated readme file with gifs | ||
- [ ] Generate docs | ||
|
||
## Later On: | ||
### Custom Sprites | ||
Takes in a folder of images and pulls out subject specific sprites from them | ||
### Read Sprite Alpha As | ||
Alpha channels in sprites can be read as either red, blue, green, luma, or black, so you can composite with different background colors | ||
### GUI | ||
Adjust settings (such as alpha compensation) in a raylib GUI. You should be able to run everything through this new GUI. | ||
### LUT | ||
Match the sprites using a Look Up Table |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.