Witaj

Trafiłeś w dobre miejsce.

Dołącz do nas aby mieć dostęp do wszystkich treści i funkcji. Będziesz mógł tutaj rozwiązać swój problem lub odnaleźć gotowe rozwiązanie. Powymieniasz się poglądami z najbardziej utalentowanymi osobami w zakresie "tworzenia" internetowych rozwiązań.


+ Odpowiedz na ten temat + Napisz nowy temat
Pokaż wyniki od 1 do 5 z 5

Temat: PV3D - Import External Model
  • Share This Thread!
    • Share on Facebook
    1. #1

      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;

    2. #2
      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

    3. #3

      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

    4. #4
      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;

    5. #5

      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();
              }
       
          }
      }

    + Odpowiedz na ten temat

    Podobne wątki

    1. [pv3d] import 3ds i poszarpane krawędzie
      By joudek in forum Developer
      Odp.: 5
      Ostatni post / autor: 05-25-2010, 19:18
    2. [PV3D] Import plików
      By Redd's in forum Developer
      Odp.: 3
      Ostatni post / autor: 09-25-2009, 14:36
    3. [PV3D] import animacji collady.
      By imported_px_ in forum Developer
      Odp.: 0
      Ostatni post / autor: 05-12-2009, 12:35
    4. Model *.3ds lub *.max
      By Wizzard in forum Zasoby
      Odp.: 7
      Ostatni post / autor: 01-09-2005, 09:45
    5. 3d model
      By jurobg in forum Flash start
      Odp.: 2
      Ostatni post / autor: 12-29-2004, 16:17