|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 404
|
importare file .3ds in java, si può fare??
Ciao a tutti, ho un problema: dovrei importare dei file 3d in java che ho trovato sulla rete. Questi file sono completi di texture solo che sono .3ds
Io sono riuscito a caricare solo file .obj solo che quando vado ad eseguire l'applicazione, l'oggetto importato è privo di texture (lo vedo solo grigio, senza colore). Ho provato anche a convertire il file .3ds in .obj tramite 3d studio max, solo che il risultato che ottengo dopo aver eseguito il codice è sempre lo stesso, cioè oggetto privo di texture. Qualcuno sa dirmi se è possibile caricare sti file .3ds oppure come fare per far vedere sti oggetti a colori?? dimenticavo: ho provato anche ad applicare la texture ad un file .obj solo che java me lo fa vedere sempre grigio ![]() ![]() ![]() ![]() Grazie e ciao. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
butta l'occhio qui
http://java3d.j3d.org/utilities/loaders.html P.s.: al pvt rispondo appena ho reinstallato Java3D ![]() |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 404
|
Quote:
![]() Grazie e ciao. |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 404
|
Ciao, ho dato un'occhiata a quel link che mi hai dato, ho scaricato il loader relativo a 3ds, solo che non riesco a capire come fare per caricare i file 3ds.
Io sono andato in questo link: http://sourceforge.net/project/showf...ease_id=344671 Ho scaricato entrambi i file, solo che il primo mi da errore, mentre il secondo è una applet... Come devo fare?? Me lo potresti spiegare? ![]() ![]() ![]() Ancora grazie e ciao. |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Tutto dipende dall'errore che ti da. Incollo un esempio:
Codice:
import javax.media.j3d.*; import javax.vecmath.*; import com.sun.j3d.loaders.*; import com.sun.j3d.utils.universe.*; import com.sun.j3d.utils.behaviors.mouse.*; import java.awt.*; import java.awt.event.*; public class Max extends WindowAdapter implements Runnable { public static void main(String[] args) { Max m = new Max(); m.init(); EventQueue.invokeLater(m); } private Frame frame = new Frame("3ds loader – Sample"); public void init() { GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration(); Canvas3D canvas = new Canvas3D(config); canvas.setPreferredSize(new Dimension(400, 400)); SimpleUniverse universe = new SimpleUniverse(canvas); universe.getViewingPlatform().setNominalViewingTransform(); Bounds bgLightBounds = new BoundingSphere(new Point3d(), Double.POSITIVE_INFINITY); AmbientLight bgLight = new AmbientLight(new Color3f(0.5f, 0.5f, 0.5f)); bgLight.setInfluencingBounds(bgLightBounds); BranchGroup root = new BranchGroup(); root.addChild(bgLight); BranchGroup loadGroup = load3DS("/sample.3ds"); if(loadGroup != null) { TransformGroup sceneTransform = new TransformGroup(); sceneTransform.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); sceneTransform.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); MouseRotate rotator = new MouseRotate(); rotator.setTransformGroup(sceneTransform); sceneTransform.addChild(rotator); rotator.setSchedulingBounds(bgLightBounds); sceneTransform.addChild(loadGroup); root.addChild(sceneTransform); } root.compile(); universe.addBranchGraph(root); frame.setLayout(new GridLayout(1, 1)); frame.addWindowListener(this); frame.add(canvas); } public BranchGroup load3DS(String path) { BranchGroup loadGroup = null; try { Loader loader = new com.microcrowd.loader.java3d.max3ds.Loader3DS(); Scene scene = loader.load(getClass().getResource(path)); loadGroup = scene.getSceneGroup(); } catch(Exception ex) { ex.printStackTrace(); } return loadGroup; } public void run() { frame.pack(); frame.setVisible(true); } public void windowClosing(WindowEvent e) { System.exit(0); } } |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 404
|
Ciao, innanzitutto grazie per la risposta
![]() Continuo ad avere problemi... ![]() ![]() ![]() Allora, ti spiego ciò che ho fatto: sono andato nel link che mi avevi detto, ho scaricato questo loader http://sourceforge.net/project/showf...ease_id=344671 per la precisione il primo e l'ho copiato in C:\j2sdk1.4.2_10\jre\lib\ext Praticamente mi sta sorgendo un dubbio: è giusto il percorso dove ho incollato il file .jar che ho scaricato?? Anche perchè il codice che hai scritto tu mi lancia un'eccezione, per la precisione java.lang.NoClassDefFoundError: com/microcrowd/loader/java3d/max3ds/Loader3DS Exception in thread "main" >Exit code: 1 Scusa se ti rompo, ma vedo che sei l'unico in grado di risp alle mie domande... Ancora grazie e ciao. |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
quando lanci la JVM con il comando Java quello che parte (normalmente) è il JRE che dovrebbe stare in:
c:\programmi\java\jre1.4.2_10 Tu hai correttamente collocato il file jar nella cartella delle estensioni della piattaforma Java ma l'hai fatto per la piattaforma Java "privata", quella che accompagna il JDK. Con tutta probabilità, la compilazione del programma procede senza restituirti eccezioni. Capita perchè javac usa la piattaforma privata del JDK. Se lanci il programma specificando il percorso di "java.exe" promtp:> C:\j2sdk1.4.2_10\bin\java.exe eccetera l'eccezione ClassNotFound non dovrebbe più verificarsi. Alternativamente puoi "estendere" il JRE pubblico copiano il jar Loader3DS1_2.jar nella cartella "ext" del JRE pubblico (anzichè "j2sdk" si chiama "j2re", o una cosa del genere). Giusto per non dimenticarsi delle librerie esterne usate, durante la scrittura del programma può essere preferibile lasciare il jar "esterno" nella cartella in cui sviluppi il progetto (magari in una sub directory "lib" di quella cartella) ed includere "manulalmente" il jar tra il percorso di ricerca del compilatore e della macchina virtuale durante la compilazione e l'esecuzione. Puoi farlo con l'opzione -cp (abbreviazione di -classpath). Supponendo che la compilazione avvenga nella cartella in cui si trova il file jar esterno, il comando sarebbe: javac -cp .;Loader3DS1_2.jar sorgenti da compilare per la compilazione e: java -cp .;Loader3DS1_2.jar NomeClasseMain per l'esecuzione. Per una questione di netiquette, più che di unico in grado, parlerei di unico che ha tempo ![]() |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 404
|
Ci sono riuscito...
Ancora grazie PGI-Bis ![]() Forse dovrò gestire le collisioni, casomai posso disturbarti?? ![]() Ciao |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Oh, non farti problemi a "disturbarmi" ma tieni conto che io sono l'unico primate del pianeta che non ha mai capito gli alberi BSP.
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:47.