Papervision3D Grundlagen III Animierte Materials
Dezember 6th, 2009 by adminIn den bissherigen Papervision Beispielen wurden lediglich simple ColorMaterials zur Texturierung von Objekten genutzt – Zeit diese durch animierte MovieClips zu ersetzen. Hierzu wird ein entsprechender MC erstellt und mit dem Namen “tex_mc” verknüpft. Ich arbeite hier mit der Flash IDE und als Animation habe ich eine Farbtransformation gewählt, weil das den 70er Jahre Style hat… disco…
Als Grundlage hierfür kommt vorhergehendes Beispiel gerade recht. Zunächst die modifizierte Version des Codes – Erläuterungen folgen weiter unten:
package{ import flash.display.MovieClip; import flash.events.Event; import org.papervision3d.materials.MovieMaterial; import org.papervision3d.materials.utils.MaterialsList; import org.papervision3d.objects.primitives.Cube; import org.papervision3d.view.BasicView; public class DiscoCube extends BasicView { private var tex :MovieClip; private var materialsList :MaterialsList; private var material: MovieMaterial; private var primitive: Cube; public function DiscoCube() { super(500, 500, true); tex = new tex2_mc; material = new MovieMaterial(tex, false, true) materialsList = new MaterialsList( { left:material, right:material, front:material, back:material, top:material, bottom:material } ); primitive = new Cube(materialsList, 500, 500, 500); scene.addChild(primitive); startRendering(); } override protected function onRenderTick(e:Event = null):void { primitive.rotationY += 2 primitive.rotationX += 2 primitive.rotationZ += 2 super.onRenderTick(); } } }
Der MovieClip wird dem MovieMaterial als erster Parameter übergeben. Der Kubus besitzt sechs Seiten und für jede dieser Seiten wird das selbe Material verwendet. Einfacher ginge das in einem solchen Fall, indem man die MaterialsList mit {all:myMaterial} initialisiert, doch der Vollständigkeit halber habe ich die Sache ausgeschrieben, denn so lässt sich leichter nachvollziehen, wie die einzelnen Seiten des Würfels mit eventuell verschiedenen Texturen belegt werden können:
materialsList = new MaterialsList( {all:material} ); // oder, für alle die gern viel tippen... materialsList = new MaterialsList( { left:material, right:material, front:material, back:material, top:material, bottom:material } );
Die MaterialsList wird anschließend dem Cube zur Initialisierung übergeben, es folgen dann noch drei weitere Parameter, nähmlich die Maße auf x, y und z-Achse. Wie bereits im ersten PV3D Grundlagen Tutorial erwähnt, wäre es möglich als fünften Parameter noch die Anzahl an Segmenten für das Objekt anzugeben, was sich negativ auf die Performance auswirkt.
materialsList = new MaterialsList( {all:material} ); primitive = new Cube(materialsList, 500, 500, 500);
Die Materials funktionieren alle ähnlich, desshalb muss nicht jedes im Detail erklärt werden. Wer dieses Tutorial einfach findet, wird auch mit dem Rest zurecht kommen. Einen Tick schwerer wird es dann mit ShadeMaterials, dem sollte man ein eigenes Grundlagentutorial einräumen, in Teil IV.