Can Krita integrate Godot for 3D?

I’m just curious in the plan (link below) there’s mentioned 3D, I also remember some talks about it here, I think it was @tiar (but if not I’m sorry for pinging you ;)) who mentioned wanting to look at it closer, also some notes about instead of implementing all 3D it might be possible to use Blender for this as long as you have it on your computer.

Now I’m wondering, since Godot has 3D capabilities, shares the open source license and there’s a new proposal to build godot as a shared library, would that make it possible (maybe even easier) to implement it for the 3D stuff in Krita?

In general Godot is pretty lightweight, it already builds to win, linux, mac, android, …, code base is not large and most importantly it’s very nicely structured and written, considering the size of blender’s code base and going through it to figure out what’s needed it might be worth the tradeoff, Godot is built with the possibilty to strip features down during the built process to shed what’s not needed.

Instead of creating a robust 3D api in Krita large part of it could go through godot scenes/scripts (these are native to godot and just work) which might make it possible for devs who don’t know krita’s core and/or c++ to help with large part of 3D stuff without a need to tinker with Krita too much and possibly breaking stuff.
Sure some part of Krita’s api would still be needed to make it possible to work with it in plugins if you want to add that but even if not as long as the base commands go through lot of the scene stuff could be handled by a Godot script file.
(Implementing special layers or so in krita I assume is the same work as for any other 3D option so I’m mostly talking about differences)

I know that adding languages, libraries or other stuff has not been popular in Krita’s development over the years for various reasons and I’m not belittleing these in any way. I’m just bringing this up as a topic for discussion if it ever comes to 3D implementations.

I don’t know how much of this is even possible or what are the current plans, as far as I understand the 3D stuff is still quite far away in Krita (unless something changed from the last info I got?).

Note:
Godot’s proposal is fairly new. Technically there was a longer discussion about this in a different proposal and it has been going on for a while this is the first init of any action.
The previous one started with a C# proposal.

Link to krita plan: https://krita.org/en/item/krita-in-2021-and-2022/
Link for godot proposal: Build Godot Engine as a shared library · Issue #4773 · godotengine/godot-proposals · GitHub

EDIT: This all assumes from the note about possible blender introduction that it’s more feasible to add something extra to Krita rather than create it with something like QT.

1 Like

A bit offtopic - There is an interesting painting application called heavypaint made using Godot.

2 Likes

I know about that one, I talked with the dev couple months ago :slight_smile: Surprisingly it’s largely gdscript and some shader I think.

I used Godot a bit but I cannot really think of how it would be useful to integrate in Krita. Theres a Godot plug-in to make importing assets from Krita easier. The other way around doesn’t make much sense in my opinion because, although Godot has a 3D engine, the assets are usually created in another tool (like blender) and then imported into Godot.

1 Like

I like the idea, since Godot has support for OpenGL 2, the windows drivers only give me that version :pensive:

1 Like

I’m not sure what you mean by “importing assets form krita”?

What I’m talking about here is using Godot to do the 3d stuff (rendering, handling models, intercations, …) and pushing it out in Krita as let’s say maybe a special layer or something to display it. Then you basically have a 3d scene in Krita and you can draw on other layers over it and such while if you go to the special layer you would be interacting with the 3d world for example to move camera, models, … around.
I’m not talking about drawing on models directly (texture painting, …) just in case that’s what you meant?

Otherwise I really don’t understand what assets you need from Krita or what has a godot plugin to do with this, please?

Have you tried Clip Studio Paint? CLIP STUDIO PAINT useful features : 3D drawing figures - YouTube

Why I proposed godot (since in other discussion the other options mentioned were Blender and then the last one making the whole thing in QT meaning more work) is that it already offers everything you need the same Blender does but Godot seems to be more lightweight and if the godot’s proposal (work already started on it) gets through it could make hooking up a 3D into Krita easier than the other options (possibly)?

But as I said, I don’t know Krita’s background, or the teams plans or anything else. I just wanted to point this option out in case it gets missed since it’s a new proposal and the devs might not know about it yet.

What I meant was an example for an integration that makes sense. Using Assets created in Krita (like sprites) in Godot (the game engine).

I didn’t work much with the 3D tools in Godot but usually you don’t create the objects in Godot but import them from Blender or something, then place them in the Game’s world.

And I don’t mean that having lightweight 3D capabilities aren’t useful in Krita, just that I think Godot isn’t a good way to get it.

EDIT: Sorry, this got long. Hopefully I at least explained myself better in what direction this could be a useful addition to Krita no matter how it’s eventually integrated (whether through Godot, Blender, or any other way).

Well, in CSP you in general also don’t create new assets, it doesn’t have sculpting and it’s overall capabilities are mostly built on an asset library and using what blender calls modifiers (array, …).

