Zurück   Flashforum > Software > 3D

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-03-2009, 16:57   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 42
Mehrere collada interactiv machen

Ich habe schon versucht das script von
codejockey umzuarbeiten allerdings komme ich nicht auf den trichter...

Es will das DisplayObject3D in der getColladaDisplayObj() nicht finden.

hier mein code, nicht erschrecken :
PHP-Code:
package Main {

     
    
import com.adobe.utils.*;

    
import flash.display.Sprite;
    
import flash.events.Event;
    
import flash.filters.BlurFilter;
    
import com.flashmoto.gallery.Gallery;
    
    
import gs.TweenMax;
    
    
import org.papervision3d.cameras.Camera3D;
    
import org.papervision3d.core.proto.MaterialObject3D;
    
import org.papervision3d.materials.utils.MaterialsList;
    
import org.papervision3d.events.FileLoadEvent;
    
import org.papervision3d.events.InteractiveScene3DEvent;
    
import org.papervision3d.objects.DisplayObject3D;
    
import org.papervision3d.objects.parsers.Collada;
    
import org.papervision3d.render.BasicRenderEngine;
    
import org.papervision3d.scenes.Scene3D;
    
import org.papervision3d.view.Viewport3D;
    
import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
    
import org.papervision3d.lights.PointLight3D;
    
import org.papervision3d.materials.ColorMaterial;
 

    public class 
logo extends Sprite        
    
{

        private var 
PointLight                    :PointLight3D//A light will be needed for the GouraudShader. The light is used to determine the source of light, duh.
        
private var flatShadeMaterial            :FlatShadeMaterial;
        private var 
viewport                    :Viewport3D;
        private var 
scene                        :Scene3D;
        private var 
camera                        :Camera3D;
        private var 
renderer                    :BasicRenderEngine;
        private var 
dae1                         :Collada;
        private var 
dae2                                :Collada;
        private var 
dae3                         :Collada;
        private var 
dae4                         :Collada;
        private var 
colormaterial                :ColorMaterial;
    
        
        
        
        public function 
logo()
        {
            
init3D();
            
stage.addEventListener(Event.ENTER_FRAMErenderTick);
        
        }
        
        
        
        private function 
init3D():void {
            
/* *************************************** */
            /*    Make sure you set viewport interactive */
            /*  property to true!!!!!!!!!!!            */
            /* *************************************** */
            
viewport = new Viewport3D(950600falsetruetruetrue);
            
this.addChild(viewport);
            
            
scene = new Scene3D();
            
            
camera = new Camera3D();
            
// let's back the camera up a little so we're not inside the Logo (yuck!)
            
camera.= -2020;
            
camera.0;
            
camera.zoom 10;
            
camera.focus 1000;
            
renderer = new BasicRenderEngine();

            
// bitmap grafik
        /*    var mList = new MaterialsList();
            var mtl3:BitmapFileMaterial = new BitmapFileMaterial("sides.jpg");
            mList.addMaterial(mtl3, "ERDefaultMaterial");
        */
            
            
            
PointLight = new PointLight3D(true);
            
PointLight.= -1500;
            
flatShadeMaterial = new FlatShadeMaterial(PointLight0x5555550x111111);
            
colormaterial = new ColorMaterial(0x44444);
            var 
ml MaterialsList = new MaterialsList(); 
            
ml.addMaterial(colormaterial"ERDefaultMaterial"); 
            var 
dae1 Collada = new Collada("test.dae",ml0.1);
            var 
dae2 Collada = new Collada("work.dae" ,ml0.1);
            var 
dae3 Collada = new Collada("news.dae" ,ml0.1);
            var 
dae4 Collada = new Collada("about.dae" ,ml0.1);
            
dae1.20;
            
dae2.30;
            
dae3.60;
            
dae4.90;
            
            
scene.addChild(dae1);
            
scene.addChild(dae2);
            
scene.addChild(dae3);
            
scene.addChild(dae4);
            
            
// before we can add event listeners we need to make sure the 
            // object is instantiated completely
            
dae1.addEventListener(FileLoadEvent.LOAD_COMPLETEhandleColladaComplete);
        }
        
        
/* ************************************** */
        /*  Event Handlers                        */
        /* ************************************** */
        
private function renderTick(event:Event):void {
            
PointLight.= (mouseX 250) * 5//setting the x / y position of the light gives us dynamic lighting.
            
PointLight.= -((mouseY 150) * 5);
            
//dae.rotationY = (mouseY - mouseX) * 1.1;
            //dae.rotationX  = (mouseX - mouseY) * 1.1;
            
renderer.renderScene(scenecameraviewport);
        }
        
        private function 
handleLogoOver(event:InteractiveScene3DEvent):void {
            
trace"over" );
            
trace(this);
            
viewport.containerSprite.buttonMode true;
            
//var logoLayer:ViewportLayer = viewport.getChildLayer(dae, true, true);
            
viewport.getChildLayer(dae1).filters null;
            
//this._daes[.filters = [new GlowFilter(0xFFFFFF, .51, 50, 6, 1, 3, false, false)];
            //TweenMax.to(logoLayer, 1, {alpha:"0.3", overwrite:0});

        
}
        
        private function 
handleLogoOut(event:InteractiveScene3DEvent):void {
            
trace"out" );
            
            
viewport.containerSprite.buttonMode false;
            
//var logoLayer:ViewportLayer = viewport.getChildLayer(dae, true, true);
            //logoLayer.filters = null;
            
viewport.getChildLayer(dae1).filters = [new BlurFilter(221)];
            
//TweenMax.to(logoLayer, 1, {alpha:"1", overwrite:0});
        
}
        
        private function 
