Polska GOLA

 

Wróć   Forum > FLASH CODER > ActionScript 3

ActionScript 3 Programowanie w ActionScript 3

Odpowiedz
 
Narzędzia wątku Wygląd
stare 02-04-2010, 13:00   #1
KovalSC
wpada w rytm
 
Zarejestrowany: May 2005
Postów: 87
Domyślnie PV3D - Import External Model

Witam...

Mam zaimportowany model 3d z 3DMax'a jako3ds.

mam takie pytania:

Model ma na sobie materialy już z 3DMax'a nie nakladam na niego zadnych w Pv3D, jak kwestia interaktywnosci na takim modelu ??

Jak kwestia nakladania materialow na model bez materialow z 3DMax'a??

Jak kwestia Shadingu na tkim modelu??

Czy są jakieś fajne silniki emulujace powiedzmy podtswowową fizykę mam na myśli tutaj grawitacje

Do importu uzywam parsers.Max3DS;
KovalSC jest nieaktywny   Odpowiedź z Cytatem
Advertisement
 
Advertisement
Advertisement Sponsored links

stare 02-04-2010, 13:18   #2
cywil4
poza kontrolą
 
Avatar cywil4
 
Zarejestrowany: Sep 2008
Skąd: Poznań
Postów: 2,136
Domyślnie

nie importowalem 3ds`a niegdy ale collade ale podejrzewam ze moze byc podobnie.
1. musisz pobrac materialy z obiektu, aczkowliek w tym wypadku beda to prawdopodobnie tylko materialy typu Bitmap
2. tworzysz MaterilList i wkladasz do niego wowolne materialy tylko ze musza miec ta sama nazwe c o w edytorze materialow w maxie, potem przy tworzeniu/wczytaniu obiektu podajesz ten swoj MaterialList, u ciebie bedzie
load(asset:*, materials:MaterialsList = null, textureDir:String = "./image/"):void
3. dowolna, jak w pkt 2 nadpisujesz dowolny material nowym
4. tutaj nie mam doswiadczenia, ale looknij to
cywil4 jest nieaktywny   Odpowiedź z Cytatem
stare 02-06-2010, 17:59   #3
KovalSC
wpada w rytm
 
Zarejestrowany: May 2005
Postów: 87
Domyślnie Czegos Tutaj nie łapie..

Na wstępie dziękuje za odpowiedz...

Kombinuje na wszelkie sposoby - i tak... mam taki kod...
Kod:
var materials:MaterialsList = new MaterialsList();
            materials.addMaterial(new ColorMaterial(0xFF0000), "newMaterial");
   
            viewport.interactive=true;
            model = new Max3DS();
            model.addEventListener(FileLoadEvent.LOAD_COMPLETE,modelLoaded);
            Max3DS(model).load("image/gwiazda.3DS",materials, "image/");
            trace("Used materials by this model: " + model.materials);
            model.getMaterialByName("newMaterial").interactive = true;
            model.getMaterialByName("newMaterial").addEventListener(MouseEvent.CLICK,onEClick);
Gdy mam object z 3dMax'a z materiałami nałożony w 3dMaxie, wyświetlam object jak w orginale, natomast aby dołozyć mu interaktywnosc to jest .... i nie działa.

Gdy object jest bez materiałów to niestety "nadpisanie" materiałów również mi nie działa bo mam teraz ColorMaterial na czerwony to tez jest...

Chce uzyskac interkacje na tych objectach w zasadzie na ich materialach..

Nie bardzo juz rozumie co ja zle robie...

Jeszcze mam inny problem, napisze tak przy okazji...

Z racji tego ze pisze coś aby miec kilka objectow w 3D a reszta normalnie w 2D mam klase Main w ktorej tworze sobie instancje klasy objectu 3D to w sumie mam problem, z tym ze jesli doloze Tweener'a na tym objecie3D w Main to obszar widoczny sie przesuwa o skok jaki zalozylem w Tweenerze, czyli jesli x=100 i y =100 to dzieje sie tak ze obszar widzoczny o jest ograniczony od lewej i gory o 100 i w sumie to jest jasne, ale jak stowrzyc konwersje aby wszytko wspolgralo bez ograniczen.

Czy jestem zmuszony pisac wszytko w jednej klasie Main gdzie mam scene i stage w tym smamym mmiejscu.

Z gory dziekuje za wszelkie sugestie i pomoc, aby ominac problemy z polaczenia 2D i 3D w FLASH.

Pozdrawiam
KovalSC jest nieaktywny   Odpowiedź z Cytatem
stare 02-06-2010, 18:15   #4
cywil4
poza kontrolą
 
Avatar cywil4
 
Zarejestrowany: Sep 2008
Skąd: Poznań
Postów: 2,136
Domyślnie

nie wiem na pewno ale chyba material typu color nie moze miec listenerow, inaczej: material typu movieMaterial na pewno po ustawinie animated i interactive na true moze miec przypisany listener, ale chyba nawet nie sam material ale a movieClip ktory jest w nim.
na samych obiektach i byc moze materialch uzywa sie specjalnych event pv3d (zajzyj do dokumentacji).
Pamietaj aby miec viewport.interactive = true;
cywil4 jest nieaktywny   Odpowiedź z Cytatem
stare 02-08-2010, 07:58   #5
KovalSC
wpada w rytm
 
Zarejestrowany: May 2005
Postów: 87
Domyślnie Walka bez efektów

Witajcie...

Dziękuje za wszelkie sugestie, juz powywracłąem swoją klase na wszytkie chyba możliwe sposoby jakie mi przychodzą do głowy.

Co chce uzyskac, wczytauje sobie bryłe z 3ds'a bez materialow i chce nalożyć( zczytac z zewnatrz bitmapMaterial), nalozyc na bryle w celu nalozenia Shadingu.

Nastepnie chce na tych materialach miec podstawaowa interaktywnosc, ponizej wklejam kod wszytkich wariaci, wiec moge byc jakies bledy bo kombinuje z tym juz od kilku dni i nie jest tak jak chce, co zle robie...
Kod:
package {
    //import caurina.transitions.Tweener;
    import flash.events.*;
    import flash.display.*;
    import flash.net.*;
    import org.papervision3d.events.FileLoadEvent;
    import org.papervision3d.objects.DisplayObject3D;
    import org.papervision3d.objects.parsers.DAE;
    import org.papervision3d.objects.parsers.Max3DS;
    import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
    import org.papervision3d.materials.shaders.FlatShader;
    import org.papervision3d.materials.shaders.ShadedMaterial;
    import org.papervision3d.lights.PointLight3D;
    import org.papervision3d.materials.utils.*;
    import org.papervision3d.materials.special.*;
    import org.papervision3d.events.*;
    import org.papervision3d.materials.*;
    import org.papervision3d.view.BasicView;
    import org.papervision3d.objects.primitives.*;

    public class Gwiazda extends BasicView
    {
        private var model:DisplayObject3D;
        private var rotX:Number = 0.1;
        private var rotY:Number = 0.1;
        private var camPitch:Number = 90;
        private var camYaw:Number = 270;
        private var easeOut:Number = 0.1;
        private var light:PointLight3D;
        private var plane:Plane;
        
        private var materialBitmap:BitmapMaterial;
        public function Gwiazda()
        {    
        //super(1003,600,true,true);
        //super(640,480,false,true);
        viewport.buttonMode=true;
        viewport.interactive=true;
        init();
        startRendering();
        }
        private function onCompleteLoader(e:Event):void
        {
            
            var bitmap:Bitmap = e.target.content as Bitmap
            materialBitmap  = new BitmapMaterial(bitmap.bitmapData);
            light = new PointLight3D(true);
            light.z = 0;
            light.y = 300;
            scene.addChild(light);
            var flatShader:FlatShader = new FlatShader(light,0xFFFFFF,0x000000,100)
            var shadeMaterial:ShadedMaterial = new ShadedMaterial(materialBitmap,flatShader);
            var materials:MaterialsList = new MaterialsList();
            materials.addMaterial(shadeMaterial, "mat1");
            
            
            viewport.interactive=true;
            model = new Max3DS();
            
            
            model.addEventListener(FileLoadEvent.LOAD_COMPLETE,modelLoaded);
            Max3DS(model).load("image/Kwadrat.3DS",materials,"image/");
            model.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK,onClick);
            model.addEventListener(MouseEvent.CLICK,onEClick);
            model.scale=4;
            
        }
        private function init():void
        {trace("init");
            var loaderMaterial:Loader = new Loader();
            loaderMaterial.contentLoaderInfo.addEventListener(Event.COMPLETE,onCompleteLoader);
            loaderMaterial.load(new URLRequest("image/zielony.jpg"));
            trace("init2");
            
                    }
        private function onClick(e:InteractiveScene3DEvent):void
        {
            trace("CLICK");
        }
        private function onEClick(e:MouseEvent):void
        {
            trace("ECLICK");
        }
        private function modelLoaded(e:FileLoadEvent):void
        {
            
            scene.addChild(model);
            trace("Used materials by this model11: " + model.materials);
            //viewport.interactive=true;
            model.getMaterialByName("mat1").interactive = true;
            model.getMaterialByName("mat1").addEventListener(InteractiveScene3DEvent.OBJECT_CLICK,onClick);
            model.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK,onClick);
            
        }
        
        override protected function onRenderTick(e:Event=null):void
        {    
            var xDist:Number = mouseX - stage.stageWidth * 0.5-300;
            var yDist:Number = mouseY - stage.stageHeight * 0.5
            camPitch += ((yDist * rotX) - camPitch + 90) * easeOut;
            camYaw += ((xDist * rotY) - camYaw + 270) * easeOut; 
            camera.orbit(camPitch, camYaw);
            super.onRenderTick();
        }
        
    }
}
KovalSC jest nieaktywny   Odpowiedź z Cytatem
Odpowiedz

Bookmarks

Narzędzia wątku
Wygląd

Zasady Postowania
Nie możesz zakładać nowych tematów
Nie możesz pisać wiadomości
Nie możesz dodawać załączników
Nie możesz edytować swoich postów

BB Code jest Włączony
EmotikonyWłączony
[IMG] kod jest Włączony
HTML kod jest Wyłączony
Skocz do Forum


Czasy w strefie GMT. Teraz jest 09:25.


Powered by vBulletin® Version 3.7.2
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.

Ad Management by RedTyger

Strona gwna | Wyszukiwarka | Forum | FAQ | Tutoriale | Tumaczenia helpa flasha | actionscript | preloader | Ksiki | Aktualnoci | Programy
Komponenty | Open Source - fla | Galeria | Usugi i produkty | Konwerter PL | Archiwum | O serwisie | Reklama | Dodaj do serwisu | RSS | SKLEP
swish max | swish | swf studio | macromedia | adobe | swift 3D | studio 8 | acrobat | photoshop | Mariusz Mielnik | fabrykawafelkow.pl | Praca IT. Zlecenia IT. Oferty pracy w IT