Zurück   Flashforum > Software > 3D

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 15-07-2008, 12:26   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2005
Beiträge: 28
Objekt drehen und färben (Flex und Papervision)

Ich habe ein Tutorial gemacht, um einen Gegenstand mit verschiedenen Farben zu versehen. Leider klappt das ganze nicht so wie ich mir das gedacht habe. Wie ich es auch anstelle, das "Cycle" bleibt schwarz. Es hat nicht mal die rote Ausgangsfarbe.

Habt ihr vielleicht ne Ahnung, woran das liegen könnte?
Was mir auch noch ein Rätsel ist ist, wie ich das Objekt drehen kann. Im Idealfall will ich auch daran vorbeigehen, zoomen usw. Aber eins nach de anderen.

Link zum Tutorial:
http://www.sitepoint.com/article/cre...-viewer-flex-3

Code:
<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal" 
creationComplete="onInit(event);"> 
<mx:Script> 
<![CDATA[
	import org.papervision3d.materials.shadematerials.FlatShadeMaterial; 
import mx.utils.ColorUtil; 
import mx.core.UIComponent; 

import org.papervision3d.materials.utils.MaterialsList; 
import mx.core.UIComponent; 

import org.papervision3d.cameras.FreeCamera3D; 
import org.papervision3d.render.BasicRenderEngine; 
import org.papervision3d.objects.parsers.DAE; 
import org.papervision3d.objects.DisplayObject3D; 
import org.papervision3d.scenes.Scene3D; 
import org.papervision3d.view.Viewport3D; 



import org.papervision3d.lights.PointLight3D; 

private var renderer:BasicRenderEngine = new BasicRenderEngine(); 
private var scene:Scene3D = new Scene3D(); 
private var camera:FreeCamera3D = new FreeCamera3D(); 
private var viewport:Viewport3D = new Viewport3D( 200, 200, true, true ); 
private var model:DisplayObject3D = null; 

[Embed(source="assets/cycle.dae", mimeType="application/octet-stream")] private var MyModel:Class; 

protected function onInit( event:Event ) : void { 
 var flexComp:UIComponent = new UIComponent(); 
 cnvUnderneath.addChild( flexComp ); 
 flexComp.addChild( viewport ); 

 loadModel(); 

 camera.y = -2700; 
 camera.x = 0; 
 camera.z = 2000; 
 camera.zoom = 50;
 camera.lookAt( model ); 
 addEventListener(Event.ENTER_FRAME,onEnterFrame); 
} 
private function loadModel() : void { 
 if ( model != null ) 
 scene.removeChild( model ); 
 var light:PointLight3D = new PointLight3D( true,true ); 
 light.z = -2000; 
 light.x = 500; 
 light.y = 500; 
 var lightColor:uint = 0x111111; 
 var modelCol:DAE = new DAE(); 
 modelCol.scale = 1.1; 
 modelCol.load( XML( new MyModel() ), new MaterialsList( {  	
   material0:new FlatShadeMaterial( light, 0x000000, lightColor ), 
   ForegroundColor:new FlatShadeMaterial( light, 0x000000, lightColor ), 
   material1:new FlatShadeMaterial( light, clrPicker.selectedColor, 
     lightColor ), 
   material2:new FlatShadeMaterial( light, 
   mx.utils.ColorUtil.adjustBrightness(clrPicker.selectedColor,-20), lightColor ), 
   FrontColor:new FlatShadeMaterial( light, 0xFFFFFF, lightColor ), 
   material3:new FlatShadeMaterial( light, 0x000099, lightColor ), 
   material4:new FlatShadeMaterial( light, 
   mx.utils.ColorUtil.adjustBrightness(clrPicker.selectedColor,-200), lightColor ) 
 } ) ); 
 modelCol.roll( 28 ); 

 model = scene.addChild( modelCol ); 

 light.lookAt(model); 
} 
private function onEnterFrame( event : Event ):void 
{ 
 renderer.renderScene(scene,camera,viewport); 
} 
]]> 
</mx:Script> 
<mx:Panel title="Properties"> 
 <mx:Form> 
   <mx:FormItem label="Color"> 
     <mx:ColorPicker id="clrPicker" selectedColor="#8888DD" 
       change="loadModel();" /> 
   </mx:FormItem> 
 </mx:Form> 
</mx:Panel> 
<mx:Canvas id="cnvUnderneath" width="100%" height="100%" /> 
</mx:Application>
lila_leela ist offline   Mit Zitat antworten
Alt 16-07-2008, 15:24   #2 (permalink)
Neuer User
 
Registriert seit: Sep 2005
Beiträge: 28
Hab inzwischen herausgefunden, dass das Licht zu dunkel war.

var lightColor:uint = 0x111111;

Wenn man hier die Werte in 0xFFFFFF ändert, sieht man wenigstens ein schwarz-weiß-Bild des Ganzen. Nur leider wird es immer noch nichts mit dem Farbe ändern über den ColorPicker und mit dem Drehen und Zoomen klappt leider auch noch nix.

