<?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>Guave Studios - Agentur für digitale Medien &#187; 3d</title>
	<atom:link href="http://www.guavestudios.com/blog/tag/3d/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.guavestudios.com/blog</link>
	<description>Blog für Webdesign Zürich, Onlinemarketing und Multimedia.</description>
	<lastBuildDate>Thu, 02 Feb 2012 11:15:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Tutorial: Voxel via Particle Flow</title>
		<link>http://www.guavestudios.com/blog/2012/01/tutorial-voxel-via-particle-flow/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.guavestudios.com/blog/2012/01/tutorial-voxel-via-particle-flow/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 10:57:46 +0000</pubDate>
		<dc:creator>David Fritsche</dc:creator>
				<category><![CDATA[Multimedia]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[3ds Max]]></category>
		<category><![CDATA[3ds Max Script]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Voxel]]></category>

		<guid isPermaLink="false">http://www.guavestudios.com/blog/?p=1706</guid>
		<description><![CDATA[Ja, ich gib&#8217;s zu, ich bin ein Minecraft Fan! Da ich mir für diverse Bauprojekte gerne eine Blaupause herstelle, hab ich mir ein Workflow überlegt, wie man ein normales (High-Poly)Mesh in diesen klassischen Block-Voxel-Style umwandeln kann. Im Grunde gibt es dazu zwei verschiedene Herangehensweisen: die einzelnen Voxel mit (A) üblichen Polygon-Boxen herstellen oder (B) mit [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="lightbox[65]" href="http://www.guavestudios.com/blog/wp-content/uploads/2012/01/gs_logo_minecraft.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img src="http://www.guavestudios.com/blog/wp-content/uploads/2012/01/gs_logo_minecraft.jpg" alt="ala" width="530" height="400" /></a></p>
<p>Ja, ich gib&#8217;s zu, ich bin ein <a href="http://www.minecraft.net" target="_blank">Minecraft </a> Fan! </p>
<p>Da ich mir für diverse Bauprojekte gerne eine Blaupause herstelle, hab ich mir ein Workflow überlegt, wie man ein normales (High-Poly)Mesh in diesen klassischen Block-Voxel-Style umwandeln kann.</p>
<p>Im Grunde gibt es dazu zwei verschiedene Herangehensweisen: die einzelnen Voxel mit (A) üblichen Polygon-Boxen herstellen oder (B) mit einem Partikel-System.<br />
Beide habe ich ausprobiert und bin zum Entschluss gekommen, dass die Partikel-Variante schneller und vor allem flexiebler ist. Gerade bei einem hohen Voxel-Count ist das Partikel-System von grossem Vorteil.<br />
Verwendet habe ich dabei Particle-Flow und etwas Max-Script.</p>
<p>Meine Lösung funktioniert in etwa so:<br />
1. Fülle ein Bereich/Box mit Voxel/Partikel<br />
2. Entferne alle Voxel/Partikel die nicht innerhalb des Objektes sind<br />
&#8230; klingt einfach und das ist es auch <img src='http://www.guavestudios.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Und das ganze jetzt Schritt für Schritt:</p>
<p><strong>Partikel System erstellen</strong></p>
<p>1. &#8220;PF Source&#8221; in der Szene erstellen</p>
<p>2. Icon Type der PF-Source auf &#8220;Box&#8221; stellen und die Dimensionen so eingeben dass sie das Objekt umschliesst welches wir in den Voxel-Haufen umwandeln möchten (in meinem Beispiel ist das Objekt ein Torus Knopf).<br />
Später werde ich &#8220;Logo Size&#8221; etwas zweckentfremden, dieser Wert steht dann für die Grösse der Voxel-Boxen (bzw. den Abstand des 3D-Rasters)<br />
Nicht Vergessen: Bei &#8220;Quantity Multiplier&#8221; Viewport auf 100% stellen (damit man später auch wirklich alles sieht)</p>
<p><a rel="lightbox[65]" href="http://www.guavestudios.com/blog/wp-content/uploads/2012/01/voxelgen_01.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img src="http://www.guavestudios.com/blog/wp-content/uploads/2012/01/voxelgen_01.jpg" alt="ala" width="530" height="347" /></a></p>
<p><strong>Voxel generieren</strong></p>
<p>3. &#8220;Particle View&#8221; öffnen</p>
<p>4. Da es keinen Operator gibt der ein 3D-Raster mit Partikel füllt muss man sich hier mit etwas MaxScript aushelfen. Darum erstell ich im ersten Event mal ein &#8220;Birth Script&#8221; Operator.</p>
<p><a rel="lightbox[65]" href="http://www.guavestudios.com/blog/wp-content/uploads/2012/01/voxelgen_02.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img src="http://www.guavestudios.com/blog/wp-content/uploads/2012/01/voxelgen_02.jpg" alt="ala" width="530" height="347" /></a></p>
<p>5. Das Script soll ein 3D-Raster erstellen (mit den Dimensionen der Particel-Source) und dieses dann mit Partikel füllen. Dazu könnt ihr folgendes Script einfach kopieren:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">on ChannelsUsed pCont do
(
	pCont.useAge = true
	pCont.useTime = true
	pCont.usePosition = true
)
&nbsp;
on Init pCont do
(
	global ps = pCont.getParticleSystemNode()
	global RasterSize = ps.logo_size
	global RasterSegments = [floor(ps.emitter_width/RasterSize+.5) as integer,floor(ps.emitter_length/RasterSize+.5) as integer,floor(ps.emitter_height/RasterSize+.5) as integer]
	--print RasterSegments
)
&nbsp;
on Proceed pCont do
(
	t = pCont.getTimeStart() as float
	if t &lt; 0 do (
		for x = 0 to (RasterSegments.x-1) do (
		for y = 0 to (RasterSegments.y-1) do (
		for z = 0 to (RasterSegments.z-1) do (
			pCont.AddParticle()
			pCont.particleIndex = pCont.NumParticles()
			pCont.particleAge = 0
			pCont.particlePosition = ps.center + ([x*RasterSize,y*RasterSize,z*RasterSize]-(RasterSegments-[1,1,1])*RasterSize*.5)
		)))
	)
)
&nbsp;
on Release pCont do
(
&nbsp;
)</pre></div></div>

<p><strong>Voxel filtern</strong></p>
<p>6. Mit Hilfe des &#8220;Group Selection&#8221; Operator werden alle Partikel herausgefiltert, die sich (nicht) im Objekt befinden.<br />
Dazu einfach den Operator in das selbe Event schieben und als &#8220;Inside Object&#8221; unseren Torus Knopf auswählen. Zusätzlich &#8220;Reverse Selection&#8221; aktivieren.</p>
<p>7. Mit &#8220;Split Group&#8221; und einem &#8220;Delete&#8221; Operator können wir nun alle überflüssigen Voxels löschen</p>
<p><a rel="lightbox[65]" href="http://www.guavestudios.com/blog/wp-content/uploads/2012/01/voxelgen_03.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img src="http://www.guavestudios.com/blog/wp-content/uploads/2012/01/voxelgen_03.jpg" alt="ala" width="530" height="347" /></a></p>
<p><strong>Voxel Form festlegen</strong></p>
<p>8. Jetzt noch mit dem &#8220;Shape&#8221; Operator die gewünschte Voxelform und -grösse auswählen und fertig ist unser &#8220;Voxel-Generator&#8221;</p>
<p><a rel="lightbox[65]" href="http://www.guavestudios.com/blog/wp-content/uploads/2012/01/voxelgen_04.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img src="http://www.guavestudios.com/blog/wp-content/uploads/2012/01/voxelgen_04.jpg" alt="ala" width="530" height="347" /></a></p>
<p>.. das ist das Grundkonzept. Wenn man jetzt noch etwas tweaked kann man so ziemlich alles damit machen. Z.B. auch animierte Voxel:</p>
<p><a rel="lightbox[65]" href="http://www.guavestudios.com/blog/wp-content/uploads/2012/01/voxel_animation_infinite.gif#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img src="http://www.guavestudios.com/blog/wp-content/uploads/2012/01/voxel_animation_infinite.gif" alt="ala" width="530" height="398" /></a></p>
<p>Wem die Partikel-Technik nicht geheuer ist kann auch gerne dieses Script &#8220;Block Creator&#8221; verwenden:<br />
<a href="http://code.google.com/p/block-creator/downloads/detail?name=block-creator.ms&#038;can=2&#038;q=#makechanges" target="_blank"><big>Download</big></a></p>
<p>Zum Installieren das Script einfach per Drag-and-Drop ins Fenster schieben. Das Tool findet man in der Kategorie &#8220;GSTools&#8221;.</p>
<p>dazu noch ein kurzes Tutorial:<br />
<iframe width="512" height="384" src="http://www.youtube.com/embed/OYnOOkFO-QE" frameborder="0" allowfullscreen></iframe></p>
<div id="facebook_like"><iframe style="height:80px" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.guavestudios.com%2Fblog%2F2012%2F01%2Ftutorial-voxel-via-particle-flow%2F&amp;layout=standard&amp;show-faces=true&amp;width=450&amp;action=like&amp;font=arial&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:auto;"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.guavestudios.com/blog/2012/01/tutorial-voxel-via-particle-flow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Max Script: AnimationReTimer</title>
		<link>http://www.guavestudios.com/blog/2011/08/max-script-animationretimer/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.guavestudios.com/blog/2011/08/max-script-animationretimer/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 15:56:53 +0000</pubDate>
		<dc:creator>David Fritsche</dc:creator>
				<category><![CDATA[Multimedia]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[3ds Max]]></category>
		<category><![CDATA[3ds Max Script]]></category>

		<guid isPermaLink="false">http://www.guavestudios.com/blog/?p=1372</guid>
		<description><![CDATA[Da es öfters vorkommt, dass man mehrere animierte Objekte in einer gewissen Reihenfolge animieren möchte (z.B. bei Auf- oder Abbauanimationen) habe ich vor einiger Zeit mal ein Script geschrieben welches ich nun teilen möchte. Louis Marcoux hat auf seinem Blog ganz schön beschrieben wie man so ein Script selber programmieren kann: Reveal Techniques Ich habe [...]]]></description>
			<content:encoded><![CDATA[<p>Da es öfters vorkommt, dass man mehrere animierte Objekte in einer gewissen Reihenfolge animieren möchte (z.B. bei Auf- oder Abbauanimationen) habe ich vor einiger Zeit mal ein Script geschrieben welches ich nun teilen möchte.</p>
<p>Louis Marcoux hat auf seinem Blog ganz schön beschrieben wie man so ein Script selber programmieren kann: <a href="http://area.autodesk.com/blogs/louis/reveal_techniques_and_autodesk_university_in_las_vegas" target="_blank">Reveal Techniques</a></p>
<p>Ich habe einen ähnlichen Ansatz allerdings mit einer kleinen Änderung welche mehr Dynamik und Flexibilität ermöglicht.</p>
<p><strong>AnimationReTimer</strong></p>
<p>Die Idee ist, dass sich jedes dieser Objekte an einem (oder mehreren) &#8220;Timer-Objekt&#8221; orientiert und zwar abhängig von der Distanz. Kommt also dieses Timer-Objekt in die Nähe eines anderen Objekts fängt dieses seine Animation an.<br />
Somit kann ich jedes dieser Objekte frei animieren (alle mit der selben Animation wie im Video-Tutorial, aber auch jedes Objekt mit einer einzigartigen Animation).<br />
Die Keys dieser Animation werden dann durch das Script einfach nur verschoben.</p>
<p><a href="http://www.guavestudios.com/blog/wp-content/uploads/2011/08/ART_screenshot.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img src="http://www.guavestudios.com/blog/wp-content/uploads/2011/08/ART_screenshot.jpg" alt="" title="ART_screenshot" width="206" height="616" class="alignleft size-full wp-image-1375" /></a></p>
<p><strong>Objecs [Add] [Remove]</strong><br />
Timer-Objekt(e) hinzufügen.<br />
Timer-Objekte sollten mindestens zwei Key-Frames haben (z.B. Start- &#038; Endposition). Wird also ein Timer-Objekt durch ein Noise-Controller gesteuert sollten trotzdem (irgendwelche) Keyframes existieren, damit das Script weiss wann die Animation anfängt bzw. aufhört.</p>
<p><strong>Animation Reference</strong><br />
Animation fängt an <-> hört auf wenn Timer-Objekt am nächsten ist.</p>
<p><strong>Distance Reference</strong><br />
Distanz zum Timer-Objekt wird am <br />Anfang <-> Ende der Animation gemessen.<br />
Nur sinnvoll wenn sich Objekt bewegt.</p>
<p><strong>Delay</strong><br />
Ganze Animation verzögern (Frames).</p>
<p><strong>Accuracy</strong><br />
Genauigkeit der Berechnung um diese zu beschleunigen. Eignet sich wenn das Skript auf sehr viele Objekte angewendet wird (höherer Wert = schnellere &#038; ungenauere Berechnung).</p>
<p><strong>Lazy Animation</strong><br />
Objekt kann auch vom Nachbar-Objekt aktiviert werden. Dieser Wert steuert den Zeitverzug. Timer-Objekt kann somit eine Art Welle erzeugen.</p>
<p><strong>Distance Dependent</strong><br />
Wenn Aktiv wird Objekt nur vom nächsten Timer-Objekt aktiviert ansonsten kann es unabhängig auch vom Nachbar-Objekt aktiviert werden (je nach Wert von &#8220;Lazy Animation&#8221;).</p>
<p><strong>RETIME!</strong><br />
Alle <strong>selektierten</strong> Objekte werden &#8220;Retimed&#8221;.</p>
<div style="clear:both;"></div>
<p><strong>Installation:</strong><br />
Script einfach per Drag-and-Drop ins Fenster schieben.<br />
Tool (AnimationReTimer) findet man bei der Kategorie &#8220;Animation-Tools&#8221;.</p>
<p><a href="http://code.google.com/p/animation-re-timer/downloads/detail?name=animation-re-timer.ms&#038;can=2&#038;q=#makechanges" target="_blank"><big>Download</big></a></p>
<p>.. hoffe das Script hilft euch wie es mir schon oft geholfen hat!</p>
<p>Hier ein kleines Tutorial:</p>
<p><iframe width="512" height="384" src="http://www.youtube.com/embed/jDVG4aXBge4" frameborder="0" allowfullscreen></iframe></p>
<p>&#8230; und noch eine weiteres Beispiel:</p>
<p><iframe width="512" height="384" src="http://www.youtube.com/embed/JsoruBoopl4" frameborder="0" allowfullscreen></iframe></p>
<div id="facebook_like"><iframe style="height:80px" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.guavestudios.com%2Fblog%2F2011%2F08%2Fmax-script-animationretimer%2F&amp;layout=standard&amp;show-faces=true&amp;width=450&amp;action=like&amp;font=arial&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:auto;"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.guavestudios.com/blog/2011/08/max-script-animationretimer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tutorial: Displacement Map aus Fototextur generieren</title>
		<link>http://www.guavestudios.com/blog/2009/06/tutorial-displacement-map-aus-fototextur-generieren/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.guavestudios.com/blog/2009/06/tutorial-displacement-map-aus-fototextur-generieren/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 13:53:19 +0000</pubDate>
		<dc:creator>David Fritsche</dc:creator>
				<category><![CDATA[Multimedia]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[Texturen]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.guavestudios.com/blog/?p=65</guid>
		<description><![CDATA[Tutorial, wie man aus einer Fototextur eine qualitativ hochwertie Displacement Map generiert.]]></description>
			<content:encoded><![CDATA[<p>In diesem kleinen Tutorial möchte ich zeigen wie man mit relativ einfachen Arbeitsschritten aus einer normalen Textur eine qualitativ hochwertige Displacement Map generieren kann.</p>
<p><a rel="lightbox[65]" href="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/workflow.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img src="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/workflow.jpg" alt="ala" width="530" height="152" /></a></p>
<p>Es gibt diesbezüglich zwar schon ein Programm namens &#8220;CrazyBump&#8221; (<a href="http://www.crazybump.com" target="_blank">www.crazybump.com</a>), jedoch bin ich mit dessen Ergebnisen nicht immer ganz zufrieden, und deshalb habe ich selber ein bisschen geforscht, wie man Displacement Maps einfach selber generieren kann.</p>
<p>Beim Erstellen von Displecement Maps aus normalen Texturen gibt es ein Problem. Denn, wie es nicht anders sein könnte, stellen Texturen die Farbe und nicht die Tiefe einer Oberfläche dar. Gruben kann man allerdings trotzdem erkennen, da sie sozusagen im Schatten liegen.  Diese erscheinen also dunkler als Erhebungen. Das gibt uns einen Hinweis, wie wir die Texturen auswählen sollten. D.h. gleichmässig beleuchtete Oberflächen, bei denen Gruben nicht wirklich dunkler erscheinen werden ein schlechtes Ergebnis geben.<br />
Wenn man also eine Textur total desaturiert hat man im Grund fast schon eine Displacement Map, allerdings ist das Ergebnis viel zu „flach“ und diese Textur kann höchstens als Bump Map dienen.</p>
<p><a rel="lightbox[65]" href="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/workflow_desat.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img src="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/workflow_desat.jpg" alt="" width="520" height="222" /></a></p>
<p>Warum ist das so? Ganz einfach, weil tiefere Ebenen (oder Gruben) im selben „schwarz-weiss-Bereich“ sind wie hohe Ebenen. Im Bild erscheinen sie zwar dunkler weil bei Gruben mehr dunklere Bereiche sind wie helle. Das Problem ist allerdings, dass kleine Erhebungen in tiefen Ebenen einen selben (oder ähnlichen) Weisswert/Helligkeit haben wie Erhebungen in hohen Ebenen. D.h. sie haben die selbe Höhe. Damit wir also  mehr Tiefe in die Map bringen, muss alles was in einer Grube ist grundsätzlich dunkler sein wie alles was auf einer Erhebung ist. Sobald etwas die selbe Helligkeit hat, ist es auch auf der selben Höhe.</p>
<p>Da wir nun wissen was an dieser S/W-Map noch falsch ist bzw. fehlt stellt sich nun die Frage, wie wir das erreichen. Und die Lösung ist im Grunde ganz einfach. Wir filtern die Map nach Detailstufen. D.h. in der ersten und gröbsten Detailstufe interessieren wir uns nicht für die kleinen Grübchen und Kerben, sondern für die grossen „Täler und Berge“. Indem wir also die Map stark weich zeichnen (also z.b. mit einem Gaussian Blur) werden diese kleinen Details verwischt und nur die grobe Struktur bleibt übrig.</p>
<p><a rel="lightbox[65]" href="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/blured1.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img src="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/blured1.jpg" alt="" width="520" height="390" /></a></p>
<p>Vorher empfehle ich übrigens die ganze Komposition auf 16bit-Mode zu stellen, weil Displacement Maps grundsätzlich hohe Bit-tiefen benötigen.<br />
Da mit diesem Effekt (Weichzeichnen) aber der Kontrast verringert wird, muss dieser wieder angepasst werden (d.h. 100% schwarz bis 100% weiss).<br />
Am einfachsten macht man das mit „Auto Contrast“. Hier ist allerdings Wichtig, dass man vorher die Toleranzen auf 0,00% Stellt [1] (Levels&#8230; → Options&#8230; → Shadows-Clip und Highlights-Clip auf 0,00% Stellen).</p>
<p><a rel="lightbox[65]" href="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/level_settings.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img src="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/level_settings.jpg" alt="" width="339" height="315" /></a></p>
<p>Und nun bauen wir stufenweise mehr Detail in unsere Map. In meinem Beispiel habe ich 8 Stufen, wobei ich bei den höheren Detailstufen kleinere „Blur-Schritte“ gemacht habe [2] (somit werden die kleinen Details nicht ganz so spitzig). Bei der niedrigsten Detailstufe sollte der Blur so stark sein, dass die gröbsten Details gerade noch sichtbar sind (z.B. bei einer Mauer sollten die einzelnen Steine noch erkennbar sein). Bei jedem neuem Layer wird der Kontrast natürlich angepasst. Die Oberste stufe ist im Grunde das originale Bild, allerdings auch mit Kontrastanpassungen (falls überhaupt nötig).<br />
Diese Layer müssen jetzt ineinander geblendet werden. Hierfür verwende ich als Layereffect „Screen“ [1], dabei muss aber die Opacity angepasst werden. Diese ergibt sich aus der Anzahl von Layer. In meinem Beispiel also 8 Layer. D.h. 100% / 8 Layer ergiebt 12.5 % für jeden Layer [3]. Der unterste wird natürlich nicht mitgezählt. Dieser bleibt auf 100% Opacity und hat „Normal“ als Layereffect.</p>
<p><a rel="lightbox[65]" href="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/layer_settings1.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img src="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/layer_settings1.jpg" alt="" width="237" height="415" /></a></p>
<p>Nun kann man alle Layer zusammenmergen und hat im Grunde schon die fertige Displacement Map. Diese kann man auch problemlos tweaken. Z.B. kann man die Gradationskurven bearbeiten.</p>
<p><a rel="lightbox[65]" href="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/final_displacementmap.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img src="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/final_displacementmap.jpg" alt="" width="520" height="390" /></a></p>
<p>Gerender sieht das dann so aus (3d Studo Max &amp; VRay &amp; VRayDisplacement):</p>
<p><a rel="lightbox[65]" href="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/final_wire.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img src="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/final_wire.jpg" alt="" width="520" height="390" /></a></p>
<p>Bzw. mit Diffusemap so:</p>
<p><a rel="lightbox[65]" href="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/final_renderb1.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img src="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/final_renderb1.jpg" alt="" width="520" height="390" /></a></p>
<p>Und hier noch zwei weitere Beispiele:</p>
<p><a rel="lightbox[65]" href="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/displ_bsp2.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img src="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/displ_bsp2.jpg" alt="" width="520" height="260" /></a></p>
<p><a rel="lightbox[65]" href="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/displ_bsp3.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img src="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/displ_bsp3.jpg" alt="" width="520" height="260" /></a></p>
<p>Es gibt sicherlich auch andere Möglichkeiten einen solchen Effekt zu erreichen, wichtig ist allerdgins nur das Prinzip das dahinter steckt.<br />
Photoshop hat z.B. einen Filter namens &#8220;Surface Blur&#8221;, welcher einen sehr ähnlichen Effekt erzeugt, allerdings wird mit diesem Filter die Oberfläche meist sehr unruhig und rau. Bis jetzt sind mir die besten Ergebnisse mit diesem Workflow gelungen, da man relativ viele Kalibrierungsmöglichkeiten hat.</p>
<p>Ich hoffe dieses Tutorial war halbwegs verständlich. Falls aber doch Unklarheiten bestehen sollten, könnt ihr gerne Fragen stellen.<br />
Ansonsten wünsche ich viel Spass beim selber Probieren!</p>
<p><strong>edit:</strong><br />
Auf Wunsch von Joooo hab ich noch ein ganzes Beispiel gemacht. Das könnt ihr <a href="http://projects.guavestudios.com/blog/displacement/quartz.zip">hier</a> herunterladen. Im Zip-File enthalten sind:</p>
<ul>
<li>Orgiginale Textur / Diffuse Map (hab ich übrigens von <a href="http://www.cgtextures.com" target="_blank">www.cgtextures.com</a>)</li>
<li>psd-File mit den einzelnen Layer</li>
<li>fertige Displacement-Map (bei der 2. version hab ich einfach nur den Kontrast mittels Curves bearbeitet)</li>
<li>3ds-Max-Szene mit dementsprechenden Material (ACHTUNG: VRay-Materials &#038; VRay-Displacement)</li>
</ul>
<p>Aussehen sollte das ganze dann ungefähr so:</p>
<p><a rel="lightbox[65]" href="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/quartz_rendering.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img src="http://www.guavestudios.com/blog/wp-content/uploads/2009/06/quartz_rendering.jpg" alt="" width="520" height="390" /></a></p>
<div id="facebook_like"><iframe style="height:80px" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.guavestudios.com%2Fblog%2F2009%2F06%2Ftutorial-displacement-map-aus-fototextur-generieren%2F&amp;layout=standard&amp;show-faces=true&amp;width=450&amp;action=like&amp;font=arial&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:auto;"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.guavestudios.com/blog/2009/06/tutorial-displacement-map-aus-fototextur-generieren/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

