sprytile / sprytile Goto Github PK
View Code? Open in Web Editor NEWA Blender add-on for building tile based low-poly scenes with paint/map editor like tools
License: MIT License
A Blender add-on for building tile based low-poly scenes with paint/map editor like tools
License: MIT License
It'd be nice if there was a visual indicator in the 3D view to indicate the current work plane right where you are working.
I imagine a translucent quad placed at the 3D cursor position would be sufficient. It could be sized to match the current grid size to convey that information as well.
Would be nice to have options for always off, always on and on only during view transform.
Like the new shadeless material operator, a way to automate setting a texture so that it uses the correct pixel style settings.
Face creation works fine, but painting does not
Use BGL to draw text showing how many pixels have been moved.
Implementation notes:
Might want to move pixel translation to its own python file.
Use the work axis plane indicator as a cursor to bound the flood fill area.
Help differentiate different grid settings from each other visually by drawing a grid and checker pattern in the tile selection UI.
Figure out a more convenient way to refresh textures.
User confusion when Sprytile panel does not appear when there is nothing selected or the selection is not a mesh.
Probably modify existing object panel for this.
For painting mode, for UV mapping faces that do not exactly fit the tiles. Would fit the UV map within the geometry.
Vertical and horizontal stretch options.
If stretching, reset the paint alignment on the relevant axis to center.
Scale the face to within the UV tile, and then snap UV vertices close to edge.
Tool mode labels are taking up too much space, switch over to using custom icons for the UI.
http://blender.stackexchange.com/questions/32335/how-to-implement-custom-icons-for-my-script-addon
In UV painting, a mode that remembers where users last tile ended, and tries to place next painted tile in the same UV tile at that position if possible.
Similar to photoshop's contiguous mode, a toggle for the fill tool to fill every tile of the same ID, whether it is connected or not.
When in tilepaint mode, the panel tooltips keep appearing.
I suspect this is an issue with the execution of the tool and UI modals. The UI modal being executed after the tool modal might be making blender think it should draw the tooltips.
Instead of just a button to reload images, have a toggle beside it that turns on automatic image reloading.
Mapping faces with planar UV and moving to defined area in texture.
#16 would be beneficial to this workflow
Complication, non regular tiles so can't be addressed like current system
Workflow might be improved if right click to select is passed through the modal tool. Would mean needing another way to exit modal tool with a mouse interaction.
Tilegrid list needs a refactor to accommodate the following:
This will also require a refactor of validate grid list operator.
Currently handling keyboard commands manually in the modal tool. Use the Blender keymap system instead for configurability.
Filtered and mip-mapped textures will have bleeding issues when imported into rendering engines.
Add an option to tile grids to add padding around grids.
https://itch.io/t/72048/suggestion-for-accomodating-bleeding-fix
Currently, face creation axis are limited to world space global aligned axis. Have a mode that allows building in object space.
When picking tiles with the tile picker (alt click), the rotation and transformation data that was used to paint the tile should also be included. Also consider storing the alignment data. Would speed up workflow.
Instead of using built in blender cursors for tool modes, draw custom cursors using the UI modal.
When user transforms tiles (rotation/flip), a preview of the transform should be briefly drawn in the scene view at the mouse position.
Put this in add on preference.
https://itch.io/docs/butler/pushing.html#looking-for-updates
Figure out a better system for painting in front of backfaces, seems to lead too many faces being created.
Better UI zooming, maybe animated and snapping to integer percentages.
Initial zoom level should take into account screen space in region.
Needed ASAP before Ludum Dare.
Would it be possible to add some indication for when no paint mode is active.
Either an "off" button or have all paint mode buttons toggled to off.
It's rather unintuitive to switch into edit mode and see the build button highlighted but not be in build mode.
The github releases have the scripts contained in a directory with the version number appended which, for me, prevents them working with Blender 2.78's "Install Add-on from File..".
If I rename the directory in the zip to just "Sprytile" it installs and works fine.
Eiyeron on the itch forum suggested improvements to the material setup. These should be relatively simple to implement.
In the texture settings, put the Filter Size to its minimum (0.10), it avoids getting weird artifacts around the transparent parts (refer to the first and second image in the linked gallery,
Another idea is toggling the Z-Transparency on, to allow transparent parts to overlap opaque ones without having a visual "hole" in the result (refer to the third and fourth pictures)
Painting mode needs improvements for handling non unit grid faces.
Up/right averaging
Right now, up/right vectors of faces are determined by the edge closest to the up/right vectors of view. A better way might be to collect edges with vectors that are close to the up/right view vectors and average them to determine up/right vector for UV mapping.
Tile alignment
Have a way so face UVs can be aligned to the edges of the tile, useful for when face is smaller than the tile.
Snap to horizontal/vertical edge
Force UV verts to snap to edges for tiling purposes. Probably will introduce UV distortions but that's fine.
Add a way to select faces while in the modal, for easier editing. Should be able to move faces in a way that is pixel snapped. Face deletion would also be good.
Have a dialog that the user presses, which prompts the user select to select the tileset image. Automatically sets up the material and takes care of assigning the texture and settings it up.
A page that's after quick start tutorial, talking about workflow enhancements with Sprytile
First off: damn, this tool is exactly what I've been looking for! Thanks man!
Now for the feature request:
Something that is super handy in tile editors is the ability to randomly select a tile from a group every time a new tile is painted. So for example, you could fill a wall with boring white tiles, then select your "random wall tile group", and every time you a paint a tile it randomly selects one of the "damaged" tiles to easily break up repetitive visuals.
How I envision this working is in the "paint" section, you set up "groups" much like you set up tile sizes. Then when painting, you select either a single tile or a "tile group". If a tile group, when painting each face, it randomly chooses a tile from the group. Additional randomizations could include flipping and rotation as well. Perhaps in the future, each randomization can be given a probability as well, making some tiles much more "rare" when painting than others.
If I can find the time I will happily make a pull request for this if you're interested!
Reliable crashing when trying to place tile on other tiles https://twitter.com/metkis/status/847665430604857349
Make features more discoverable:
https://www.youtube.com/watch?v=Qsiu-zzDYww
Good advice from this GDC talk about open source projects.
This needs to be preceded by general code cleanup to get rid of some smells.
Traceback (most recent call last):
File "C:\Users\Jeiel\AppData\Roaming\Blender Foundation\Blender\2.77\scripts\addons_contrib\sprytile\sprytile_modal.py", line 926, in modal
view_axis = self.find_view_axis(context)
File "C:\Users\Jeiel\AppData\Roaming\Blender Foundation\Blender\2.77\scripts\addons_contrib\sprytile\sprytile_modal.py", line 417, in find_view_axis
view_vector = view3d_utils.region_2d_to_vector_3d(region, rv3d, coord)
File "C:\Installers\Blender277\2.77\scripts\modules\bpy_extras\view3d_utils.py", line 46, in region_2d_to_vector_3d
viewinv = rv3d.view_matrix.inverted()
AttributeError: 'NoneType' object has no attribute 'view_matrix'
Current UIList is a bad hack, needs to be rewritten so it works better
Implementation details:
Important so setting up grids in image editor is more flexible.
Icons for panel:
Cursors for scene view:
Hi,
I noticed that Sprytile is currently licensed under the MIT license. Since Blender's Python API is licensed under the GNU GPL, it requires any derivative works to be licensed under the GPL as well.
See the official FAQ:
What about Add-ons or my Python scripts?
If you share or publish Python scripts – if they use the Blender API calls – have to be made available compliant to the GNU GPL as well.
Thanks, I love this plugin!
A modal tool that allows direct UV manipulation in edit view instead of switching to UV view.
Need better quick start video, as shown by Game From Scratch video. Something short and to the point, less than 10 minutes.
Would ideally have this before Ludum Dare 38
The workflow panel is now empty for me in v0.2.6.
When you use Sprytile's Paint or Build mode on an object in Blender's Edit mode, it changes the affected object's texture to use nearest-neighbour as a side-effect. I believe this is because when Sprytile makes the OpenGL call to change the texture's magnification filter in order to draw the tilemap, that texture is shared by the object shown in the Blender viewport.
This caused me a lot of confusion, because I didn't realise the crisp scaling I was seeing was an (accidental?) consequence of entering Sprytile's Paint/Build mode. I assumed Setup Pixel Texture had done that. So, when I restarted Blender later and reopened the same file, I couldn't figure out why it had blurry smooth texture upscaling again.
Of course, I wanted crisp nearest-neighbour texture upscaling, I just didn't realise I'd gotten it by accident. This wouldn't have affected me if I'd changed my User Preferences and disabled the “Mipmaps” option already.
I'm not sure if there's anything to do here. Possibly there might be some advantage to making an actual feature out of disabling nearest-neighbour upscaling via calling OpenGL directly, because that means you can get crisp nearest-neighbour upscaling, without sacrificing smooth downscaling with mipmaps.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.