Category: Allgemein


Gelangweilt von Werbung 1

22 July 2009 — 10:57 PM

Sorry, this post is not available in English

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”

1 comment » | Allgemein

iPhone SDK mesh COLLADA import

19 July 2009 — 5:46 PM

Software: Maya2008 COLLADA version 1. 4

COLLADA schema supports all the features that modern 3D interactive applications need, including programmable shader effects, animation and physic simulation.

Step 1.

Install and load COLLADA plug in for maya

Step 2.

Change all face of model into triangles: Mesh -> Triangulate. (OpenGL ES 1.x do not support QUADE draw).

Step 3.

Export model with mayaCollada, so I have a dae(digital asset exchange) file. In fact dae file is extended from XML file.

Step 4.

Go back to Xcode and import this .dae file into project, Open it with editor, we can find all information about 3D Model, like materials, effects, geometries… I focus my attention on tag ” library geometries” which include a sub tag “mesh”. The first line in this block define name of geometry <geometry id=”pCubeShape1″ name=”pCubeShape1″> then is the important tag <mesh>, in it there are 3 “source” and a “triangles” blocks, each of them include an array: <float_array id=”pCubeShape1-positions-array” count=”24″> (position of each vertex), <float_array id=”pCubeShape1-normals-array” count=”72″>, <source id=”pCubeShape1-map1″ name=”pCubeShape1-map1″>  (texture coordinats) and <p> ( please look at to Ps). They are all what we need to a simple model to iPhone SDK import.

Step 5.

Then I can parse this file with class NSXMLParser from SDK. In this example I draw model shape without texture, so I read out only positions array and the indices array from <p>.

- (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.

At last we can draw our model with OpenGL ES.

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

glDrawArrays(GL_TRIANGLES, 0, faceCount*3);

glDisableClientState(GL_VERTEX_ARRAY);

Ps:
The <p> contains indices that describe the vertex attributes for a number of triangles. The indices in a <p> element refer to different inputs depending on their order. The first index in a <p> element refers to all inputs with an offset of 0. The second index refers to all inputs with an offset of 1.
Each vertex of the triangle is made up of one index into each input. After each input is used, the next index again refers to the inputs with offset of 0 and begins a new vertex.
The winding order of vertices produced is counterclockwise and describes the front side of each triangle.
If the primitives are assembled without vertex normals then the application may generate per-primitive
normals to enable lighting.

Here is an example of a <triangles> element that describes two triangles. There are two <source> elements that contain the position and normal data, according to the <input> element semantics. The <p> element index values indicate the order in which the input values are used:

<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>

Comment » | Allgemein

Mac crashed during coding on iPhone

12 June 2009 — 6:52 PM

At the moment we work on our next production drop. During the coding one of our MACs crashed. It got a grey screen. It was not blue like at Windows. But the result was the same :-)

grey / blue screen on mac

grey / blue screen on mac


blue / gray screen on mac

blue / gray screen on mac

Comment » | Allgemein

Guerilla-Marketing not accepted in Germany

10 June 2009 — 9:02 PM

Guerilla-Marketing is very popular in America. Our Guerilla-Campaign with the slogan “Your Idea in our Vein” on the “marketing+services” exhibition at Frankfurt ended bad for us.

dsc00106

2 comments » | Allgemein

Pigru in development

31 March 2009 — 1:37 PM

After some weeks of work we finished the game assets and programmed the hardest part of the game. The game will be a some different puzzle game. We named it “pigru”

Comment » | Allgemein

Back to top