28. April 2024

Studio Game 2 | Woche 4 | Dorian

Mein Hauptziel diese Woche war es, dass das VR Headset sich automatisch übers Heimnetzwerk mit dem Computer verbinden kann, auf dem das Blender Addon läuft. Leider klappt das noch nicht. Dafür klappten andere Sachen und ich habe eine genauere Vorstellung, was ich in der (nicht mehr all zu langen) verbleidenden Zeit noch machen werde. Und jetzt en detail:

Logging auf Android

Der Code, der auf dem VR Headset auf Android laufen soll, teste ich immer zuerst auf dem PC. (Und viel zu selten auf Android.) Bis anhin konnte ich auf Android keine Log-Nachrichten lesen, weil ich einfach printf(…) verwendete. Nach einer Recherche dachte ich, dass es mit __android_log_write klappen könnte, was dann leider nicht funktionierte. Mit einem Mix aus tfm::format, damit ich Logs gleich schreiben kann wie mit printf(…), und Godots print()-Funktion klappt es jetzt aber:

template<typename... Args>void LOG(std::string str) { // cannot see printf in logcat, so using this instead godot::UtilityFunctions::print(godot::String(str.c_str())); } template<typename... Args> void LOG(const char* fmt, const Args&... args) { auto str = tfm::format(fmt, args...); LOG(str); }
Ich habe keine Ahnung, wie C++ Templates funktionieren. Allgemein bin ich mit C++ überfordert. Ich hatte gedacht, ich würde für dieses Projekt Rust benutzen können.

Kommunikation VR Headset <-> PC

Zuerst dachte ich, ich könnte mit dem ifconfig Befehl auf Android herausfinden, was die Broadcast-Adresse des Netzwerks ist, in dem sich das Headset befindet. Wenn ich den Befehl auf dem Gerät mit ADB ausführe, klappt das. Aber wenn ich den Befehl dann mit Code ausführen möchte, wird mir leider die Permission denied:

ifconfig: No file /proc/net/dev: Permisson denied
Schade. 🙁 Aber macht eigentlich noch Sinn.

Ich konnte schlussendlich mit getifaddrs die Broadcast-Adresse berechnen. Leider hat das anpingen aller Geräte noch nicht funktioniert.

content-length: 0

Diese Woche funktionierte plötzlich das Laden der GLTF-Datei nicht mehr. Es hat sich herausgestellt, dass das Problem war, dass ich keinen Content-length Header gesetzt habe, wenn sich die Godot-Szene die Datei vom Blender-Addon herunterlädt. Das zu debuggen war ein wenig mühsam. Jetzt klappt’s wieder. 🙂

Objekteinstellungen

Im Blender-Addon kann man nun die Farbe eines Objekts bestimmen:

Die Farbe wird dann als Custom Property in Blender gespeichert und im GLTF mitexportiert:

Dieses System soll dann das Grundprinzip für alle möglichen Einstellungen eines Objektes sein. (Ob man es greifen kann, zum Beispiel.)

Interview

Ich habe ein Interview mit einer Mitstudentin geführt. Juhuii! Sie kennt sich mit Blender aus, kann/will nicht gut programmieren und mag UIs. Das Programm Adobe Aero findet sie sehr. Sie kann damit interaktive AR Experiences gestalten, ohne coden zu müssen. Mein Key Takeaway des Gesprächs ist, dass No Code Tools sehr nice sind. Ich glaube, ich ditche den Javascript-Part für dieses Projekt und fokussiere mich rein darauf, simple Interaktionen ohne Code einzustellen können. (Dann fallen auch ein paar technische Hürden weg. Die wären  sicher lehrreich gewesen, aber ich möchte die nächsten drei Wochen weniger mit technische Sachen struggeln als bisher.)

Allgemeine Stimmung

Ich leide ein wenig darunter, dass ich kaum Erfahrung mit C++ habe und dass Godot’s API nur für GDScript dokumentiert ist. Ich habe auch gemerkt, dass ich strukturierter an meine Probleme herangehen muss: Das Problem mit den Permissions bei ifconfig hätte ich schon viel früher herausfinden können. Stattdessen habe ich zuerst Code geschrieben, der das ifconfig-Resultat verarbeitet, um die Broadcast-IP zu finden, und das nur auf meinem Laptop getestet, anstatt direkt zu überprüfen, ob ich ifconfig überhaupt aus meinem Code ausführen kann.

Ich muss ab jetzt pragmatischer arbeiten. Mein Plan für morgen ist es, einen Plan zu machen.

Beitrag der letzten Woche.

 

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert