Hatshepsut, Queen of Egypt - 1473 BC (Animated character still)

2D and 3D Cut-Out Animation with Blender, Krita, and Armory SDK: The Hatshepsut Project

I wanted to share a project that combines traditional painting, open-source technology, and shader-driven animation — my portrait of Queen Hatshepsut.


Concept

Hatshepsut ruled Egypt in the 14th century BCE and was one of history’s most capable leaders.
She led major trade expeditions to Punt, re-established wealth across the kingdom, and commissioned some of Egypt’s most impressive architecture.
Her reign marked a time of peace, prosperity, and artistic flourishing — so much so that male successors tried to erase her memory from monuments out of insecurity.

This artwork re-imagines her as she likely appeared in life: poised, calculating, dignified, and utterly self-assured.


Pipeline Overview

  • Krita – all painting, texture maps, and design work
  • OCA-Krita / OCA-Blender – My custom version of OCA tools for exporting layered artwork from Krita into Blender with fully compatible animated layer reconstruction.
  • Blender – 2.5D layout, lighting, shadow casting, and shader setup
  • Armory SDK 2025 – final real-time implementation in HTML5/WebGL

So yes, while you’re looking at a finished looking image, that’s a still of the animation and the animation will be real time and played in the browser. So probably my next post will be in ‘Work in Progress’, then in ‘Animations’.

Here’s the details of what else I’ve acheived as part of this project:

Armory R&D

Transparency and Depth Sorting

For correct alpha stacking, I used:

  • Write Depth and Read Depth enabled
  • Lighting disabled for the alpha layers
  • Blending modes tested:
    • Alpha Over – standard SRC_ALPHA / ONE_MINUS_SRC_ALPHA
    • Additive – ONE / ONE
    • Multiply – DEST_COLOR / INV_SRC_ALPHA

Each object has a unique sorting index in Armory’s props.
Long-term, I’m working toward element-based sorting so geometry can be batched while preserving transparency order.


Shader Animation System

Armory lacks direct animation for shader parameters, so I built a hybrid system.

For every object that fades:

  • Two Value nodes in the material:
    • fade_test (runtime value)
    • fade_test_preview (Blender viewport preview)
  • Both are marked Parameter in the Armory tab.
  • A Math: Maximum node ensures preview or runtime can take precedence.
  • A Math: Multiply combines the alpha from the image with the fade value and plugs into the Principled BSDF alpha.

Each object has a control empty named ctrl_<ObjectName>.
Its X-axis movement drives both the Blender preview and the Armory runtime fade.

Blender uses this driver expression for 1:1 timing: (location.x + 1) / 2

Armory reads the same X-position through a Haxe trait (ShaderActions.hx) that updates all uniforms at runtime.

Result: Blender and Armory match perfectly.


Automation and Helper Scripts

Python setup scripts now:

  • Add fade_test and fade_test_preview nodes
  • Set up custom properties and drivers
  • Optionally create control empties per object
  • Handle default blending and parameter flags

This means I can convert any multi-layered 2D character into an interactive 3D scene with minimal manual setup.


Current Results

  • Real-time shader fades verified
  • Accurate alpha layering
  • Full consistency between Blender and browser builds

Next steps include baking the custom property animations for runtime, optimizing shader merging, and testing geometry batching with index-based sorting.

So although the above still is pretty much done, there’s still work to do to get this animating realtime in the browser.


Why this project is worth watching:

This pipeline allows artists to treat Blender like spine of COA — where every Krita paint layer can be animated, lit, and exported for real-time presentation, but with far more freedom, simplicity and flexibility.
The focus is on Armory SDK which means the user never needs to leave Krita and Blender to produce real time web-based experiences.

From acting like an easy to share technical and artistic demo, to being great for generating interactive visual novels, this project should give you all an idea of what is possible using just these applications.

All open-source, all local, and all under the artist’s control.

Happy blending,

-Simon

3 Likes

I featured you on BlenderNation, have a great weekend!

1 Like

@bartv

Cool, thanks for promoting my work. :slightly_smiling_face:

@anon99937392

Could be done with AI?

Yes and no.

Sure, with the right prompts and a bit of paint-over in Krita, you could get something like this using AI — but keeping it on brief still requires real artistic skill.

AI is powerful, but there are solid reasons not to use it in final production:

Ownership: You’ll never fully own AI-made work. It’s legally cleaner if your final pixels are hand-made. There are some exceptions, but generally these require custom set ups, big downloads and beefy computers.

Professionalism: In studios, AI’s fine for pre-production concepts, but final assets need to be original for IP reasons. (Again, unless you are extremly aware about the models you’re using and how the law applies to them)

