iPhone OpenGL ES 3D “exploration”

Zur Realisierung einer “erlaufbaren” 3D-“Welt” wurde auf dem iPhone die OpenGL ES-API verwendet. Die Objekte werden zunächst sehr einfach als header-files importiert, welche das Modell in Form dreier Datenarrays enthalten. Hier sind über Vertexe, Faces und Normalen die verschiedenen zusammenhängenden Polygone definiert.

Da komplexere Modelle nicht mehr mit der Hand erzeugt werden können, bedient man sich hierbei eines 3D-Modellers, wie zum Beispiel Blender 3D. Zusätzlich gibt es ein Python-Script von Jeff Lamarche, mit welchem aus Blender komplette Modelle im wavefront.obj-Format direkt als iPhone-Header-Datei exportiert werden können.

Die Idee war die Modellierung eines virtuellen Stonehenge, beispielhaft für eine zu erkundende Umgebung. Die Erkundung erfolgt durch Anpassung der Kameraperspektive und der Modellausrichtung. Hierzu werden entweder der Kompaß des Telefons und/oder Touch-Events auf dem Display des Telefons verwendet.

Als weitere Ausbaustufe wäre die Maßstabsgetreue Modellierung eines echten Objektes denkbar, welches dann mittels GPS grundsätzlich lokalisiert und mit zusätzlichen Telefonbewegungen oder Touch-Events weiter erkunden werden könnte. Mit einem transparenten Hintergrund und einem aktuellen Kamerabild landet man dann schnell bei der Idee von “agmented reality”.

Das Projekt selber wurde mit dem Status der lauffähigen Erkundung in 3D eingefroren und zur Bewertung freigegeben. Die Weiterentwicklung wird sicherlich an diversen Abenden privat erfolgen…….. 🙂

m+h

Hello iPhone

Eines vorweg: Ja, um eigene Software auf einem nicht gehackten iPhone/iPod touch/iPad laufen zu lassen, muss man registrierter Apple-Developer sein und mindestens $99 pro Jahr bezahlen. Über Sinn und Unsinn dieser Verfahrenweise soll es in diesem Eintrag nicht gehen…

Bevor es losgehen kann, muss die Entwicklungsumgebung installiert werden. Diese nennt sich XCode und ist kostenlos erhältlich. Eigentlich bekommt man mit XCode nicht nur eine IDE, sondern gleich für sämtliche Entwicklungsarbeit ein Komplettpaket – ob für OS X oder iPhone, mit Kompiler, Bibliotheken, allem. Einfach das Rundrum-Sorglospaket. Herunterzuladen gibt es das Paket im iOS-DeveloperPortal unter: http://developer.apple.com/devcenter/ios/index.action.

Die Größe des Paketes (derzeit 2.9Gb) läßt schon erahnen, dass man nach der Installion nicht mehr viel brauchen kann. In der Tat, ist man sofort und ohne jegliche Konfiguration vollständig einsatzbereit. Wer ersteinmal Geld sparen und spielen will, der kann trotzdem loslegen und einfach im mitgelieferten iPhone-Simulator entwickeln. Die üblichen Einschränkungen wie bei anderen Simulatoren gelten auch hier: GPS gibt es nicht, Sensoren gibt es nicht. Man kann jedoch beispiesweise ein Schütteln des Gerätes simulieren, das Gerät drehen oder gar multitouch ausprobieren.

Programmiert wird in ObjectiveC, einem C-Klon, welcher für objektorientiertes Programmieren umgebaut wurde. Die Syntax ist auf den ersten Blick grausig, auf den zweiten Blick jedoch durchaus sinnvoll. Besonderer Wert wird darauf gelegt, dass die Entwicklung beschleunigt und vor allem stets kontrolliert erfolgt. Dem Entwickler wird allein durch die Sprachstruktur einerseits viel Verantwortung, andererseits ein hohes Maß an Flexibilität und Kontrolle in die Hand gelegt. Zusammen mit XCode machen die Sprachkonvetionen zum Beispiel zur Deklaration von Argumenten in Methoden gleich richtig Sinn. Eine Garbage-Collection gibt es im Prinzip keine, und so macht man sich zum ersten Mal jenseits der Uni ernsthaft Gedanken über das Leben und Sterben von Objekten. Zugegebenermaßen anfangs etwas gewöhnungsbedürftig, aber da wir für ein mobiles Endgerät entwickeln wollen, ist die Kontrolle über das Speichermanagement durchaus sinnvoll und wichtig.

Hauptanlaufpunkt für den iOS-Developer ist sicherlich die iOS-Reference-Library. Dies ist das absolute Standardwerk von Apple und sehr sauber strukturiert. Neben der kompletten Klassenreferenz finden sich hier allgemeine Themen zur Struktur von Apps, Sample-Code für verschiedene Anwendungen sowie die kompletten Richtlinien zum Design eines User-Interface’. Für Neueinsteiger lohnen sich als erstes folgende Themen: Einführung in Objective-C, Einstieg in die Entwicklung mit XCode und Wir schreiben unser erstes iOS-App.

Wie schon beschrieben, bekommen wir eine ganze Menge an Werkzeugen mitgeliefert, von den 3 absolut unersetzlich sind: Xcode, die Entwicklungsugebung an sich, InterfaceBuilder, ein graphisches Werkzeug zum Bau von Oberflächen und zur Verwaltung der entsprechenden Objekte inkl. Anbindung an den Sourcecode, sowie der iPhone-Simulator. Der Simulator kann derzeit sowohl das iPhone 3GS/4, als auch das iPad simulieren.

Warum man nicht im Gefängnis bleiben will

Der Begriff jailbreak schlug in der iPhone-community ja schon von Beginn an hohe Wellen und so fragt sich auch die durchschnittliche Hausfrau, was es denn damit auf sich hat. Da das Hacken des iPhones in den USA jetzt sogar gesetzlich erlaubt wurde, ist eigentlich die letzte wirkliche Hürde gefallen, die einen von einem jailbreak abhalten könnte. Gut, es gibt ein paar technische Schweinereien in Sachen backup und FirmwareUpdate – Apple muss einen ja nicht unterstützen, machen sie auch nicht – doch sehr kleine aber feine Verbesserungen lassen sich mit einem jailbreak durchaus ohne großen Aufwand für jedermann erreichen. Man muss ja nicht gleich eigene Software schreiben und installieren wollen oder tief unter der Haube in der *nix-Welt des iPhones herumkramen wollen.

Ein sehr simples und dennoch effektives Tool(-paket) steht im Cydia-Store (selbiger ist nach dem erfolgten jailbreak automatisch verfügbar) kostenlos zur Verfügung: sbsettings, sowie diverse Plugins dafür. Eigentlich macht dieses App nichts anderes, als gesammelte shortcuts zu verschiedenen Systemfunktionen in ein kleines, durch eine simple Handbewegung von überall erreichbares Menü, zusammenzufassen. So kann man tatsächlich zum Stromsparen binnen einer Sekunde mal das UMTS ausschalten oder fix das Bluetooth aktivieren, ohne sich erst umständlich durch die Einstellungen klicken zu müssen. Wer noch kein Besitzer eines iPhone4 ist und deshalb gerne mal Strom spart, wird das sehr zu schätzen wissen. Durch ein weiteres Plugin zu diesem Paket, sbtethering, kann ein weiterer Button in das Menü gelügt werden. Fortan ist das Nutzen der iPhone-Internetverbindung über Bluetooth oder USB eine Sache von genau einer Sekunde. Da man seine sowieso bezahlten 300M oder gar 1G sowieso kaum mit deinem Mobiltelefon ausnutzen kann, ist diese Funktion für die Arbeit unterwegs perfekt. Auf einem Mac dauert die Einrichtung 10 Sekunden. Um dann mit dem Rechner ins Netz zu kommen, Bedarf es dann genau 2 Klicks: Auf dem Telefon tethering aktivieren, auf dem Mac direkt über das Bluetooth-Symbol auf Connect to Network klicken. Funktioniert perfekt und hat mich durch den letzten Urlaub gebracht…