godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
89.57k stars 20.4k forks source link

Support vector images #4826

Closed mefihl closed 4 years ago

mefihl commented 8 years ago

It would be very nice to support vector images in godot engines (import svg or swf file).

volzhs commented 8 years ago

swf is too much, IMO.

bojidar-bg commented 8 years ago

@volzhs And it is proprietary as well AFAIK

reduz commented 8 years ago

Godot 3.0 will support 2D meshes, so this should cover it On May 26, 2016 12:33, "volzhs" notifications@github.com wrote:

swf is too much, IMO.

— You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub https://github.com/godotengine/godot/issues/4826#issuecomment-221906861

volzhs commented 8 years ago

@bojidar-bg Some engines supports reading swf. According to this https://en.wikipedia.org/wiki/SWF On May 1, 2008, Adobe dropped its licensing restrictions on the SWF format specifications, as part of the Open Screen Project. But still... too much i think. And there are also many requests for integrating or using other animation tools.

ghost commented 8 years ago

Flash is going down the toilet since HTML5 came out. Nobody uses swf anymore. I think would not only be a waste of time but all that effort could be used for doing something more productive.

Maybe svg?

bojidar-bg commented 8 years ago

I think that it is possible to write an importer for svg using Polygon2D and plugins... hm..

Chatto commented 7 years ago

I upvote svg support. I think scalable vector format support would be excellent, even if it is some basic capacity. There are already Polygon2d, but as far as I know that does not support a bezier curve. A custom svg node shouldn't be that difficult, I may see if I can whip something up. I am writing an app that sort of is a godot frontend that mirrors a web frontend and they both connect to a sailsjs backend with http and sockets. Since svg is supported on the web end, I'd like support for this on the godot end as well. Games like Asteroids used vector objects, and GoDot is not only for Games, but apps as well, don't forget! As far as I am aware, svg is an open format and widely used as a web standard so why not godot?

Chatto commented 7 years ago

Scalable Vector Graphics (SVG) is an XML-based vector image format for two-dimensional graphics with support for interactivity and animation. The SVG specification is an open standard developed by the World Wide Web Consortium (W3C) since 1999. SVG images and their behaviors are defined in XML text files.

reduz commented 7 years ago

no one contributed this, also I think no one found a good library for this?

reduz commented 7 years ago

vector meshes will come for 3.1, so will kick to that milestone instead

djrm commented 7 years ago

This might be fixed now that weh have SVG an SVG importer.

bojidar-bg commented 6 years ago

Indeed, there is an importer for .svg in newest master.

ghost commented 6 years ago

WOW!

insomniacUNDERSCORElemon commented 6 years ago

If the importer converts to .png I don't think this should've been closed. Importing is not the same as natively using (or even import to polygon2D/mesh2D if those supported curves or other SVG features).

Maybe @mefihl wanted this, but it seems like you could just export these from your vector editor instead. The only time it'd be better IMO is if you shipped the .svg with your game and could re-render it whenever the resolution of the game changed, so at very least the baseline resolution was correct.

blurymind commented 6 years ago

@reduz I thought 2d meshes would use a standard image atlas - like spine2d, dragonbones, creature2d and all the others. Are you saying that you are also planning on adding support for resolution independent svg files created in inkscape/other designer software being loaded as the atlas? That could also be useful for making crisp GUIs

Btw loading an SVG instead of a PNG file for an atlas would be AWESOME! I don't think any other software has that. But we absolutely need to be able to load standard image files too. Svg is great for crispy clear cartoon graphics, but it's downside is that it wont work for other artistic styles very well.

vnen commented 6 years ago

TBH I don't think this is gonna happen. SVG spec is huge and importing paths as they are might not be efficient. The SVG files must be constructed in an optimum way (or optimized by some tool) before being useful to a game engine. It's much easier to blit a texture into a mesh than to render lots of polygons to each detail of the image.

Anyway, I think this ticket can remain open. Once 2D meshes are added, we see what to do about it.

reduz commented 6 years ago

converting a SVG to a 2D mesh is perfectly possible, but it's probably not going to work as everyone is intending to, given it still needs to use polygons.

On Wed, Dec 20, 2017 at 4:55 PM, George Marques notifications@github.com wrote:

Reopened #4826 https://github.com/godotengine/godot/issues/4826.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/godotengine/godot/issues/4826#event-1396789629, or mute the thread https://github.com/notifications/unsubscribe-auth/AF-Z23Nfo3lM4uI_bNG4YNz2cu53ATmwks5tCWZHgaJpZM4Inqav .

blurymind commented 6 years ago

It would make more sense if the engine converts the svg to an image file, before using it as an atlas

For the mesh,you would need a way to generate it and author it. There is an addon that can create a single mesh of a single image here: https://godotengine.org/asset-library/asset/75 https://www.youtube.com/watch?v=vuWSVm_vx9c&feature=youtu.be Perhaps use for inspiration?

Please take a look at other game engines with a completed tool for authoring 2d meshes: https://www.assetstore.unity3d.com/en/#!/content/79840

blurymind commented 6 years ago

Unity devs are currently merging this plugin into Unity: https://www.youtube.com/watch?v=xFfX48caSds

It has a great and easy workflow for the entire rigging pipeline! Generate a 2d mesh for each body part in the atlas, edit it, then skin bind the parts to bones, edit weigths, etc- everything!

Alternatively you could ask @ndee85 to get his coa-tools blender addon to export to godot's 2d mesh spec - at least as a starting point. Then later on develop authoring tools for godot- so people wont have to use external ones

Chatto commented 6 years ago

Vector formats for textures should definitely be easier to render and convert than is being suggested. Even support for SVG1.0 or vector/curve/shape would be well worth it and might be extensively used for bringing crisp vector shapes into models. If you are using svg for the right things it would definitely work better than bitmaps and pngs in many cases.

On Dec 20, 2017 2:31 PM, "Todor Imreorov" notifications@github.com wrote:

Unity devs are currently merging this plugin into Unity: https://www.youtube.com/watch?v=xFfX48caSds

It has a great and easy workflow for the entire rigging pipeline!

Alternatively you could ask @ndee85 https://github.com/ndee85 to get his coa-tools blender addon to export to godot's 2d mesh spec

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/godotengine/godot/issues/4826#issuecomment-353174446, or mute the thread https://github.com/notifications/unsubscribe-auth/AA7L02ZNbI092T0bSjxrrHJYHTeaeySlks5tCW6OgaJpZM4Inqav .

poke1024 commented 6 years ago

Unity has commercial assets that import SVG as meshes very nicely (see e.g. https://www.assetstore.unity3d.com/en/#!/content/38258). I think even a minimal subset of SVG supporting paths and flat colors would be immensely useful.

poke1024 commented 6 years ago

For anyone interested, see https://github.com/poke1024/godot_svg_plus

eon-s commented 6 years ago

@poke1024 what is the different with current SVG rasterizer?

poke1024 commented 6 years ago

@eon-s That it's not only a rasterizer, but now gives you the option to import SVGs as tessellated polygons - no more textures and sprites.

BrahRah commented 6 years ago

I've also written this in the SVG workaround issue but: I would LOVE full svg support! I've been waiting for years for a good game engine that supports 2D vector art!!! All my art is vector based and since steve jobs killed flash there has been no alternative. Almost no game engine supports svgs, especially animated ones. There are a lot of flash artists and gamedevs out there that still are looking for an alternative. Vector based games look awesome and are perfectly scalable. 2D Vector sprites can be any size!!! They always look perfect and it reduces a games size very drastically. I really loved flash games and animations. If you combine the visual scripting with a good timeline editor that has an Abobe Flash like feel I can guarantee that you will gain everyone from the flash scene. (which is really huge btw.) I've kind of given up and just convert my art in pngs now but I hate doing this!!!! God damn shitty outdated raster crap!!! If I weren't so poor I'd throw a lot of money at you to implement svg support! Creating assets animating them and implementing code in one software. Those where the times T_T Sry for ranting, I kinda started late, learned a lot of flash pro and had to witness it's decline just when I had learned for a couple of years and was ready to get going.....

Chaosus commented 6 years ago

Kicking to 3.2

menip commented 5 years ago

What is status? Could semi proper svg support added in time for 3.2?

menip commented 5 years ago

Could use https://github.com/poke1024/godot_vector_graphics for when c++11 starts getting added in for Godot 4.0

michaelsjackson commented 4 years ago

Godot 3.0 will support 2D meshes, so this should cover it

Cool, if this can be added to Godot 3.2, as we are close to it now. I mean svg import as 2D meshes.

michaelsjackson commented 4 years ago

Could use https://github.com/poke1024/godot_vector_graphics for when c++11 starts getting added in for Godot 4.0

I could not compile this on my machine, ubuntu 16.04.

michaelsjackson commented 4 years ago

vector meshes will come for 3.1, so will kick to that milestone instead

But only for 3D, not for 2D.

Calinou commented 4 years ago

@michaelsjackson Godot has a 2D mesh implementation since 3.1. It's just that nobody has implemented SVG -> mesh conversion yet (it's not exactly easy, especially when curves are involved).

Also, please keep the conversation on-topic and report issues related to the module on the module's repository :slightly_smiling_face:

michaelsjackson commented 4 years ago

Not sure how the above module implementation works, but it would kind of work, if I could compile it, why not this is imported into godot officially?

volzhs commented 4 years ago

I think it is about imporing swf on editor not for the exported templates, so if it works i guess i can be offical.

michaelsjackson commented 4 years ago

Not swf, only svg.

akien-mga commented 4 years ago

Feature and improvement proposals for the Godot Engine are now being discussed and reviewed in a dedicated Godot Improvement Proposals (GIP) (godotengine/godot-proposals) issue tracker. The GIP tracker has a detailed issue template designed so that proposals include all the relevant information to start a productive discussion and help the community assess the validity of the proposal for the engine.

The main (godotengine/godot) tracker is now solely dedicated to bug reports and Pull Requests, enabling contributors to have a better focus on bug fixing work. Therefore, we are now closing all older feature proposals on the main issue tracker.

If you are interested in this feature proposal, please open a new proposal on the GIP tracker following the given issue template (after checking that it doesn't exist already). Be sure to reference this closed issue if it includes any relevant discussion (which you are also encouraged to summarize in the new proposal). Thanks in advance!