Perception: People can tell when it’s AI. That can hurt credibility when networking or applying for art roles.

Skill decay: Relying too much on AI dulls your creative edge. This one is the biggest reason for me. If you can use AI but can’t draw, that’s not employable.

So yeah, AI could make something like this — but why would you want it to? I’m far better off having done this myself.

5 Likes

I agree with you here !!

While the results looks a lot like PC game themes, but then the fact that will animate real time inside browser is sorry for the language but insane!! Would love to see the finished browser implementation…

1 Like

Exactly my point, althouh I couldn’t describe it. Im not really english.

Thank you.

1 Like

This means regarding to your other post:

:thinking: :question:

SomeC…

Okidoki, who is a long standing and respected forum member is just trying to find out why you posted a link to your other thread here.

Nothing to get mad over, it looks like you mistakenly linked the other thread from your other conversation with Okidoki.
Who hasn’t made a mistake like that before? Don’t lose sleep over it.

And glad you agree about the AI.

-S

1 Like

Hey guys,

It’s still very much work in progress, but I decided to make public what I’m testing with Armory 3D. It’s not a particularly complicated cut out character, but I will be updating this small real time animation sequence bit by bit.

This was the HTML5 I mentioned that was published from Armory Engine.

You can open and play it on your browser on most devices… although you can see it’s quite slow because I haven’t yet optimised it as of posting.

After I complete the animations I want to make, I’ll move onto optimisation.

-S

1 Like

Hi, I just would like to ask for my own knowledge

Between Krita and Substance Painter which one would you recommend that I should use in future , in terms of practicality :slightly_smiling_face::thinking:

I like the colors BTW really cool.

Fred/K.S

To be quite honest with you, I just use Blender as it is for authoring materials, along with bake wrangler if I have serious baking to do. But if you need dedicated tools there are a few applications to consider. And it depends on your needs.

In terms of free/affordable solutions:

Material Maker is the way to go if you want something that actually allows you to author shaders to Godot Unity and Unreal. Recently it was updated to use the Godot 4’s rendering capabilities.
It has some substance painter like features.
This one has the most features in general.
It’s really like if you wanted both substance designer AND painter in one program.

Armory Paint is the closest thing to substance painter in general, and is fully compatible with blender’s materials. Node based brush system, and there are other useful apps for that dev. It’s ALMOST free… The guy only wants $19 for it.

Lastly if you would like to just adjust Blender to behave a bit more like painter, there’s also this free addon: https://extensions.blender.org/add-ons/ucupaint/

If you need something better, do a search on blender Hive.

And lastly, I would use Krita for texturing and material work the same way I used Photoshop: for adjusting levels… Painting some touch ups. Adding some texturing and maybe some basic vector work.

But yeah I just get by using mostly just Krita Blender and Interchanging with GLtf while having AI handle generation of shaders and scripts and the like in other game engines. I generally don’t need much. It depends on your capabilities and what you require.

EDIT:

Oops I totally misread the question; but yeah similar answer, use the heavy lifter (substance painter in your case) for most tasks and use the photo manipulator/painting program for making small adjustments, tweaks and literally anything else that is easier to do like text, vector art etc.

-S

1 Like

As part of this project I’m working on a way to actually bring all this into spine for this to be a fully commercially viable method of working with other spine artists who DO have a license. (As I don’t)

What that means is that not only could blender artist finally win a spine project contract, they could justify buying a license at that point, OR could make an agreement with one of the artists to send something from Blender and could test it themselves in the spine trial. Even if you don’t own spine, it’s a good look for people who work with spine, it’s the proof is in the pudding mentality.

I’m just very unsure of the licensing thus far, in order to distribute this I may need a spine license myself which is kind of crazy since it’s not for runtime, it just to even the playing field of contract work.

It might be as simple as just making sure users know they need a spine license if they plan on working with Spine’s runtimes. If I figure out the legal shit, I’m hoping that this could end up being a practical way to extend blender artist’s capabilities and no matter their financial state; can earn and compete with spine users.

I even have an importer, which Esoteric are less likely to be happy with.

So yes I have an experimental exporter from Blender to Spine… So far

-Bones exporter correctly oriented,
-meshes show up in the right place with verts
-weights that deform correctly when the bones move.

THERE IS A BUG IN SPINE 4.3.39-beta! So the import currently manually requires you to try and move each vert of the each object you import… But aside from that it’s working for bones mesh and weights.

I never thought I’d get this far.

I’ll see how I go adding animation support.
Then perhaps I focus on drivers and stuff.

EDIT:

I got a BUNCH of extra stuff working and you can test it here:

You can support me in doing more useful stuff like this:

-S

1 Like