Similar capabilities could be put into Krita through this. Sure to create a new model you open Blender or so but that’s the same with other apps which support this feature.
Having a poseable manequinns and being able to pose them is a lot more important feature for a painting app than to for example sculpt them or animate.

I think it has plenty of good use, there are tons of youtube videos which show professional as well as amateur artists using this workflow.

For clarification, you can create basi primitives in godot directly, the engine itself also gives you an option to create other objects too you just have to code what you want.

But for the needs of a painting app you get everything and more.

As I said it’s an alternative to previously proposed Blender as an option.
I think Godot would eventually work maybe even better considering it was made to be used for programmers, there’s documentation and so on quite solid which would make it hopefully easier to use for people who could contribute to Krita this way eventually too.

So for an example use case:
You grab few primitives, a character or two, pose them, set camera position as you want, some basic lighting and you have a base scene you can paint over, use as a reference anything.
This sounds pretty useful to me and plenty of youtube artists support this by their use of this feature.

Over time obviously more functionality could be added but all the above is possible with Godot (Blender too of course) so Krita’s team wouldn’t need to create everything from scratch. I assume that’s why Blender was originally suggested, to ease the amount of work needed.

I always used Blender to create my references but will check out Godots 3D engine next time. Maybe it’s faster (or less annoying).

I think you’ll be a lot better with Blender for that. Godot has options to work with for game creators, for artists I think Blender’s workflow will be better for you, trust me. I’m mid of working on a plugin which adds more 3D creations tools to my Godot project, all of it is already in Blender.

But again, this proposal is about not about how well you can sculpt and such but about integrating a 3D system into Krita and with the github proposal for godot it could potential cut down a lot of work from Krita team’s side and the result will be identical when it comes to the use case I described above.
It’s a very popular feature of Clip Studio Paint which is a big competitor to Krita.

Then again, I opened this mostly to let the big gods of Krita know about it, the proposal is still mid work, though no one is stopping an active Krita dev from stopping by a pushing it farther with their magic skills :wink: hehe.

I think the best would be if you tried downloading Clip Studio Paint (it’s free, it limits features basically you are unable to save but everything else is there) and gave it a test run. Just having a couple models to pose around and some options to work with overall light makes a really nice workflow, particularly since you can do it in one program in one moment.

As far as I know there’s no Linux version of CSP. And since I mostly draw animals most posing tools are useless for me because they either lack animals or are not rigged correctly. But it’s cool for everyone else.

Jesus Christ !!!
My theory has been validated !!!
If painting softwares were powered by game engines and optimized like video games, they’d run complex processes at a very fast speed !!!

HeavyPaint is a performance monster !!!
It runs so smooth and fast even with my specs !!!

I think it’s more because the program doesn’t have so many features.

The more features you have, the longer the initializing time for the software to be ready for use.
The performance is probably not because it doesn’t have many features.

Very nice words for all Krita developers that are working hard on Krita’s brush engine and all other functionnalities… :cold_sweat:

How is it possible, for someone with absolute zero knowledge of coding to tell such things here?
:face_with_spiral_eyes:

Grum999

1 Like

You can scrap the blame because :

  1. I didn’t mention Krita anywhere and simply stated that if painting programs and by extension any kind
    of software was optimized like video games, they would run very fast even with complex computation use cases.

  2. It’s more like very little knowledge of coding rather than zero. Years ago I did C++ programming at the basics at least and even used Qt. Nothing too elaborate, and just very very small projects.

You and I know perfectly that massive effort has been done and continue to be done for Krita to perform even better everyday. The developers’ hard work is simply too obvious today.

So please, calm yourself a bit. This is not war.

I honestly think that what you say does not make much sense because it is obvious that the more something is optimized, the better it will perform and this applies to both games and programs.

1 Like

You’re right. However, why is it that HeavyPainter is faster than Krita when it comes to complex and huge brush strokes rendering ? HeavyPainter probably received very little optimization compared to Krita or other painting programs. I strongly doubt that the amount of available features impacts drastically the performance. It’s not like these features are all active in realtime and doing anything while you paint.
Now, HeavyPainter was designed using a game engine. It’s not the case with CSP or Photoshop, Krita, or even Corel. And video games are usually designed to use the most out of your hardware to perform well. So, could it be that, because it used frameworks optimized for game development, the algorithms led HP to run faster ? It’s because of this that I believe, that the strategy to optimize your software as if it was a video game, would make it run faster. This would involve using a game engine to design your application.

The fewer functions a program has, the less area to cover to optimize it, it’s like asking why Paint Tool Sai works fast even on very old computers.

Obviously this is because Sai has few features and the developer doesn’t have to deal with other areas.

Video game use a dedicated hardware to run faster, this is not optimization…