Painted World - Engine für 3D Figuren auf vorgerenderten Hintergrundbildern

Inspiriert von Spielen in denen 3D-Charaktere in 2D-Bildern herumlaufen (Spiele mit “Pre-rendered background”) wie beispielsweise Final Fantasy VIII, eine Enginge auf JavaScript-Basis, um solche Spiele für den Webbrowser entwickeln zu können.

Cubemap Creator

Python Script um Sky-Box Image-Maps in rechteckigem Format aus äquirechteckigen Bildern zu generieren, so wie ein Setup für Blender um äquirechteckige Image-Maps zu rendern.

Mit dem Blender-Setup lässt sich aus einer 3D Umgebung ein äquirechteckiges HDRI rendern, wie folgendes:

.. um dieses dann mit dem Python Script in eine Cubemap umzurechnen…

… damit dieses dann in Game Engines wie Verge3D oder Goldsource verwendet werden kann.

ba.pbr.vmt.qc.mdl.exe

This is a tool designed to make it easier to implement 3D models into Valve Software’s Source game engine, better to say, KAFF Softwares port of that engine with support for physically based rendering.
It offers a pipeline to compile .smd 3D mesh data and .png or .tga pixel textures to .mdl with PBR materials by simply draging and droping a 3D model and its set of textures onto the program for it to compile it for the Source Engine.
Here’s what it does:
– Create a PBR texture map from a metallic, a roughness, and an ambient occlusion map
– Wrap VTFCmd.exe to generate Source engine compatible .vtf texture files from images and a .vmt material descriptor file
– Generate model and texture mapping descriptor .qc file, necessary for compilation of 3D model with textures
– Wrap studiomdl.exe to compile Source engine compatible binary .mdl and .phy files from .smd and .qc files among others – the file formats which are expected by the engine

Drag & drop texture images on the tool to generate specific PBR-materials that can be used in the production of the game Boreal Alyph.
The first three added textures will be merged into a single texture map, one texture per color channel (metallic, roughness, ambient occlusion).
For each of these, the tool offers the option for color inversion before merging them.
The tool then asks for an albedo-, normal- and height-texture map, converts everything to .vtf and writes a corresponding .vmt with the use of vtfcmd.exe.
As last step, the tool asks for .smd 3D model files. It then generates a .qc corresponding to the models and textures and then compiles the model .mdl and .phy files (among others) by controlling studiomdl.exe.

Example model used:


A mesh of a wooden pallet with textures for real time physically based rendering and a collision hull mesh.
Blender can export mesh data in .smd format.
So this is what we got as input:


And this is what the tool makes out of it, which is (Boreal Alyph) Source Engine compatible:

Simple Ontologie

Definiere Wahrheit!
Erschaffe eigene Knoten-Netzwerk-Graphen, auch bekannt als Ontologien.


Werkzeug zum erschaffen ontologischer Netzwerktopologien, geschrieben in Java.
Hat die Funktionalität zu speichern und zu laden und Bilder zu exportieren.
Kleinste Alternative zu protégé, ONTOLIS oder OntoStudio.

Hydromatrix Controller

100 virtuelle Fontainen (Blender-Partikelsysteme) in der Mitte eines virtuellen Wasserbeckens werden per Tiefenkarte (schwarz/weiß-Video) in ihrer Höhe gesteuert. Jede Fontaine wird von einer virtuellen RGB-LED (Blender-Spotlights) beleuchtet, welche per Farbkarte (farbiges Video) in ihrer Farbe und Helligkeit gesteuert werden.

Blender wird als Server von einem Clientprogramm, geschrieben in Java, angesteuert, um 3D Animation per Video zu steuern.

Es ergaben sich Schwierigkeiten einen TCP-Server in Blender Python, welcher Parameter sowie Viewport von Blender ansteuert, in einem seperaten Thread von Blenders Python-Runtime stabil laufen zu lassen – der Server “überlastete” schnell.
Das Experiment war also in der Hinsicht erfolgreich, als dass es die Grenzen des mir Möglichen aufwies – Blenders Threading umzuprogrammieren war mir für dieses Experiment nicht möglich.

Interface Toolkit


Mit diesem Interface Toolkit, geschrieben in Java, lassen sich schnell Interfaces bauen mit welchen sich intuitiv Strings kompilieren lassen, z.B. um komplexe Konsolenbefehle zu manipulieren (und auch direkt auszuführen).

Das Interface Toolkit bietet eine Reihe an Elementen wie Listen, Slidern und Schaltern um Zahlen (int oder float) und Zeichenketten in einem einzigen String je nach Zuweisung zu manipulieren.
im devMode lassen sich aus diesen konfigurierbaren Elementen komplexe Oberflächen per Drag and Drop zusammenstellen.
Das Setup wird in XML gespeichert.


Anwendungsbeispiel: Ansteuerung der Einstellungen der Photogrammetrie-Programme OpenMVG und OpenMVG, um je nach Photoqualität die bestmöglichten Resultate nur mit der Maus erzielen zu können.

Video-Faceswap

Gesichtsausdrücke zweier Videos werden verglichen, die Ähnlichsten werden getauscht.
Gesichtseigenschaften aus zwei Videos mit einem Gesicht habe ich mathematisch ausgewertet und die Bilder herausgeschnitten, durch euklidische Distanzberechnung werden die ähnlichsten Gesichtsausdrücke gefunden, in das andere Video hineingeschnitten und farblich korrigiert.
Ähnliches Prinzip wie Deepfake, aber ohne Software zur Errechnung “fehlender” Bilder.

2D Engine

Kleine Engine zur Erstellung von Landschaften aus interaktiven 2D-Animationen.
Klickt man auf eine Animation wird eine alternative Sequenz abgespielt. Kompositionen lassen sich speichern und laden.

Fand Anwendung in einem Workshop in Schwäbisch Gmünd, um Kindern erfolgreich das Zeichnen und Erstellen von interaktiven Animationen beizubringenen.

SMS-Control für Polargraphen

Patch für Polargraph Controlsoftware in Java, um das Gerät per SMS ansteuern zu können.
Projekttitel: “CHALKY”, im Rahmen des Projektes “Helping Hands