Hat niemand eine Idee?

Über modelCol.rotationZ = 0; lässt sich ja schon was drehen, aber leider nicht direkt im swf mit der Mouse.
lila_leela ist offline   Mit Zitat antworten
Alt 16-07-2008, 16:18   #3 (permalink)
Flash addicted
 
Registriert seit: Sep 2003
Ort: München
Beiträge: 371
Hi lila,

hier ien kleines "dreh" Beispiel:


PHP-Code:
// Anhand der Y-Mausposition wiesen wir der Kamera(also dem Y wert) einen Wert zwischen -100 und 100 zu
default_camera.= -(((mouseY - (stage.height 2)) / stage.height) * 200);
             
// Wir wollen nicht das die Kamera sich vom Objekt entfernt(555 ist hier der feste abstand)

default_camera.moveForward(default_camera.distanceTo(meinobject) - 555);

//Jetzt wollen wir das Objekt drehen in Bezug auf die xMausposition

default_camera.rotationY = -((mouseX stage.width) * 360); 

Das ist nur ein kleines Beispiel wie man die verwendete(n) Kamera
drehen kann.

Grüßend,
tm2003
__________________
Der Optimist glaubt in der besten aller Welten zu leben und der Pessimist fürchtet, dass es wahr ist!


Wer nicht alles weiß, kann alles noch immer lernen!
tm2003 ist offline   Mit Zitat antworten
Alt 22-07-2008, 15:53   #4 (permalink)
Neuer User
 
Registriert seit: Sep 2005
Beiträge: 28
Mache ich irgendwas grundsätzlich falsch?
Ich hab mir jetzt mal ein einfacheres Beispiel gesucht (hier aus dem Forum), aber jetzt sehe ich das Objekt (Ebene) gar nicht mehr.
Anbei der Code, vielleicht findet ja jemand den Fehler. Langsam bin ich deprimiert.

PHP-Code:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Script>
        <![CDATA[
            import org.papervision3d.lights.PointLight3D;
            import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
            import org.papervision3d.objects.primitives.Cube;
            import org.papervision3d.render.LazyRenderEngine;
            import org.papervision3d.objects.primitives.Plane;
            import org.papervision3d.materials.ColorMaterial;
            import org.papervision3d.cameras.Camera3D;
            import org.papervision3d.core.proto.SceneObject3D;
            import org.papervision3d.view.Viewport3D;
            import org.papervision3d.cameras.Camera3D;
            import org.papervision3d.scenes.Scene3D;
            
            //Variablendeklaration
            private var szene : Scene3D;
            private var ebene : Plane;            
            private var kamera : Camera3D;
            private var sicht : Viewport3D;
            private var objekt : SceneObject3D;
            private var renderer : LazyRenderEngine;
            private var mat : ColorMaterial;
            private var matflat : FlatShadeMaterial;
            private var wuerfel : Cube;
            private var licht : PointLight3D;
            private var lichtfarbe : uint;
            
                        
            public function main() {
                this._init();
            }

            private function _init() : void {
                
                this.sicht = new Viewport3D ( 800, 600 );
                this.sicht.x = 0;
                this.sicht.y = 0;
                this.addChild( this.sicht);
                
                this.szene = new Scene3D();
                this.kamera = new Camera3D();
                
                // Anhand der Y-Mausposition weisen wir der Kamera(also dem Y wert) einen Wert zwischen -100 und 100 zu 
                kamera.y = -(((mouseY - (stage.height / 2)) / stage.height) * 200); 
              
                // Wir wollen nicht das die Kamera sich vom Objekt entfernt(555 ist hier der feste abstand) 
                kamera.moveForward(kamera.distanceTo( ebene ) - 555); 

                //Jetzt wollen wir das Objekt drehen in Bezug auf die xMausposition 
                kamera.rotationY = -((mouseX / stage.width) * 360); 
                                
                ebene.roll( 30 );
                ebene.yaw( 30 );
                
                this.mat = new ColorMaterial (0xFF0000);
                mat.doubleSided = true;
                
                this.matflat = new FlatShadeMaterial ( licht ); 
                licht.lookAt ( ebene );
                this.licht = new PointLight3D( true, true ); 
                licht.z = -2000; 
                licht.x = 500; 
                licht.y = 500; 
                this.lichtfarbe = 0x111111; 
                
                this.ebene = new Plane (matflat, 500, 300, 5, 5, null);

                this.szene.addChild( this.ebene ) ;
                
                this.renderer = new LazyRenderEngine ( this.szene, this.kamera, this.sicht );
                this.renderer.render();
            } 
        ]]>
    </mx:Script>
    
    <mx:Canvas id="cnvUnderneath" width="100%" height="100%" backgroundColor="#FFFF99"/> 
</mx:Application>
lila_leela ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 12:32 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele