Archiv für 22 July 2009


Gelangweilt von Werbung 1

22 July 2009 — 22:57

Von Werbung möchte sich heutzutage ja niemand mehr beeinflussen lassen. Doch Werbung geht heute ein Stückchen weiter als in alten Zeiten und ist intelligenter geworden, denn keine Firma sollte und möchte mehr offensichtlich ihre Produkte verkaufen, denn das würde den potenziellen Konsumenten eher abschrecken. Die neuste Werbestrategie nennt sich Neuromarketing und zielt darauf ab potenzielle Konsumenten unterbewusst zum Kauf eines bestimmten Produktes zu verleiten.

Waschmaschine spannender als Werbung

„Das sagt mir mein Bauchgefühl“ ist oftmals der erste Schritt etwas zu tun ohne genau zu wissen warum man es tut. Man muss es einfach tun. Und manchmal ist die Intuitive Handelnsweise nicht die schlechteste. Und genau das nutzen die neusten Marketingstrategien. Dem Kunden wird durch intelligente Werbung ein bestimmtes Produkt schmackhaft gemacht und er wird sich im Geschäft eher für das unterbewusst gemerkte als ein anderes entscheiden. Diesen Effekt erreicht man Sie z.B. indem in Werbespots der Namen der Marke gleich zu Beginn einblendet wird. Das Problem heutzutage für die Hersteller: Die potenziellen Kunden schalten bei Werbung ihr TV-Gerät lautlos oder gar um, weil sie sich genervt fühlen. Außerdem kommt hinzu, dass Fernsehen immer unpopulärer wird. Dafür gewinnen in den Haushalten Videospiele und Mobile Geräte wie zmb PSP oder iPod/iPhone immer mehr an Bedeutung. An diesem Punkt stelt sich für uns die Frage warum man nicht geziehlt kostenlose Spiele anbittet. Diese wiederum beinhalten indirekte Werbung.

Im zweiten Teil mehr zu den Zahlen aus dem Bereich “in game advertising”

2 Kommentare » | Allgemein

iPhone SDK Mesh COLLADA importieren

19 July 2009 — 17:46

Software:    Maya 2008
COLLADA version 1.4
COLLADA Schema unterstützt alle Features, die modern 3D interactive applications brauchen, einschließen Shader Effekten,  Animation und Physik Simulation.
Step 1.
Installieren und laden COLLADA plug in für Maya
Step 2.
Wechseln alle Face vom Model zu Dreiecken: Mesh -> Triangulate. (OpenGL ES 1.x do not support QUADE draw).
Step 3.
Export Model mit mayaCollada, dann habe ich a dae(digital asset exchange) file.  Eigentlich dea file ist erweitern aus XML File.
Step 4.
Gehen wir zurück zu Xcode und import diesen .dae File into project, öffnen es mit Editor, wir können alle informationen über 3D Model, wie Materialien, Effekte, Geometrie… Ich konzentriere mich auf tag “library geomentry” welche ein Kinder Tag “mesh” hat. Der erste Zeile in diesem Block definiert den Name der Geometrie <geometry id=”pCubeShape1″ name=”pCubeShape1″> dann kommt das wichtige Tag <mesh>, darin gibt es 3 “source” und ein “triangles” Blocks, jede hat ein Array : <float_array id=”pCubeShape1-positions-array” count=”24″> (Position der jede vertex), <float_array id=”pCubeShape1-normals-array” count=”72″>, <source id=”pCubeShape1-map1″ name=”pCubeShape1-map1″>  (texture coordinats) and <p> ( bitte sehen Sie Ps). Das ist alles was wir brauchen ein den einfache Mordel zu importieren.
Step 5.
Danach kann ich analysieren das File mit class NSXMLParser vom SDK. In diesem Beispiel male ich Model Figur ohne Texture, deswegen lese ich nur Positions array und die indices array aus <p> aus.

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
if(qName) {
elementName = qName;
}

if([elementName isEqualToString:@"accessor"]) {
NSString *accessorAtt = [attributeDict valueForKey:@"source"];
if([accessorAtt isEqualToString:@"#pCubeShape1-positions-array"]) {
NSString *sVertextCount = [attributeDict valueForKey:@"count"];
vertexCount = [sVertextCount intValue];
return;
}

else if([accessorAtt isEqualToString:@"#pCubeShape1-map1-array"]) {
NSString *sMapCount = [attributeDict valueForKey:@"count"];
mapCount = [sMapCount intValue];
return;
}
}

else if([elementName isEqualToString:@"triangles"]) {
NSString *sFaceCount = [attributeDict valueForKey:@"count"];
faceCount = [sFaceCount intValue];
return;
}

else if ([elementName isEqualToString:@"float_array"]) {
NSString *relAtt = [attributeDict valueForKey:@"id"];
if([relAtt isEqualToString:@"pCubeShape1-positions-array"]) {
contentProperty = [NSMutableString string];
array_id = id_positions;
NSLog(@”get positions”);

}

else if([relAtt isEqualToString:@"pCubeShape1-normals-array"]) {
contentProperty = [NSMutableString string];
array_id = id_normals;
NSLog(@”get normals”);
}

else if([relAtt isEqualToString:@"pCubeShape1-map1-array"]) {
contentProperty = [NSMutableString string];
array_id = id_maps;
NSLog(@”get maps”);
}
}

else if ([elementName isEqualToString:@"p"]) {
contentProperty = [NSMutableString string];
NSLog(@”get vertex”);
}

else {
contentProperty = nil;
}
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if (qName) {
elementName = qName;
}

if ([elementName isEqualToString:@"float_array"]) {
if(array_id == id_positions) {
msd.sPosition = contentProperty;
NSLog(@”set postion”);
array_id = -1;
}

if(array_id == id_normals) {
msd.sNormal = contentProperty;
NSLog(@”set normals”);
array_id = -1;
}

if(array_id == id_maps) {
msd.sMap = contentProperty;
NSLog(@”set maps”);
array_id = -1;
}
}

else if ([elementName isEqualToString:@"p"]) {
msd.sIndices = contentProperty;
NSLog(@”set vertex”);
}

}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if (contentProperty) {
[contentProperty appendString:string];
}
}

Step 6.
Zum Schluss malen wir Model mit OpenGL ES.

glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, mVertices);

glDrawArrays(GL_TRIANGLES, 0, faceCount*3);

glDisableClientState(GL_VERTEX_ARRAY);

Ps:
<p> beinhaltet Indices, die die Vertexattribute einer Anzahl von Dreiecken beschreiben. Die Indices in einem <p>-Element beziehen sich auf verschiedene Eingaben abhaengig von ihrer Ordnung. Der erste Index in einem <p>-Element bezieht sich auf alle Eingaben mit dem Offset 0. Der zweite Index bezieht sich auf alle Eingaben mit dem Offset 1.
Jede Vertex/Ecke der Dreiecke wird …. Nachdem jede Eingabe benutzt wurde, bezieht sich der naechste Index wieder auf die Eingabe mit Offset 0 und beginnt eine neue Vertex/Ecke.
Die Windungsreihenfolge der produzierten Vertices/Ecken ist entgegen dem Uhrzeigersinn und beschreibt die Vorderseite des jeweiligen Dreiecks.
Wenn die primitives ohne Eckennormalen zusammengestellt sind, dann kann die Anwendung per-primitive …. generieren……

Hier ist ein Beispiel eines <triangle>-Elements dass zwei Dreiecke beschreibt. Es gibt zwei <source>-Elemente, die die Position und die Normalen-Daten enthalten, entsprechend den <input>-Element Bedeutungen. Die <p>-Element Indexwerte geben die Reihenfolge in der die Eingabewerte genutzt werden an:
<mesh>
<source id=”position”/>
<source id=”normal”/>
<vertices id=”verts”>
<input semantic=”POSITION” source=”#position”/>
</vertices>
<triangles count=”2″ material=”Bricks”>
<input semantic=”VERTEX” source=”#verts” offset=”0″/>
<input semantic=”NORMAL” source=”#normal” offset=”1″/>
<p>
0 0 1 3 2 1
0 0 2 1 3 2
</p>
</triangles>
</mesh>

3 Kommentare » | Allgemein

IPhone 4.0 Patente

13 July 2009 — 13:40

Noch nicht lange ist das iPhone 3Gs auf dem Markt schon wird über Neuerungen nachgedacht.

Das iPhone ist ja schon seit Erscheinen Vorreiter der neuesten Funktionen. Und die ersten neuen Patente für das iPhone 4 sind bereits angemeldet. Diesmal geht es um Haptik, Fingererkennung und einen RFID-Leser.
Bei der haptischen Rückmeldung geht es darum, dass das iPhone auch taktil erkundet wird. Der Screen wird an verschiedenen Stellen vibrieren was eine fast schon blinde Bedienung verspricht.
Die Fingererkennung dient, wie es erst den Anschein hat, weniger der Sicherheit, sondern eher nur um die Erkennung der Nutzer-Fingers. Dadurch wird versprochen, dass einzelne Finger unterschiedliche Funktionen nutzen. So erkennt das Gerät, dass z.B. der Zeigefinger für Play und Stopp bedient, der Mittelfinger fürs Vorspulen und der Ringfinger fürs Zurückspulen.

finger_recognition1
RFID-Tags werden mit Informationen zu Preis oder Art des jeweiligen Artikels in Waren gefüttert. Da RFID immer mehr im Alltag eingesetzt werden, könnte diese Funktion eine sehr gute Ergänzung darstellen.

Weitere neue Patente sollen die “Eventbasierte Modi“ sein. Sie sorgt dafür, dass das iPhone sich beim bedienen speziellen Events anpasst. Seien es Wettereinflüsse, Kalendereinträge, Wochentage, bestimmte News oder einfach laute Umgebungspegel. Z.B. wenn man in einer Theatervorstellung sitzt, sollte das Handy nicht klingeln. Im Prinzip erkennt das iPhone diese Situation und wählt das richtige Profil.

iphone-40-event-based-modes
Eine andere neue Möglichkeit wäre die „Userprogrammierte Kommunikationen”. Sie soll automatisch Glückwünsche zur richtigen Zeit an die Person die man eingestellt hat versenden (z.B. Geburtstage).

Ein weiteres Patent liegt auf dem “Systems and methods for intelligent and customizable communications between devices”. Mit ihm kann man bestimmte Leute wissen lassen wann man von Terminen wieder da und erreichbar ist.

Aber wie auch immer das zukünftige iPhone auch aussehen mag: Bis Apple mit allen Neuerungen betriebsbereit ist, dürfte es noch ein Weilchen dauern.

Mehr Informationen:

Next in your iPhone OS: live object identification, face recognition, text filtering, smarter messaging, voice alteration

iPhone 4.0 OS: event based modes, intellingent and scheduled communications

2 Kommentare » | News

Zurück nach oben