handleLogoClick(event:InteractiveScene3DEvent):void {
            
trace"click" );
            if (!
TweenMax.isTweening(dae1)) {
            var 
gallery:Gallery = new Gallery();
            
addChild(gallery);
            
//TweenMax.to(dae, 1, {rotationY:"60", overwrite:0});
            //TweenMax.to(camera, 1, {zoom:"40", overwrite:0});
            
}
         
         
        }
        
        private function 
handleColladaComplete(event:FileLoadEvent):void {        
            
// here's where we set the interactivity

            
var listenerObj1:DisplayObject3D getColladaDisplayObj(dae1);
            var 
listenerObj2:DisplayObject3D getColladaDisplayObj(dae2);
            var 
listenerObj3:DisplayObject3D getColladaDisplayObj(dae3);
            var 
listenerObj4:DisplayObject3D getColladaDisplayObj(dae4);
            
// using the child object we get a handle to its material
            
            
var childMat1:MaterialObject3D getColladaNodeMaterial(listenerObj1);
            var 
childMat2:MaterialObject3D getColladaNodeMaterial(listenerObj2);
            var 
childMat3:MaterialObject3D getColladaNodeMaterial(listenerObj3);
            var 
childMat4:MaterialObject3D getColladaNodeMaterial(listenerObj4);
            
            if (
childMat1 != null) {
                
// now we have to tell the material to dispatch InteractiveScene3D events
                
childMat1.interactive true;
                
// Now we can add our listeners to the child object    
            
listenerObj1.addEventListenerInteractiveScene3DEvent.OBJECT_OUT ,handleLogoOut  );
            
listenerObj1.addEventListenerInteractiveScene3DEvent.OBJECT_OVER ,  handleLogoOver);
            
listenerObj1.addEventListenerInteractiveScene3DEvent.OBJECT_CLICK handleLogoClick );
            }

            if (
childMat2 != null) {
                
childMat2.interactive true;
            
            
listenerObj2.addEventListenerInteractiveScene3DEvent.OBJECT_OUT ,handleLogoOut  );
            
listenerObj2.addEventListenerInteractiveScene3DEvent.OBJECT_OVER ,  handleLogoOver);
            
listenerObj2.addEventListenerInteractiveScene3DEvent.OBJECT_CLICK handleLogoClick );
            }

            if (
childMat3 != null) {
                
childMat3.interactive true;            
            
            
listenerObj3.addEventListenerInteractiveScene3DEvent.OBJECT_OUT ,handleLogoOut  );
            
listenerObj3.addEventListenerInteractiveScene3DEvent.OBJECT_OVER ,  handleLogoOver);
            
listenerObj3.addEventListenerInteractiveScene3DEvent.OBJECT_CLICK handleLogoClick );
            }

            if (
childMat4 != null) {    
                
childMat4.interactive true;
            
listenerObj4.addEventListenerInteractiveScene3DEvent.OBJECT_OUT ,handleLogoOut  );
            
listenerObj4.addEventListenerInteractiveScene3DEvent.OBJECT_OVER ,  handleLogoOver);
            
listenerObj4.addEventListenerInteractiveScene3DEvent.OBJECT_CLICK handleLogoClick );    
            }    
        }
        
/* ************************************** */
        /*  Collada Interactivity Helper Methods  */
        /* ************************************** */
        

        
public function getColladaDisplayObj(tempCO DisplayObject3D) : DisplayObject3D {
        
trace("temp"+tempCO);
        var 
returnObj DisplayObject3D;
        
        try {
        var 
container DisplayObject3D tempCO.getChildByName("dae1"true);
        
        var 
childname String String(container.childrenList()).substring(0String(container.childrenList()).indexOf(": "));
        
trace("getColladaDisplayObj" childname);
        
        
        
returnObj container.getChildByName(childname);
        } catch(
errObject Error) {
            
trace("no childname" childname);
        
trace(errObject.message);
        }

return 
returnObj;
}
        
        private function 
getColladaNodeMaterial(colladaNode:DisplayObject3D):MaterialObject3D {
            var 
returnVal:MaterialObject3D;
        
            try { var 
materialName:String StringUtil.trim(String(colladaNode.materials));
                
trace("materialName: '" materialName "'");
                
returnVal colladaNode.getMaterialByName(materialName);
            } catch(
errObject:Error) {
                
trace(errObject.message);
                
trace("no material");
            }
        
            return 
returnVal;
        }

    
    }

gimmig 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:15 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele