<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Development-Blog von Florian Oeser</title>
	<atom:link href="http://www.florian-oeser.de/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.florian-oeser.de</link>
	<description>&#34;Die Wissenschaft hat keine Heimat, denn das Wissen gehört der Menschheit und ist ein Leuchtturm, der die Welt erhellt.&#34; (Louis Pasteur)</description>
	<lastBuildDate>Mon, 26 Oct 2009 23:07:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Jump! &#8211; Update</title>
		<link>http://www.florian-oeser.de/?p=549</link>
		<comments>http://www.florian-oeser.de/?p=549#comments</comments>
		<pubDate>Mon, 26 Oct 2009 22:59:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Projekte]]></category>
		<category><![CDATA[XNA/D3D/Gamedev]]></category>

		<guid isPermaLink="false">http://www.florian-oeser.de/?p=549</guid>
		<description><![CDATA[<p>Es ist soweit, nach Monaten mal wieder ein Update in Bezug auf die Entwicklung von Jump! Es hat sich einiges getan seit März diesen Jahres. Der wichtigste Punkt ist sicherlich das wir zu drei Testsessions geladen haben um Feedback zu Jump! von den Spielern zu bekommen. Die Anzahl der unterschiedlichen Testern war nicht umwerfend, jedoch war das Feedback quantitativ und qualitativ ausreichend um auf dieser Basis weiterzuentwickeln. Danke auch nochmal an dieser Stelle an alle Tester <img src='http://www.florian-oeser.de/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Weiterhin habe ich auch die <a href="http://www.florian-oeser.de/?page_id=68" target="_blank">Jump!-Seite</a> hier mal ein wenig überarbeitet. Gleiches gilt für die <a href="http://www.florian-oeser.de/?page_id=70" target="_blank">Bildersektion</a>. Im Übrigen hat das Spiel nun auch seit geraumer Zeit eine <a href="http://www.jump-game.de" target="_blank">direkte Homepage</a> auf der es den Download gibt, Informationen zum Spiel und auch ein Forum um uns Bugs und Feedback mitzuteilen.</p>
<p style="text-align: center;"><a title="Jump! offical website" rel="http://www.jump-game.de" href="http://www.jump-game.de" target="_blank"><img class="aligncenter size-full wp-image-546" style="border: 0pt none;" title="jump" src="http://www.florian-oeser.de/wordpress/wp-content/2008/10/jump.png" alt="jump" width="200" height="120" /></a></p>
<p>Während der Testsessions habe ich immer mal wieder ein paar Videos mitgeschnitten. Das Ergebnis gibt es gleich hier zu sehen und kann als &#8220;90 seconds of Catch the Chicken&#8221; deklariert werden, da es lediglich Szenen aus diesem Mode enthält.</p>
<p>In diesem Sinne viel Spass beim Schauen <img src='http://www.florian-oeser.de/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><script src="/wordpress/wp-content/plugins/fw-player/swfobject.js" type="text/javascript"></script></p>
<div id="player3">This text will be replaced</div>
<p><script type="text/javascript"><!--
var so = new SWFObject('/wordpress/wp-content/plugins/fw-player/player.swf','mpl','470','320','9');
so.addParam('allowscriptaccess','always');
so.addParam('allowfullscreen','true');
so.addParam('flashvars','&#038;file=http://www.florian-oeser.de/wordpress/wp-content/2009/10/90secondsCTC.flv');
so.write('player3');
// --></script></p>
]]></description>
			<content:encoded><![CDATA[<p>Es ist soweit, nach Monaten mal wieder ein Update in Bezug auf die Entwicklung von Jump! Es hat sich einiges getan seit März diesen Jahres. Der wichtigste Punkt ist sicherlich das wir zu drei Testsessions geladen haben um Feedback zu Jump! von den Spielern zu bekommen. Die Anzahl der unterschiedlichen Testern war nicht umwerfend, jedoch war das Feedback quantitativ und qualitativ ausreichend um auf dieser Basis weiterzuentwickeln. Danke auch nochmal an dieser Stelle an alle Tester <img src='http://www.florian-oeser.de/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Weiterhin habe ich auch die <a href="http://www.florian-oeser.de/?page_id=68" target="_blank">Jump!-Seite</a> hier mal ein wenig überarbeitet. Gleiches gilt für die <a href="http://www.florian-oeser.de/?page_id=70" target="_blank">Bildersektion</a>. Im Übrigen hat das Spiel nun auch seit geraumer Zeit eine <a href="http://www.jump-game.de" target="_blank">direkte Homepage</a> auf der es den Download gibt, Informationen zum Spiel und auch ein Forum um uns Bugs und Feedback mitzuteilen.</p>
<p style="text-align: center;"><a title="Jump! offical website" rel="http://www.jump-game.de" href="http://www.jump-game.de" target="_blank"><img class="aligncenter size-full wp-image-546" style="border: 0pt none;" title="jump" src="http://www.florian-oeser.de/wordpress/wp-content/2008/10/jump.png" alt="jump" width="200" height="120" /></a></p>
<p>Während der Testsessions habe ich immer mal wieder ein paar Videos mitgeschnitten. Das Ergebnis gibt es gleich hier zu sehen und kann als &#8220;90 seconds of Catch the Chicken&#8221; deklariert werden, da es lediglich Szenen aus diesem Mode enthält.</p>
<p>In diesem Sinne viel Spass beim Schauen <img src='http://www.florian-oeser.de/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><script src="/wordpress/wp-content/plugins/fw-player/swfobject.js" type="text/javascript"></script></p>
<div id="player3">This text will be replaced</div>
<p><script type="text/javascript"><!--
var so = new SWFObject('/wordpress/wp-content/plugins/fw-player/player.swf','mpl','470','320','9');
so.addParam('allowscriptaccess','always');
so.addParam('allowfullscreen','true');
so.addParam('flashvars','&#038;file=http://www.florian-oeser.de/wordpress/wp-content/2009/10/90secondsCTC.flv');
so.write('player3');
// --></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.florian-oeser.de/?feed=rss2&amp;p=549</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>simple RayTracer Part 2 (Refraction+NormalMapping)</title>
		<link>http://www.florian-oeser.de/?p=407</link>
		<comments>http://www.florian-oeser.de/?p=407#comments</comments>
		<pubDate>Tue, 23 Jun 2009 19:02:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Projekte]]></category>

		<guid isPermaLink="false">http://www.florian-oeser.de/?p=407</guid>
		<description><![CDATA[<p>Es ist soweit. Heute möchte ich den vorerst letzten Part des Raytracers vorstellen und veröffentlichen. Nachdem mit <a href="http://www.florian-oeser.de/?p=343" target="_blank">Part 1</a> der Grundstein gelegt wurde hier nun erst einmal die Änderungen und Erweiterungen auf einem Blick:</p>
<ul>
<li>Texturen auch für Spheren</li>
<li>NormalMapping</li>
<li>Refraction</li>
<li>einige Bugfixes</li>
<li>Performanceoptimierungen</li>
</ul>
<p>Zunächst möchte ich zwei Bilder zeigen, welche den aktuellen Stand repräsentieren, bevor ich dann einzelne Punkte noch einmal kurz aufgreifen werde. Beide Bilder zeigen das Phong-Model mit Reflection und Refraction kombiniert mit NormalMapping.<br />
<a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/image1.JPG" rel="lightbox[407]"><img class="alignleft size-medium wp-image-411" title="Phong+Refraction+NormalMapping" src="http://www.florian-oeser.de/wordpress/wp-content/2009/06/image1-300x300.jpg" alt="Phong+Refraction+NormalMapping" width="270" height="270" /></a><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/image.JPG" rel="lightbox[407]"><img class="alignright size-medium wp-image-409" title="Phong+Reflection+Refraction+NormalMapping+SphereTextures" src="http://www.florian-oeser.de/wordpress/wp-content/2009/06/image-300x300.jpg" alt="Phong+Reflection+Refraction+NormalMapping+SphereTextures" width="270" height="270" /></a></p>
<p style="clear:both">
<h4>NormalMapping</h4>
<p>Das NormalMapping in diesem Raytracer unterscheidet sich vom gewohnten NormalMapping aus der 3D-RealTime Grafik in zwei Punkten. Zunächst ist der RayTracer statisch, sprich es gibt keine bewegten Lichtquellen bzw. Objekte. NormalMapping kommt erst dabei richtig zum Tragen bzw. entfaltet so eigentlich erst seine sichtbare Wirkung. Aus diesem Grund kann man den Effekt nur deutlich machen indem man zwei an sich identische Bilder direkt miteinander vergleicht.<br />
<a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/with_wall.bmp" rel="lightbox[407]"><img class="alignleft size-medium wp-image-418" title="NormalMapping on plane texture" src="http://www.florian-oeser.de/wordpress/wp-content/2009/06/with_wall-300x300.bmp" alt="NormalMapping on plane texture" width="270" height="270" /></a><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/without_wall.bmp" rel="lightbox[407]"><img class="alignright size-medium wp-image-419" title="normal diffuse texture map on plane (no normal texture)" src="http://www.florian-oeser.de/wordpress/wp-content/2009/06/without_wall-300x300.bmp" alt="normal diffuse texture map on plane (no normal texture)" width="270" height="270" /></a><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/with.JPG" rel="lightbox[407]"><img class="alignleft size-medium wp-image-421" title="NormalMapping on plane; specular highlight (directional light)" src="http://www.florian-oeser.de/wordpress/wp-content/2009/06/with-300x300.jpg" alt="NormalMapping on plane; specular highlight (directional light)" width="270" height="270" /></a><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/without.JPG" rel="lightbox[407]"><img class="alignright size-medium wp-image-422" title="normal texture mapping without NormalMapping" src="http://www.florian-oeser.de/wordpress/wp-content/2009/06/without-300x300.jpg" alt="normal texture mapping without NormalMapping" width="270" height="270" /></a></p>
<div style="text-align:center;"><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/spec.JPG" rel="lightbox[407]"><img class="aligncenter size-medium wp-image-423" title="Specular highlight through directional light and a normal map" src="http://www.florian-oeser.de/wordpress/wp-content/2009/06/spec-300x300.jpg" alt="Specular highlight through directional light and a normal map" width="270" height="270" /></a></div>
<p>Weiterhin sind für das NormalMapping in dem Raytracer keine Object- oder Tangentspace Berechnungen notwendig sondern lediglich die Berechnungen des Normalenvektors aus der NormalMap. Das sind dann üblicherweise so bzw. so ähnlich aus:</p>
<pre class="brush: cpp;">
color normal = normalMap.getTexelBilinear( u, v, distance );
double x = (normal.add(color(-1,0,0))).mult(2.0f).r;
double y = (normal.add(color(0,-1,0))).mult(2.0f).g;
double z = (normal.add(color(0,0,-1))).mult(2.0f).b;
</pre>
<p>Dieser Normalenvektor ersetzt dann einfach, bei der Diffuseberechnung, den Normalenvektor der an dem Schnittpunkt des Rays mit der Plane bzw. Sphere errechnet wurden wäre.</p>
<h4>Refraction</h4>
<p>Bei der Berechnung von Refraction (Lichtbrechung) habe ich mich auf das hervorragende <a href="http://www.flipcode.org/archives/Raytracing_Topics_Techniques-Part_3_Refractions_and_Beers_Law.shtml" target="_blank">Tutorial</a> von <span style="color: #ffe291;"><span style="font-size: x-small;"><span style="color: #000000;">Jacco Bikker</span></span></span> gestützt. Hier nocheinmal ein Bild vom Anfang:</p>
<div style="text-align:center;"><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/image1.JPG" rel="lightbox[407]"><img class="aligncenter size-medium wp-image-411" title="Phong+Refraction+NormalMapping" src="http://www.florian-oeser.de/wordpress/wp-content/2009/06/image1-300x300.jpg" alt="Phong+Refraction+NormalMapping" width="270" height="270" /></a></div>
<p style="clear:both">
<p>Man kann deutlich einen unterschiedlichen <a href="http://en.wikipedia.org/wiki/Refractive_index" target="_blank">Brechungsindex</a> zwischen der linken, organgen und der rechten, lilanen Sphere erkennen. Der Brechungsindex eines Mediums ist die Angabe wie schnell die Lichtgeschwindigkeit in diesem Medium abnimmt. Sprich das Verhältnis zwischen der Phasengeschwindigkeit des Lichtes im Vakuum und der Phasengeschwindigkeit des Mediums. Die linke Sphere definiert eine Phasengeschwindigkeit von 1.33 welches Wasser bei 20° Celsius entspricht. Folglich verliert das Licht 25% (1/1.33) seiner Geschwindigkeit gegenüber der Geschwindigkeit im Vakuum. Über das <a href="http://en.wikipedia.org/wiki/Snell%27s_law" target="_blank">Snelliussches Brechungsgesetz</a> kann man dann, über die unterschiedlichen Brechungsindizes, die eigentliche Brechung berechnen.<br />
Die rechte, lilane Sphere hat eine Phasengeschwindigkeit von 1.0 und ist folglich derer im Vakuum gleich. Daraus resultiert dann auch das die hintere, gelbe Sphere ohne Brechungen sichtbar ist. Im Übrigen hat die vordere, güne Sphere eine Phasengeschwindigkeit von 1.31 (Eis).<br />
Jetzt noch zwei Bilder aus einer anderen Perspektive, welche nebenbei auch nocheinmal den NormalMapping Effekt gut verdeutlichen:<br />
<a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/with_refraction.bmp" rel="lightbox[407]"><img class="alignleft size-medium wp-image-501" title="refraction with normalmapping" src="http://www.florian-oeser.de/wordpress/wp-content/2009/06/with_refraction-300x300.bmp" alt="refraction with normalmapping" width="270" height="270" /></a><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/without-normal_refraction.bmp" rel="lightbox[407]"><img class="alignright size-medium wp-image-502" title="refraction without normalmapping" src="http://www.florian-oeser.de/wordpress/wp-content/2009/06/without-normal_refraction-300x300.bmp" alt="refraction without normalmapping" width="270" height="270" /></a></p>
<p style="clear:both">
<h4>Performance</h4>
<p>Auch im Bereich der Performance hat sich einiges getan. Dies aber lediglich über Implementierungsoptimierungen und nicht über Beschleunigungsansätze wie beispielsweise ein Spatial Tree. Trotzdem kann sich der Zuwachs sehen lassen. Ein Bild mit sieben texturierten Spheren und entsprechender Plane, bei 1000&#215;1000, sechs Rekursionen für Reflection ist mehr als doppelt so schnell berechnet wie das selbe Bild ohne Texturen für die Spheren. Das ist in der Hinsicht imposant da die Berechnungen der entsprechenden UV-Koordinaten und das eigentliche fetchen des Texels einen nicht unerheblicher Mehraufwand darstellt. Die Optimierung rührt zum Großteil daher das die Materialklassen, welche relativ viel Speicher durch die Texturen in Anspruch nehmen, nun als Pointer gehandelt werden und so nicht jedes mal auf dem Stack hin und her kopiert werden müssen.</p>
<h4>Download</h4>
<p>Hier nun der Download. Zum einen ein reiner Release-Build und weiterhin der komplette Source (VS bzw. VC++Express Solution). Das .NET 2.0 Framework wird vorrausgesetzt.</p>
<p><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/Release.rar">Release</a> (.rar, 3.3MB)<br />
<a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/sGUIRayTracer.rar">sGUIRayTracer-Solution</a> (.rar, 3.3MB)</p>
<h4>Interessante Links/Quellen</h4>
<p><a href="http://www.flipcode.org/archives/Raytracing_Topics_Techniques-Part_1_Introduction.shtml" target="_blank">Tutorialreihe auf Flipcode (sehr zu empfehlen!)</a></p>
<p><a href="http://www.blacksmith-studios.dk/projects/downloads/bumpmapping_using_cg.php" target="_blank">The math behind NormalMapping</a></p>
<p>Und natürlich all die anderen Tutorials die in Part 1 zu finden sind!</p>
<p><em>Wie immer keine Garantie auf Richtigkeit oder Vollständigkeit!</em></p>
]]></description>
			<content:encoded><![CDATA[<p>Es ist soweit. Heute möchte ich den vorerst letzten Part des Raytracers vorstellen und veröffentlichen. Nachdem mit <a href="http://www.florian-oeser.de/?p=343" target="_blank">Part 1</a> der Grundstein gelegt wurde hier nun erst einmal die Änderungen und Erweiterungen auf einem Blick:</p>
<ul>
<li>Texturen auch für Spheren</li>
<li>NormalMapping</li>
<li>Refraction</li>
<li>einige Bugfixes</li>
<li>Performanceoptimierungen</li>
</ul>
<p>Zunächst möchte ich zwei Bilder zeigen, welche den aktuellen Stand repräsentieren, bevor ich dann einzelne Punkte noch einmal kurz aufgreifen werde. Beide Bilder zeigen das Phong-Model mit Reflection und Refraction kombiniert mit NormalMapping.<br />
<a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/image1.JPG" rel="lightbox[407]"><img class="alignleft size-medium wp-image-411" title="Phong+Refraction+NormalMapping" src="http://www.florian-oeser.de/wordpress/wp-content/2009/06/image1-300x300.jpg" alt="Phong+Refraction+NormalMapping" width="270" height="270" /></a><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/image.JPG" rel="lightbox[407]"><img class="alignright size-medium wp-image-409" title="Phong+Reflection+Refraction+NormalMapping+SphereTextures" src="http://www.florian-oeser.de/wordpress/wp-content/2009/06/image-300x300.jpg" alt="Phong+Reflection+Refraction+NormalMapping+SphereTextures" width="270" height="270" /></a></p>
<p style="clear:both">
<h4>NormalMapping</h4>
<p>Das NormalMapping in diesem Raytracer unterscheidet sich vom gewohnten NormalMapping aus der 3D-RealTime Grafik in zwei Punkten. Zunächst ist der RayTracer statisch, sprich es gibt keine bewegten Lichtquellen bzw. Objekte. NormalMapping kommt erst dabei richtig zum Tragen bzw. entfaltet so eigentlich erst seine sichtbare Wirkung. Aus diesem Grund kann man den Effekt nur deutlich machen indem man zwei an sich identische Bilder direkt miteinander vergleicht.<br />
<a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/with_wall.bmp" rel="lightbox[407]"><img class="alignleft size-medium wp-image-418" title="NormalMapping on plane texture" src="http://www.florian-oeser.de/wordpress/wp-content/2009/06/with_wall-300x300.bmp" alt="NormalMapping on plane texture" width="270" height="270" /></a><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/without_wall.bmp" rel="lightbox[407]"><img class="alignright size-medium wp-image-419" title="normal diffuse texture map on plane (no normal texture)" src="http://www.florian-oeser.de/wordpress/wp-content/2009/06/without_wall-300x300.bmp" alt="normal diffuse texture map on plane (no normal texture)" width="270" height="270" /></a><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/with.JPG" rel="lightbox[407]"><img class="alignleft size-medium wp-image-421" title="NormalMapping on plane; specular highlight (directional light)" src="http://www.florian-oeser.de/wordpress/wp-content/2009/06/with-300x300.jpg" alt="NormalMapping on plane; specular highlight (directional light)" width="270" height="270" /></a><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/without.JPG" rel="lightbox[407]"><img class="alignright size-medium wp-image-422" title="normal texture mapping without NormalMapping" src="http://www.florian-oeser.de/wordpress/wp-content/2009/06/without-300x300.jpg" alt="normal texture mapping without NormalMapping" width="270" height="270" /></a></p>
<div style="text-align:center;"><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/spec.JPG" rel="lightbox[407]"><img class="aligncenter size-medium wp-image-423" title="Specular highlight through directional light and a normal map" src="http://www.florian-oeser.de/wordpress/wp-content/2009/06/spec-300x300.jpg" alt="Specular highlight through directional light and a normal map" width="270" height="270" /></a></div>
<p>Weiterhin sind für das NormalMapping in dem Raytracer keine Object- oder Tangentspace Berechnungen notwendig sondern lediglich die Berechnungen des Normalenvektors aus der NormalMap. Das sind dann üblicherweise so bzw. so ähnlich aus:</p>
<pre class="brush: cpp;">
color normal = normalMap.getTexelBilinear( u, v, distance );
double x = (normal.add(color(-1,0,0))).mult(2.0f).r;
double y = (normal.add(color(0,-1,0))).mult(2.0f).g;
double z = (normal.add(color(0,0,-1))).mult(2.0f).b;
</pre>
<p>Dieser Normalenvektor ersetzt dann einfach, bei der Diffuseberechnung, den Normalenvektor der an dem Schnittpunkt des Rays mit der Plane bzw. Sphere errechnet wurden wäre.</p>
<h4>Refraction</h4>
<p>Bei der Berechnung von Refraction (Lichtbrechung) habe ich mich auf das hervorragende <a href="http://www.flipcode.org/archives/Raytracing_Topics_Techniques-Part_3_Refractions_and_Beers_Law.shtml" target="_blank">Tutorial</a> von <span style="color: #ffe291;"><span style="font-size: x-small;"><span style="color: #000000;">Jacco Bikker</span></span></span> gestützt. Hier nocheinmal ein Bild vom Anfang:</p>
<div style="text-align:center;"><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/image1.JPG" rel="lightbox[407]"><img class="aligncenter size-medium wp-image-411" title="Phong+Refraction+NormalMapping" src="http://www.florian-oeser.de/wordpress/wp-content/2009/06/image1-300x300.jpg" alt="Phong+Refraction+NormalMapping" width="270" height="270" /></a></div>
<p style="clear:both">
<p>Man kann deutlich einen unterschiedlichen <a href="http://en.wikipedia.org/wiki/Refractive_index" target="_blank">Brechungsindex</a> zwischen der linken, organgen und der rechten, lilanen Sphere erkennen. Der Brechungsindex eines Mediums ist die Angabe wie schnell die Lichtgeschwindigkeit in diesem Medium abnimmt. Sprich das Verhältnis zwischen der Phasengeschwindigkeit des Lichtes im Vakuum und der Phasengeschwindigkeit des Mediums. Die linke Sphere definiert eine Phasengeschwindigkeit von 1.33 welches Wasser bei 20° Celsius entspricht. Folglich verliert das Licht 25% (1/1.33) seiner Geschwindigkeit gegenüber der Geschwindigkeit im Vakuum. Über das <a href="http://en.wikipedia.org/wiki/Snell%27s_law" target="_blank">Snelliussches Brechungsgesetz</a> kann man dann, über die unterschiedlichen Brechungsindizes, die eigentliche Brechung berechnen.<br />
Die rechte, lilane Sphere hat eine Phasengeschwindigkeit von 1.0 und ist folglich derer im Vakuum gleich. Daraus resultiert dann auch das die hintere, gelbe Sphere ohne Brechungen sichtbar ist. Im Übrigen hat die vordere, güne Sphere eine Phasengeschwindigkeit von 1.31 (Eis).<br />
Jetzt noch zwei Bilder aus einer anderen Perspektive, welche nebenbei auch nocheinmal den NormalMapping Effekt gut verdeutlichen:<br />
<a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/with_refraction.bmp" rel="lightbox[407]"><img class="alignleft size-medium wp-image-501" title="refraction with normalmapping" src="http://www.florian-oeser.de/wordpress/wp-content/2009/06/with_refraction-300x300.bmp" alt="refraction with normalmapping" width="270" height="270" /></a><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/without-normal_refraction.bmp" rel="lightbox[407]"><img class="alignright size-medium wp-image-502" title="refraction without normalmapping" src="http://www.florian-oeser.de/wordpress/wp-content/2009/06/without-normal_refraction-300x300.bmp" alt="refraction without normalmapping" width="270" height="270" /></a></p>
<p style="clear:both">
<h4>Performance</h4>
<p>Auch im Bereich der Performance hat sich einiges getan. Dies aber lediglich über Implementierungsoptimierungen und nicht über Beschleunigungsansätze wie beispielsweise ein Spatial Tree. Trotzdem kann sich der Zuwachs sehen lassen. Ein Bild mit sieben texturierten Spheren und entsprechender Plane, bei 1000&#215;1000, sechs Rekursionen für Reflection ist mehr als doppelt so schnell berechnet wie das selbe Bild ohne Texturen für die Spheren. Das ist in der Hinsicht imposant da die Berechnungen der entsprechenden UV-Koordinaten und das eigentliche fetchen des Texels einen nicht unerheblicher Mehraufwand darstellt. Die Optimierung rührt zum Großteil daher das die Materialklassen, welche relativ viel Speicher durch die Texturen in Anspruch nehmen, nun als Pointer gehandelt werden und so nicht jedes mal auf dem Stack hin und her kopiert werden müssen.</p>
<h4>Download</h4>
<p>Hier nun der Download. Zum einen ein reiner Release-Build und weiterhin der komplette Source (VS bzw. VC++Express Solution). Das .NET 2.0 Framework wird vorrausgesetzt.</p>
<p><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/Release.rar">Release</a> (.rar, 3.3MB)<br />
<a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/sGUIRayTracer.rar">sGUIRayTracer-Solution</a> (.rar, 3.3MB)</p>
<h4>Interessante Links/Quellen</h4>
<p><a href="http://www.flipcode.org/archives/Raytracing_Topics_Techniques-Part_1_Introduction.shtml" target="_blank">Tutorialreihe auf Flipcode (sehr zu empfehlen!)</a></p>
<p><a href="http://www.blacksmith-studios.dk/projects/downloads/bumpmapping_using_cg.php" target="_blank">The math behind NormalMapping</a></p>
<p>Und natürlich all die anderen Tutorials die in Part 1 zu finden sind!</p>
<p><em>Wie immer keine Garantie auf Richtigkeit oder Vollständigkeit!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.florian-oeser.de/?feed=rss2&amp;p=407</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Businessplan für eine Spieleentwicklungsfirma</title>
		<link>http://www.florian-oeser.de/?p=390</link>
		<comments>http://www.florian-oeser.de/?p=390#comments</comments>
		<pubDate>Tue, 16 Jun 2009 09:59:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemein/Sonstiges]]></category>
		<category><![CDATA[XNA/D3D/Gamedev]]></category>

		<guid isPermaLink="false">http://www.florian-oeser.de/?p=390</guid>
		<description><![CDATA[<p>Im Zuge der Arbeit an dem <a href="http://www.florian-oeser.de/?p=387" target="_blank">QM-Handbuch</a> wurde ich an den Businessplan für eine Spieleentwicklungsfirma, welchen ich zusammen mit Michael Palmer erarbeitet hatte, erinnert. Da Michael damals schon darüber berichtete möchte ich mir die Arbeit sparen und direkt auf seinen Eintrag verlinken. Dort findet ihr den Businessplan und den Foliensatz der uns bei der Präsentation unterstützte.</p>
<p><a href="http://www.michaelpalmer.de/businessplan-fur-ein-Spieleentwicklungs-studio/" target="_blank">Buisnessplan für ein Spieleentwicklungs-Studio</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Im Zuge der Arbeit an dem <a href="http://www.florian-oeser.de/?p=387" target="_blank">QM-Handbuch</a> wurde ich an den Businessplan für eine Spieleentwicklungsfirma, welchen ich zusammen mit Michael Palmer erarbeitet hatte, erinnert. Da Michael damals schon darüber berichtete möchte ich mir die Arbeit sparen und direkt auf seinen Eintrag verlinken. Dort findet ihr den Businessplan und den Foliensatz der uns bei der Präsentation unterstützte.</p>
<p><a href="http://www.michaelpalmer.de/businessplan-fur-ein-Spieleentwicklungs-studio/" target="_blank">Buisnessplan für ein Spieleentwicklungs-Studio</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.florian-oeser.de/?feed=rss2&amp;p=390</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qualitätsmanagement-Handbuch: Spieleentwicklung &amp;&amp; Softwaremetriken</title>
		<link>http://www.florian-oeser.de/?p=387</link>
		<comments>http://www.florian-oeser.de/?p=387#comments</comments>
		<pubDate>Mon, 15 Jun 2009 23:07:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemein/Sonstiges]]></category>
		<category><![CDATA[XNA/D3D/Gamedev]]></category>

		<guid isPermaLink="false">http://www.florian-oeser.de/?p=387</guid>
		<description><![CDATA[<p>Für die Lehrveranstaltung <em>Qualitätsmanagement</em> habe ich zusammen mit vier weiteren Kommilitonen ein minimales (und bei weitem nicht vollständiges) Qualitätsmanagement-Handbuch für eine fiktive Spieleschmiede geschrieben.</p>
<p>Inhalt dabei ist zunächst ein Firmenprofil welches die Firma und deren Entwicklungen, in unserem Fall <em>CasualGames</em>, beschreibt. Danach gehen wir auf die in der SE allgemein üblichen Qualitätssicherungsmaßnahmen, wie beispielsweiße den Betatest, ein. Folgend versuchen wir drei, für die Spieleentwicklung wichtige, Qualitätsmerkmale zu operationalisieren: DDD (<em>Detailed Design Document</em>), <em>Spielspaß</em> u.A. mit Hilfe eines Questionnaires und zu guter Letzt das allgemein hin bekannte QM-Merkmal <em>Korrektheit</em>.</p>
<p><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/qm_handbuch.pdf">QM-Handbuch</a> (.pdf, 652KB)</p>
<p>Der zweite Übungsteil bestand darin verschiedene Softwaremetriken auf ein Code Snippet anzuwenden und hat nix direkt mit dem Handbuch zu tun. Wer sich aber auch dafür interessiert oder eine Vorlage braucht ist mit Folgendem gut beraten. Untersucht wurden LOC (Lines of Code), die Halstead-Metrik, Zyklomatische Komplexität nach McCabe und verschiedene Codeüberdeckungsgrade.</p>
<p><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/qm_ms2_metriken.pdf">Metriken</a> (.pdf, 1.284MB)</p>
<p><em>Wie immer keine Garantie auf Richtigkeit oder Vollständigkeit!</em></p>
]]></description>
			<content:encoded><![CDATA[<p>Für die Lehrveranstaltung <em>Qualitätsmanagement</em> habe ich zusammen mit vier weiteren Kommilitonen ein minimales (und bei weitem nicht vollständiges) Qualitätsmanagement-Handbuch für eine fiktive Spieleschmiede geschrieben.</p>
<p>Inhalt dabei ist zunächst ein Firmenprofil welches die Firma und deren Entwicklungen, in unserem Fall <em>CasualGames</em>, beschreibt. Danach gehen wir auf die in der SE allgemein üblichen Qualitätssicherungsmaßnahmen, wie beispielsweiße den Betatest, ein. Folgend versuchen wir drei, für die Spieleentwicklung wichtige, Qualitätsmerkmale zu operationalisieren: DDD (<em>Detailed Design Document</em>), <em>Spielspaß</em> u.A. mit Hilfe eines Questionnaires und zu guter Letzt das allgemein hin bekannte QM-Merkmal <em>Korrektheit</em>.</p>
<p><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/qm_handbuch.pdf">QM-Handbuch</a> (.pdf, 652KB)</p>
<p>Der zweite Übungsteil bestand darin verschiedene Softwaremetriken auf ein Code Snippet anzuwenden und hat nix direkt mit dem Handbuch zu tun. Wer sich aber auch dafür interessiert oder eine Vorlage braucht ist mit Folgendem gut beraten. Untersucht wurden LOC (Lines of Code), die Halstead-Metrik, Zyklomatische Komplexität nach McCabe und verschiedene Codeüberdeckungsgrade.</p>
<p><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/06/qm_ms2_metriken.pdf">Metriken</a> (.pdf, 1.284MB)</p>
<p><em>Wie immer keine Garantie auf Richtigkeit oder Vollständigkeit!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.florian-oeser.de/?feed=rss2&amp;p=387</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>simple RayTracer Part 1</title>
		<link>http://www.florian-oeser.de/?p=343</link>
		<comments>http://www.florian-oeser.de/?p=343#comments</comments>
		<pubDate>Tue, 05 May 2009 13:34:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Projekte]]></category>

		<guid isPermaLink="false">http://www.florian-oeser.de/?p=343</guid>
		<description><![CDATA[<p>Nach längerer Pause hier möchte ich heute meinen Raytracer, den ich in der letzten Zeit erarbeitet habe, vorstellen und zum Download anbieten. Zunächst ersteinmal ein paar Bilder welche den aktuellen Stand aufzeigen. Eine Beschreibung und die entsprechenden Berechnungszeiten sind jeweils im Bildbeschreibungstext zu finden. Dazu muss man aber sagen das weder der RayTracer ansich optimiert wurde (z.B. über ein kd-Tree), noch der Sourcecode drumherum optimiert ist.</p>
<p><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/image_33.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-344" title="Ambient+Diffuse-Specular+Shadow; Athlon 64 X2 Dual 6000+; 33 Sekunden bei 1000x1000" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/image_33-150x150.jpg" alt="Ambient+Diffuse-Specular+Shadow; Athlon 64 X2 Dual 6000+; 33 Sekunden bei 1000x1000" width="150" height="150" /></a> <a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/gui.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-348" title="simple GUI" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/gui-150x150.jpg" alt="simple GUI" width="150" height="150" /></a> <a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/image_56sec.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-349" title="Ambient+Diffuse-Specular+Shadow+Perfect Reflection; Athlon 64 X2 Dual 6000+; 56 Sekunden bei 1000x1000" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/image_56sec-150x150.jpg" alt="Ambient+Diffuse-Specular+Shadow+Perfect Reflection; Athlon 64 X2 Dual 6000+; 56 Sekunden bei 1000x1000" width="150" height="150" /></a></p>
<p>Der RayTracer ist komplett in C++ und die entsprechende GUI mit VC++ .Net auf WinForms Basis geschrieben. Im Moment ist das Phong-Beleuchtungsmodell implementiert und als kleinen Bonus kann man noch, zumindest für die Ebenen, Texturen laden, welche die Diffusefarbe ersetzen. Nun folgt noch eine kleine Bildergalerie welche Schritt für Schritt zeigt wie man von einfachem Ambient bis zur PerfectReflection mit Schatten kommt. Die einzelnen Schritte lassen mit frei wählbaren Einstellungen  auch in der GUI simulieren.</p>
<p><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/ambient.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-357" title="Ambient" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/ambient-150x150.jpg" alt="Ambient" width="150" height="150" /></a> <a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/ambientdiffuse_one-light.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-358" title="Ambient+Diffuse (one light source)" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/ambientdiffuse_one-light-150x150.jpg" alt="Ambient+Diffuse (one light source)" width="150" height="150" /></a> <a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/onlyspec.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-359" title="only specular" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/onlyspec-150x150.jpg" alt="only specular" width="150" height="150" /></a> <a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/ambient_diffuse__multiple-light_shadow_2.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-360" title="Ambient+Diffuse+Shadow (three light sources)" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/ambient_diffuse__multiple-light_shadow_2-150x150.jpg" alt="Ambient+Diffuse+Shadow (three light sources)" width="150" height="150" /></a> <a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/ambient_diffuse_one-light_3_shadow.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-361" title="Ambient+Diffuse+Specular+Shadow (one light source)" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/ambient_diffuse_one-light_3_shadow-150x150.jpg" alt="Ambient+Diffuse+Specular+Shadow (one light source)" width="150" height="150" /></a> <a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/image5354.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-362" title="Ambient+Diffuse+Specular+Shadow (three light sources)" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/image5354-150x150.jpg" alt="Ambient+Diffuse+Specular+Shadow (three light sources)" width="150" height="150" /></a> <a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/highres.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-363" title="Ambient+Diffuse+Specular+Shadow+Perfect Reflection" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/highres-150x150.jpg" alt="Ambient+Diffuse+Specular+Shadow+Perfect Reflection" width="150" height="150" /></a> <a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/image_9sphere_floor-near.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-364" title="same aas image before; 9 sphere with a closer floor" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/image_9sphere_floor-near-150x150.jpg" alt="same aas image before; 9 sphere with a closer floor" width="150" height="150" /></a> <a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/image_9spheres_floor-near_texture.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-367" title="same as before but with texture on floor" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/image_9spheres_floor-near_texture-150x150.jpg" alt="same as before but with texture on floor" width="150" height="150" /></a></p>
<p>Hier nun der Download. Zum einen ein reiner Release-Build und weiterhin der komplette Source(VS bzw. VC++Express Solution). Das .NET 2.0 Framework wird vorrausgesetzt.</p>
<p><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/release.rar">Release</a> (.rar, 187KB)</p>
<p><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/sguiraytracer.rar">sGUIRayTracer-Solution</a> (.rar, 258KB)</p>
<p>Da mir die Arbeit an diesem Raytracer sehr viel Spass gemacht hat und man viel dabei lernen konnte werde ich wohl noch ein wenig daran weiterarbeiten. Hier mal eine Liste was man überhaupt noch in einem Raytracer implementieren kann. Was ich davon noch wählen werde steht noch nicht fest. Es hat alles seinen Reiz und im Moment tendiere ich zu Normalmapping direkt über eine Map und/oder Bumpmapping über PerlinNoise.</p>
<ul>
<li>kd-Tree oder spatial subdivision zur Geschwindigkeitsoptimierung</li>
<li>depth of Field</li>
<li>isosurfaces (blobs)</li>
<li>fresnel und Transparenz (refraction)</li>
<li>Bump/Displacement mapping</li>
<li>Normalmapping</li>
<li>fog</li>
<li>Soft-Shadows</li>
<li>Photon maps (global illumination)</li>
<li>weitere Geometrieobjekte (Cylinder, Box etc.)</li>
<li>Antialiasing</li>
<li>Photo exposure</li>
</ul>
<h5>Interessante Links/Quellen</h5>
<p><a href="http://de.wikipedia.org/wiki/Raytracing" target="_blank">Wikieintrag zu RayTracing</a></p>
<p><a href="http://www.mandelbrot-dazibao.com/Ray/Ray.htm" target="_blank">Mandelbrot&#8217;s RayTracing explanations</a></p>
<p><a href="http://www.flipcode.org/archives/Raytracing_Topics_Techniques-Part_1_Introduction.shtml" target="_blank">Tutorialreihe auf Flipcode (sehr zu empfehlen!)<br />
</a></p>
<p><a href="http://www.codermind.com/articles/Raytracer-in-C++-Introduction-What-is-ray-tracing.html" target="_blank">Tutorialreihe auf Codermind</a></p>
<p><a href="http://wiki.delphigl.com/index.php/Tutorial_Raytracing_-_Grundlagen_I" target="_blank">Tutorialreihe der DGL-Wiki</a></p>
<p><a href="http://www.groovyvis.com/other/raytracing/index.html" target="_blank">Tutorialreihe von Forrest Briggs</a></p>
<p><em>Wie immer keine Garantie auf Richtigkeit oder Vollständigkeit!</em></p>
]]></description>
			<content:encoded><![CDATA[<p>Nach längerer Pause hier möchte ich heute meinen Raytracer, den ich in der letzten Zeit erarbeitet habe, vorstellen und zum Download anbieten. Zunächst ersteinmal ein paar Bilder welche den aktuellen Stand aufzeigen. Eine Beschreibung und die entsprechenden Berechnungszeiten sind jeweils im Bildbeschreibungstext zu finden. Dazu muss man aber sagen das weder der RayTracer ansich optimiert wurde (z.B. über ein kd-Tree), noch der Sourcecode drumherum optimiert ist.</p>
<p><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/image_33.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-344" title="Ambient+Diffuse-Specular+Shadow; Athlon 64 X2 Dual 6000+; 33 Sekunden bei 1000x1000" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/image_33-150x150.jpg" alt="Ambient+Diffuse-Specular+Shadow; Athlon 64 X2 Dual 6000+; 33 Sekunden bei 1000x1000" width="150" height="150" /></a> <a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/gui.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-348" title="simple GUI" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/gui-150x150.jpg" alt="simple GUI" width="150" height="150" /></a> <a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/image_56sec.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-349" title="Ambient+Diffuse-Specular+Shadow+Perfect Reflection; Athlon 64 X2 Dual 6000+; 56 Sekunden bei 1000x1000" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/image_56sec-150x150.jpg" alt="Ambient+Diffuse-Specular+Shadow+Perfect Reflection; Athlon 64 X2 Dual 6000+; 56 Sekunden bei 1000x1000" width="150" height="150" /></a></p>
<p>Der RayTracer ist komplett in C++ und die entsprechende GUI mit VC++ .Net auf WinForms Basis geschrieben. Im Moment ist das Phong-Beleuchtungsmodell implementiert und als kleinen Bonus kann man noch, zumindest für die Ebenen, Texturen laden, welche die Diffusefarbe ersetzen. Nun folgt noch eine kleine Bildergalerie welche Schritt für Schritt zeigt wie man von einfachem Ambient bis zur PerfectReflection mit Schatten kommt. Die einzelnen Schritte lassen mit frei wählbaren Einstellungen  auch in der GUI simulieren.</p>
<p><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/ambient.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-357" title="Ambient" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/ambient-150x150.jpg" alt="Ambient" width="150" height="150" /></a> <a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/ambientdiffuse_one-light.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-358" title="Ambient+Diffuse (one light source)" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/ambientdiffuse_one-light-150x150.jpg" alt="Ambient+Diffuse (one light source)" width="150" height="150" /></a> <a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/onlyspec.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-359" title="only specular" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/onlyspec-150x150.jpg" alt="only specular" width="150" height="150" /></a> <a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/ambient_diffuse__multiple-light_shadow_2.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-360" title="Ambient+Diffuse+Shadow (three light sources)" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/ambient_diffuse__multiple-light_shadow_2-150x150.jpg" alt="Ambient+Diffuse+Shadow (three light sources)" width="150" height="150" /></a> <a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/ambient_diffuse_one-light_3_shadow.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-361" title="Ambient+Diffuse+Specular+Shadow (one light source)" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/ambient_diffuse_one-light_3_shadow-150x150.jpg" alt="Ambient+Diffuse+Specular+Shadow (one light source)" width="150" height="150" /></a> <a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/image5354.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-362" title="Ambient+Diffuse+Specular+Shadow (three light sources)" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/image5354-150x150.jpg" alt="Ambient+Diffuse+Specular+Shadow (three light sources)" width="150" height="150" /></a> <a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/highres.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-363" title="Ambient+Diffuse+Specular+Shadow+Perfect Reflection" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/highres-150x150.jpg" alt="Ambient+Diffuse+Specular+Shadow+Perfect Reflection" width="150" height="150" /></a> <a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/image_9sphere_floor-near.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-364" title="same aas image before; 9 sphere with a closer floor" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/image_9sphere_floor-near-150x150.jpg" alt="same aas image before; 9 sphere with a closer floor" width="150" height="150" /></a> <a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/image_9spheres_floor-near_texture.jpg" rel="lightbox[343]"><img class="alignnone size-thumbnail wp-image-367" title="same as before but with texture on floor" src="http://www.florian-oeser.de/wordpress/wp-content/2009/05/image_9spheres_floor-near_texture-150x150.jpg" alt="same as before but with texture on floor" width="150" height="150" /></a></p>
<p>Hier nun der Download. Zum einen ein reiner Release-Build und weiterhin der komplette Source(VS bzw. VC++Express Solution). Das .NET 2.0 Framework wird vorrausgesetzt.</p>
<p><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/release.rar">Release</a> (.rar, 187KB)</p>
<p><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/05/sguiraytracer.rar">sGUIRayTracer-Solution</a> (.rar, 258KB)</p>
<p>Da mir die Arbeit an diesem Raytracer sehr viel Spass gemacht hat und man viel dabei lernen konnte werde ich wohl noch ein wenig daran weiterarbeiten. Hier mal eine Liste was man überhaupt noch in einem Raytracer implementieren kann. Was ich davon noch wählen werde steht noch nicht fest. Es hat alles seinen Reiz und im Moment tendiere ich zu Normalmapping direkt über eine Map und/oder Bumpmapping über PerlinNoise.</p>
<ul>
<li>kd-Tree oder spatial subdivision zur Geschwindigkeitsoptimierung</li>
<li>depth of Field</li>
<li>isosurfaces (blobs)</li>
<li>fresnel und Transparenz (refraction)</li>
<li>Bump/Displacement mapping</li>
<li>Normalmapping</li>
<li>fog</li>
<li>Soft-Shadows</li>
<li>Photon maps (global illumination)</li>
<li>weitere Geometrieobjekte (Cylinder, Box etc.)</li>
<li>Antialiasing</li>
<li>Photo exposure</li>
</ul>
<h5>Interessante Links/Quellen</h5>
<p><a href="http://de.wikipedia.org/wiki/Raytracing" target="_blank">Wikieintrag zu RayTracing</a></p>
<p><a href="http://www.mandelbrot-dazibao.com/Ray/Ray.htm" target="_blank">Mandelbrot&#8217;s RayTracing explanations</a></p>
<p><a href="http://www.flipcode.org/archives/Raytracing_Topics_Techniques-Part_1_Introduction.shtml" target="_blank">Tutorialreihe auf Flipcode (sehr zu empfehlen!)<br />
</a></p>
<p><a href="http://www.codermind.com/articles/Raytracer-in-C++-Introduction-What-is-ray-tracing.html" target="_blank">Tutorialreihe auf Codermind</a></p>
<p><a href="http://wiki.delphigl.com/index.php/Tutorial_Raytracing_-_Grundlagen_I" target="_blank">Tutorialreihe der DGL-Wiki</a></p>
<p><a href="http://www.groovyvis.com/other/raytracing/index.html" target="_blank">Tutorialreihe von Forrest Briggs</a></p>
<p><em>Wie immer keine Garantie auf Richtigkeit oder Vollständigkeit!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.florian-oeser.de/?feed=rss2&amp;p=343</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Jump! Development Video</title>
		<link>http://www.florian-oeser.de/?p=287</link>
		<comments>http://www.florian-oeser.de/?p=287#comments</comments>
		<pubDate>Fri, 20 Feb 2009 17:04:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Projekte]]></category>
		<category><![CDATA[XNA/D3D/Gamedev]]></category>

		<guid isPermaLink="false">http://www.florian-oeser.de/?p=287</guid>
		<description><![CDATA[<p>Dieses Video wurde von <a href="http://www.iamthomasvogel.de/">Thomas</a> und mir produziert und zeigt verschiedene Sachen rund um die Entwicklung von <a href="http://www.florian-oeser.de/?page_id=68" target="_blank">Jump!</a>. Unter anderem werden verschiedene Entwicklungsstadien aber auch Gameplay-Szenen vorgestellt. Mehr will ich gar nicht verraten seht einfach selbst <img src='http://www.florian-oeser.de/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Alle anderen Videos gibt es weiterhin <a href="http://www.florian-oeser.de/?page_id=69" target="_blank">hier</a>. Im Übrigen bräuchte ich mal eine Tipp wie man die Qualität der Videos auf Youtube erhöhen kann. Schon viel probiert aber nie mit einem ordentlichen Ergebniss. Ich denke aber ich werde kommende Videos auch wieder auf dem Webspace legen, da ich nun einen ordentlichen Player gefunden habe.</p>
<p>Nun gut viel Spass beim Schauen und danke nochmal an dich Thomas <img src='http://www.florian-oeser.de/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><script src="/wordpress/wp-content/plugins/fw-player/swfobject.js" type="text/javascript"></script></p>
<div id="player">This text will be replaced</div>
<p><script type="text/javascript"><!--
var so = new SWFObject('/wordpress/wp-content/plugins/fw-player/player.swf','mpl','470','320','9');
so.addParam('allowscriptaccess','always');
so.addParam('allowfullscreen','true');
so.addParam('flashvars','&#038;file=http://www.florian-oeser.de/wordpress/wp-content/2009/02/JumpBeta_ME.f4v');
so.write('player');
// --></script></p>
]]></description>
			<content:encoded><![CDATA[<p>Dieses Video wurde von <a href="http://www.iamthomasvogel.de/">Thomas</a> und mir produziert und zeigt verschiedene Sachen rund um die Entwicklung von <a href="http://www.florian-oeser.de/?page_id=68" target="_blank">Jump!</a>. Unter anderem werden verschiedene Entwicklungsstadien aber auch Gameplay-Szenen vorgestellt. Mehr will ich gar nicht verraten seht einfach selbst <img src='http://www.florian-oeser.de/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Alle anderen Videos gibt es weiterhin <a href="http://www.florian-oeser.de/?page_id=69" target="_blank">hier</a>. Im Übrigen bräuchte ich mal eine Tipp wie man die Qualität der Videos auf Youtube erhöhen kann. Schon viel probiert aber nie mit einem ordentlichen Ergebniss. Ich denke aber ich werde kommende Videos auch wieder auf dem Webspace legen, da ich nun einen ordentlichen Player gefunden habe.</p>
<p>Nun gut viel Spass beim Schauen und danke nochmal an dich Thomas <img src='http://www.florian-oeser.de/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><script src="/wordpress/wp-content/plugins/fw-player/swfobject.js" type="text/javascript"></script></p>
<div id="player">This text will be replaced</div>
<p><script type="text/javascript"><!--
var so = new SWFObject('/wordpress/wp-content/plugins/fw-player/player.swf','mpl','470','320','9');
so.addParam('allowscriptaccess','always');
so.addParam('allowfullscreen','true');
so.addParam('flashvars','&#038;file=http://www.florian-oeser.de/wordpress/wp-content/2009/02/JumpBeta_ME.f4v');
so.write('player');
// --></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.florian-oeser.de/?feed=rss2&amp;p=287</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hilva PostProcessing Sample (updated: 29.05.09 Hilva v1.5)</title>
		<link>http://www.florian-oeser.de/?p=280</link>
		<comments>http://www.florian-oeser.de/?p=280#comments</comments>
		<pubDate>Fri, 20 Feb 2009 13:36:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[XNA/D3D/Gamedev]]></category>

		<guid isPermaLink="false">http://www.florian-oeser.de/?p=280</guid>
		<description><![CDATA[<p>Für die <a href="http://www.hilva.com/" target="_blank">Hilva Graphics Library</a> habe ich ein kleines Sample geschrieben welches den Umgang mit der PostProcessing-Schnittstelle, dieser hilfreichen Bibliothek, verdeutlichen soll. Der Download dazu ist im <a href="http://www.hilva.com/tutorials.htm" target="_blank">Sample-Bereich</a> zu finden oder alternativ gleich hier.</p>
<p><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/02/postprocesssample.zip">PostProcessingSample</a> (.rar, 901KB)</p>
<p style="text-align: center;"><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/02/postprocesssampleimage.jpg" rel="lightbox[280]"><img class="size-medium wp-image-282 aligncenter" title="postprocesssampleimage" src="http://www.florian-oeser.de/wordpress/wp-content/2009/02/postprocesssampleimage-300x236.jpg" alt="postprocesssampleimage" width="300" height="236" /></a></p>
]]></description>
			<content:encoded><![CDATA[<p>Für die <a href="http://www.hilva.com/" target="_blank">Hilva Graphics Library</a> habe ich ein kleines Sample geschrieben welches den Umgang mit der PostProcessing-Schnittstelle, dieser hilfreichen Bibliothek, verdeutlichen soll. Der Download dazu ist im <a href="http://www.hilva.com/tutorials.htm" target="_blank">Sample-Bereich</a> zu finden oder alternativ gleich hier.</p>
<p><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/02/postprocesssample.zip">PostProcessingSample</a> (.rar, 901KB)</p>
<p style="text-align: center;"><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/02/postprocesssampleimage.jpg" rel="lightbox[280]"><img class="size-medium wp-image-282 aligncenter" title="postprocesssampleimage" src="http://www.florian-oeser.de/wordpress/wp-content/2009/02/postprocesssampleimage-300x236.jpg" alt="postprocesssampleimage" width="300" height="236" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.florian-oeser.de/?feed=rss2&amp;p=280</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HowTo: Extension Methods</title>
		<link>http://www.florian-oeser.de/?p=217</link>
		<comments>http://www.florian-oeser.de/?p=217#comments</comments>
		<pubDate>Tue, 17 Feb 2009 21:01:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[How-To's]]></category>

		<guid isPermaLink="false">http://www.florian-oeser.de/?p=217</guid>
		<description><![CDATA[<p><em>Dieses How-To wurde ebenfalls auf <a href="http://www.xnamag.de/forum/viewtopic.php?t=1632" target="_blank">XNA.mag</a> veröffentlicht und kann auch dort diskutiert werden.<br />
</em></p>
<h4>Einleitung</h4>
<p>In diesem kleinen How-To möchte kurz erklären was Extension Methods sind, wie man sie anwendet und auf was man achten muss.</p>
<h4>Umsetzung</h4>
<h5>Was sind überhaupt Extension Methods?</h5>
<p>Extension Methods sind integraler Bestandteil von C# 3.0 und dem .Net-Framework  3.5!Diese Methoden erlauben es vorhandene Typen zu erweitern, ohne eine abgeleitete Klasse zu implementieren oder den ursprünglichen Typ erneut kompilieren zu müssen. Extension Methods sind spezielle statische Methoden werden aber wie Instanzmethoden aufgerufen. Instanzmethoden haben aber Vorrang gegenüber Extension Methods, dass heißt eine vorhandene Methode kann nicht durch eine Extension Method ersetzt werden. Weiterhin können sie nur auf öffentliche Member und Methoden des Types den sie erweitern zugreifen, da sie sonst das Prinzip der Kapselung verletzt werden  würden.</p>
<h5>Kleines Beispiel gefällig?</h5>
<pre class="brush: csharp;">
namespace ExtensionMethods
{
   public static class Extensions
  {
      public static string EliminateWhiteSpace(this string param)
     {
        return param.Replace(' ', string.Empty);
     }
  }
}
</pre>
<p>Der erste Paramter in einer Extension Method wird mit dem Operator <em>this</em> versehen und entspricht dem Typ auf dem die Extension Method angewendet wird. In diesem Falle <em>string</em>. Die Klasse und die eigentliche Methode muss <em>static</em> sein.</p>
<p>Wie verwendet man jetzt diese Methode:</p>
<pre class="brush: csharp;">
using ExtensionMethods;

namespace ConsoleApplication
{
    class Program
   {
      static void Main(string[] args)
      {
         Console.WriteLine(&quot;Hallo Welt!&quot;.EliminateWhiteSpace());
         Console.ReadLine();
      }
   }
}
</pre>
<p>Das  funktioniert da der Compiler die Extension Methods auflöst wenn der Namespace, in dem die Extension Method definiert wurde, an der gewünschten Stelle eingebunden wurde.  Das Einbinden des Namespaces ist wichtig und muss explizit geschehen. Wie erwähnt wird also die Extension Method wie eine Instanzmethode aufgerufen, liegt aber nach dem kompilieren  in der IL (intermediate language) als statischer Aufruf vor. Im Endeffekt wird also daraus:</p>
<pre class="brush: csharp;">
Console.WriteLine(Extensions.EliminateWhiteSpace(&quot;Hallo Welt!&quot;));
</pre>
<p>Ein weiteres Beispiel, welches nicht ganz so konstruiert ist. Bei der Spiele/Grafikprogrammierung ist es wichtig zu wissen wieviel Zeit zwischen zwei Frames (Bildern) vergangen ist. Das sieht folgendermaßen aus:</p>
<pre class="brush: csharp;">
float dt = (float)gameTime.ElapsedGameTime.TotalSeconds;
</pre>
<p>Die Extension Method dazu:</p>
<pre class="brush: csharp;">
public static float GetElapsedSeconds(this GameTime gameTime)
{
    return (float)gameTime.ElapsedGameTime.TotalSeconds;
}
</pre>
<p>Und nun der neue Aufruf:</p>
<pre class="brush: csharp;">
float dt = gameTime.GetElapsedSeconds();
</pre>
<h4>Conclusion</h4>
<p>Extension Methods bieten eine gute Möglichkeit vorhande Funktionlität zu erweitern und lassen sich im &#8216;Client-Code&#8217; intuitiv einsetzen. Weiterhin verbessert sich zumeist die Lesbarkeit des Codes (<em>syntaktischer Zucker</em>). Trotzdem sollte man sparsam mit ihnen umgehen und sie nur anwenden wenn sie unbedingt benötigt werden, da es schnell zu Wildwuchs kommen kann und der Code schlecht wartbar wird.</p>
<h4>Interessante Links/Quellen</h4>
<p><a href="http://msdn.microsoft.com/en-us/library/bb383977.aspx" target="_blank">MSDN Prgramming Guide zu Extension Methods</a></p>
<p><a href="http://dotnet-forum.de/KnowledgeBase/articles/2008/07/15/311-c-3-0-extension-methods.aspx" target="_blank">C# 3.0 Extension Methods</a></p>
<p><a href="http://www.developer.com/net/csharp/article.php/10918_3592216_1">Extension Methods und genauerer IL-Betrachtungen</a></p>
<p><a href="http://www.nickontech.com/2008/11/extension-methods-and-you/" target="_blank">Extension Methods in Bezug auf XNA</a></p>
<p><a href="http://www.ziggyware.com/news.php?readmore=1037" target="_blank">Extension Methods in Bezug auf XNA 2</a></p>
<p><a href="http://www.ziggyware.com/news.php?readmore=1044" target="_blank">Extension Methods in Bezug auf XNA 3</a></p>
]]></description>
			<content:encoded><![CDATA[<p><em>Dieses How-To wurde ebenfalls auf <a href="http://www.xnamag.de/forum/viewtopic.php?t=1632" target="_blank">XNA.mag</a> veröffentlicht und kann auch dort diskutiert werden.<br />
</em></p>
<h4>Einleitung</h4>
<p>In diesem kleinen How-To möchte kurz erklären was Extension Methods sind, wie man sie anwendet und auf was man achten muss.</p>
<h4>Umsetzung</h4>
<h5>Was sind überhaupt Extension Methods?</h5>
<p>Extension Methods sind integraler Bestandteil von C# 3.0 und dem .Net-Framework  3.5!Diese Methoden erlauben es vorhandene Typen zu erweitern, ohne eine abgeleitete Klasse zu implementieren oder den ursprünglichen Typ erneut kompilieren zu müssen. Extension Methods sind spezielle statische Methoden werden aber wie Instanzmethoden aufgerufen. Instanzmethoden haben aber Vorrang gegenüber Extension Methods, dass heißt eine vorhandene Methode kann nicht durch eine Extension Method ersetzt werden. Weiterhin können sie nur auf öffentliche Member und Methoden des Types den sie erweitern zugreifen, da sie sonst das Prinzip der Kapselung verletzt werden  würden.</p>
<h5>Kleines Beispiel gefällig?</h5>
<pre class="brush: csharp;">
namespace ExtensionMethods
{
   public static class Extensions
  {
      public static string EliminateWhiteSpace(this string param)
     {
        return param.Replace(' ', string.Empty);
     }
  }
}
</pre>
<p>Der erste Paramter in einer Extension Method wird mit dem Operator <em>this</em> versehen und entspricht dem Typ auf dem die Extension Method angewendet wird. In diesem Falle <em>string</em>. Die Klasse und die eigentliche Methode muss <em>static</em> sein.</p>
<p>Wie verwendet man jetzt diese Methode:</p>
<pre class="brush: csharp;">
using ExtensionMethods;

namespace ConsoleApplication
{
    class Program
   {
      static void Main(string[] args)
      {
         Console.WriteLine(&quot;Hallo Welt!&quot;.EliminateWhiteSpace());
         Console.ReadLine();
      }
   }
}
</pre>
<p>Das  funktioniert da der Compiler die Extension Methods auflöst wenn der Namespace, in dem die Extension Method definiert wurde, an der gewünschten Stelle eingebunden wurde.  Das Einbinden des Namespaces ist wichtig und muss explizit geschehen. Wie erwähnt wird also die Extension Method wie eine Instanzmethode aufgerufen, liegt aber nach dem kompilieren  in der IL (intermediate language) als statischer Aufruf vor. Im Endeffekt wird also daraus:</p>
<pre class="brush: csharp;">
Console.WriteLine(Extensions.EliminateWhiteSpace(&quot;Hallo Welt!&quot;));
</pre>
<p>Ein weiteres Beispiel, welches nicht ganz so konstruiert ist. Bei der Spiele/Grafikprogrammierung ist es wichtig zu wissen wieviel Zeit zwischen zwei Frames (Bildern) vergangen ist. Das sieht folgendermaßen aus:</p>
<pre class="brush: csharp;">
float dt = (float)gameTime.ElapsedGameTime.TotalSeconds;
</pre>
<p>Die Extension Method dazu:</p>
<pre class="brush: csharp;">
public static float GetElapsedSeconds(this GameTime gameTime)
{
    return (float)gameTime.ElapsedGameTime.TotalSeconds;
}
</pre>
<p>Und nun der neue Aufruf:</p>
<pre class="brush: csharp;">
float dt = gameTime.GetElapsedSeconds();
</pre>
<h4>Conclusion</h4>
<p>Extension Methods bieten eine gute Möglichkeit vorhande Funktionlität zu erweitern und lassen sich im &#8216;Client-Code&#8217; intuitiv einsetzen. Weiterhin verbessert sich zumeist die Lesbarkeit des Codes (<em>syntaktischer Zucker</em>). Trotzdem sollte man sparsam mit ihnen umgehen und sie nur anwenden wenn sie unbedingt benötigt werden, da es schnell zu Wildwuchs kommen kann und der Code schlecht wartbar wird.</p>
<h4>Interessante Links/Quellen</h4>
<p><a href="http://msdn.microsoft.com/en-us/library/bb383977.aspx" target="_blank">MSDN Prgramming Guide zu Extension Methods</a></p>
<p><a href="http://dotnet-forum.de/KnowledgeBase/articles/2008/07/15/311-c-3-0-extension-methods.aspx" target="_blank">C# 3.0 Extension Methods</a></p>
<p><a href="http://www.developer.com/net/csharp/article.php/10918_3592216_1">Extension Methods und genauerer IL-Betrachtungen</a></p>
<p><a href="http://www.nickontech.com/2008/11/extension-methods-and-you/" target="_blank">Extension Methods in Bezug auf XNA</a></p>
<p><a href="http://www.ziggyware.com/news.php?readmore=1037" target="_blank">Extension Methods in Bezug auf XNA 2</a></p>
<p><a href="http://www.ziggyware.com/news.php?readmore=1044" target="_blank">Extension Methods in Bezug auf XNA 3</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.florian-oeser.de/?feed=rss2&amp;p=217</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Socket Server/Client zur Bildübertragung mit C unter Linux/Unix-OS</title>
		<link>http://www.florian-oeser.de/?p=203</link>
		<comments>http://www.florian-oeser.de/?p=203#comments</comments>
		<pubDate>Fri, 30 Jan 2009 16:38:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemein/Sonstiges]]></category>

		<guid isPermaLink="false">http://www.florian-oeser.de/?p=203</guid>
		<description><![CDATA[<p><span>Jüngst habe ich einen kleinen, leichtgewichtigen Server und Client zur Bildübertragung geschrieben. Das ganze ist Socketbasierend(TCP) und sollte auf allen Linux/Unix-Distributionen kompilier- und lauffähig sein.</span></p>
<p><span>Bestandteil der Arbeit ist weiterhin ein <span>Kommunikationsprotokoll</span>, welches den Ablauf der Übertragung regelt bzw. beschreibt. So wird in diesem Dokument unter anderem geklärt, wie die zu übertragenden <span>Metadaten</span> auszusehen haben oder wie mit eventuell auftretenten Fehlern umzugehen ist. Das sichert eine stabile und fehlerfreie Bildübertragung ab.</span></p>
<p><span>Die Umsetzung war nicht immer ganz einfach und es gab einige Tücken zu überwinden. Gerade die im Protokoll beschrieben <span>Timeouts</span> machten mir anfangs Sorgen und es dauerte bis ich eine entsprechende Lösung gefunden bzw. auch richtig umgesetzt hatte. Es gab zwar hier und da auch noch ein paar andere Probleme, welche aber meist auf die eingerosteten C-Kenntnisse und deren Kniffe meinerseits zurückzuführen waren. Auch egal nun bin ich ja fertig, es läuft alles perfekt und man ist wieder eine Erfahrung reicher geworden <img src='http://www.florian-oeser.de/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </span></p>
<p><span>Hier nun der Source, das Kommunikationsprotokoll und direkt auch das <span>MonoDevelop</span>-Projekt:</span></p>
<p><span><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/01/c-socket-server-client.rar">C-Socket Server/Client zur Bildübertragung</a> (.rar, 250KB)</span></p>
<p><span><span style="text-decoration: underline;">Interessante/Weiterführende Links zum Thema</span></span></p>
<p><span><a href="http://www.fh-gelsenkirchen.de/fb01/homepages/pollakowski/socket/skripte.html" target="_blank">Snipplets Sockets unter C</a></span></p>
<p><span><a href="http://www.willemer.de/informatik/unix/unprsock.htm" target="_blank">Client-Server Socketprogrammierung</a></span></p>
<p><span><a href="http://www.pc-adviser.de/socket_programmierung.html#socket" target="_blank">Tipps zur Socketprogrammierung</a></span></p>
<p><span><a href="http://books.google.de/books?id=dofKNkyanLYC" target="_blank">Helmut Herold &#8211; Linux/Unix-Systemprogrammierung</a></span></p>
<p><span><a href="http://www.amazon.com/UNIX-Network-Programming-Networking-Sockets/dp/013490012X" target="_blank">Unix Network Programming</a></span></p>
<p><em>Wie immer keine Garantie auf Richtigkeit der Vollständigkeit!</em></p>
<p><em></em></p>
<p><em></em></p>
]]></description>
			<content:encoded><![CDATA[<p><span>Jüngst habe ich einen kleinen, leichtgewichtigen Server und Client zur Bildübertragung geschrieben. Das ganze ist Socketbasierend(TCP) und sollte auf allen Linux/Unix-Distributionen kompilier- und lauffähig sein.</span></p>
<p><span>Bestandteil der Arbeit ist weiterhin ein <span>Kommunikationsprotokoll</span>, welches den Ablauf der Übertragung regelt bzw. beschreibt. So wird in diesem Dokument unter anderem geklärt, wie die zu übertragenden <span>Metadaten</span> auszusehen haben oder wie mit eventuell auftretenten Fehlern umzugehen ist. Das sichert eine stabile und fehlerfreie Bildübertragung ab.</span></p>
<p><span>Die Umsetzung war nicht immer ganz einfach und es gab einige Tücken zu überwinden. Gerade die im Protokoll beschrieben <span>Timeouts</span> machten mir anfangs Sorgen und es dauerte bis ich eine entsprechende Lösung gefunden bzw. auch richtig umgesetzt hatte. Es gab zwar hier und da auch noch ein paar andere Probleme, welche aber meist auf die eingerosteten C-Kenntnisse und deren Kniffe meinerseits zurückzuführen waren. Auch egal nun bin ich ja fertig, es läuft alles perfekt und man ist wieder eine Erfahrung reicher geworden <img src='http://www.florian-oeser.de/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </span></p>
<p><span>Hier nun der Source, das Kommunikationsprotokoll und direkt auch das <span>MonoDevelop</span>-Projekt:</span></p>
<p><span><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/01/c-socket-server-client.rar">C-Socket Server/Client zur Bildübertragung</a> (.rar, 250KB)</span></p>
<p><span><span style="text-decoration: underline;">Interessante/Weiterführende Links zum Thema</span></span></p>
<p><span><a href="http://www.fh-gelsenkirchen.de/fb01/homepages/pollakowski/socket/skripte.html" target="_blank">Snipplets Sockets unter C</a></span></p>
<p><span><a href="http://www.willemer.de/informatik/unix/unprsock.htm" target="_blank">Client-Server Socketprogrammierung</a></span></p>
<p><span><a href="http://www.pc-adviser.de/socket_programmierung.html#socket" target="_blank">Tipps zur Socketprogrammierung</a></span></p>
<p><span><a href="http://books.google.de/books?id=dofKNkyanLYC" target="_blank">Helmut Herold &#8211; Linux/Unix-Systemprogrammierung</a></span></p>
<p><span><a href="http://www.amazon.com/UNIX-Network-Programming-Networking-Sockets/dp/013490012X" target="_blank">Unix Network Programming</a></span></p>
<p><em>Wie immer keine Garantie auf Richtigkeit der Vollständigkeit!</em></p>
<p><em></em></p>
<p><em></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.florian-oeser.de/?feed=rss2&amp;p=203</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Softwareergonomische Analyse zu eBay.de</title>
		<link>http://www.florian-oeser.de/?p=145</link>
		<comments>http://www.florian-oeser.de/?p=145#comments</comments>
		<pubDate>Wed, 14 Jan 2009 17:14:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemein/Sonstiges]]></category>

		<guid isPermaLink="false">http://www.florian-oeser.de/?p=145</guid>
		<description><![CDATA[<p>Im Rahmen der Lehrveranstaltung <em>Human Computer Interaction</em> habe ich wieder eine Softwareergonomische Analyse durchgeführt. Diesmal ist es eine Mischung aus Heuristischer Evaluation und Konformitätstest auf Grundlage der Beta-Oberfläche von eBay.de!</p>
<p>Aufgabenstellung war es, verschiedene Interaktionselemente bzw. Dialoge, durch ein freigewähltes Usability-Testverfahren auf Aspekte wie Form, Farbwahl, Positionierung etc. hin zu überprüfen. Die Ergebnisse wurden in einem Prüfprotokoll festgehalten welches diese Aspekte bewertet, kommentiert und Verbesserungsvorschläge aufzeigt.</p>
<p>Dieses Prüfprotokoll und die Präsentation möchte ich euch wieder zum freien Download zur Verfügung stellen.</p>
<p><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/01/hci_a4.rar">Analyse eBay.de</a> (.rar, 1,2MB)</p>
<p><em>Wie immer keine Garantie auf Richtigkeit oder Vollständigkeit!</em></p>
]]></description>
			<content:encoded><![CDATA[<p>Im Rahmen der Lehrveranstaltung <em>Human Computer Interaction</em> habe ich wieder eine Softwareergonomische Analyse durchgeführt. Diesmal ist es eine Mischung aus Heuristischer Evaluation und Konformitätstest auf Grundlage der Beta-Oberfläche von eBay.de!</p>
<p>Aufgabenstellung war es, verschiedene Interaktionselemente bzw. Dialoge, durch ein freigewähltes Usability-Testverfahren auf Aspekte wie Form, Farbwahl, Positionierung etc. hin zu überprüfen. Die Ergebnisse wurden in einem Prüfprotokoll festgehalten welches diese Aspekte bewertet, kommentiert und Verbesserungsvorschläge aufzeigt.</p>
<p>Dieses Prüfprotokoll und die Präsentation möchte ich euch wieder zum freien Download zur Verfügung stellen.</p>
<p><a href="http://www.florian-oeser.de/wordpress/wp-content/2009/01/hci_a4.rar">Analyse eBay.de</a> (.rar, 1,2MB)</p>
<p><em>Wie immer keine Garantie auf Richtigkeit oder Vollständigkeit!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.florian-oeser.de/?feed=rss2&amp;p=145</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
 