Skip to content

Commit

Permalink
Readme updates (#13)
Browse files Browse the repository at this point in the history
* adding images

* Update .DS_Store file

* Update README.md

* Update README.md
  • Loading branch information
joachimbbp authored Mar 13, 2024
1 parent 20b6db5 commit 24c93b8
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 13 deletions.
Binary file modified .DS_Store
Binary file not shown.
57 changes: 44 additions & 13 deletions README.md
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
Binary file added readme_assets/dive.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added readme_assets/dive_comp.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added readme_assets/eye.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added readme_assets/horse.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added readme_assets/resolutions.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 24c93b8

Please sign in to comment.