Pages: [1]   Go Down
Print
Author Topic: PROBLEMA CARICAMENTO FILE  (Read 3453 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
bluegirl
Apprendista Forumista
**
Offline Offline

Posts: 360



« on: 28-11-2008, 19:53:54 »

Ciao a tutti,ho il seguente problema:ho dei file.blend li esporto in .obj e al momento di inserirli nel mio progetto di java 3d non visualizzo nulla.come mai?potete aiutarmi???
ah a runtime non mi dà nessun errore...ho provato con editor di testo,come spiegato nel vecchio forum,ma nulla...sono quasi disperata
Logged
nessunoHaStoNick®
Forumista
***
Offline Offline

Gender: Male
Posts: 660



« Reply #1 on: 28-11-2008, 22:32:56 »

ok, ma se non posti il codice..   boh
Logged
bluegirl
Apprendista Forumista
**
Offline Offline

Posts: 360



« Reply #2 on: 29-11-2008, 10:18:55 »

Come codice ti posso postare anche l'esempio del Dott.Milanese fatto a lezione,modificato un pò da me per fare delle prove,tanto il problema non cambia...anche con quello ho problemi. Quando esporto in obj poi sul codice non si visualizza nulla.
Code:
// Import necessari per gestire JFrame, JPanel, il men鬠il SimpleUniverse e j3d.geometry per gli oggetti di base.
import com.sun.j3d.loaders.objectfile.*;
import com.sun.j3d.loaders.*;
import java.awt.*;
import com.sun.j3d.utils.universe.*;
import java.util.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import javax.swing.*;
import com.sun.j3d.utils.behaviors.keyboard.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.geometry.Box;
import com.sun.j3d.utils.image.*;
import java.awt.image.*;


//La classe eredita da JFrame: e' un JFrame che conterra' una Canvas3D,un menu'
public class EsempioPanchina extends JFrame
{
//il main non fa altro che istanziare un oggetto e mostrarlo a video
public static void main(String[]args)
{
EsempioBicchiere esB = new EsempioBicchiere();
esB.setVisible(true);
}

//Ecco qui il costruttore di EsempioBicchiere che eredita da JFrame
public EsempioBicchiere()
{
//...per cui mi devo creare un normalissimo frame
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300,300);
this.setLocation(100,100);
this.setTitle("Il mio calice in 3d");

//Adesso creo il SimpleUniverse,la canvas 3D e mostro il tutto inserendolo nel frame
//ma prima recupero le configurazioni grafiche del computer
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();

//Creo il canvas 3D,passando la configurazione del computer al costruttore
Canvas3D c3d = new Canvas3D(config);

//Creo il SimpleUniverse,passando la canvas3D appena creata al costruttore
SimpleUniverse sU = new SimpleUniverse(c3d);

//Con "setNominalViewingPlatform(),spostiamo leggermente indietro il sistema di riferimento nel nostro SimpleUniverse"
sU.getViewingPlatform().setNominalViewingTransform();

//Creo una scena di base con i nostri meotdi e lo compilo.
BranchGroup scena = creaLoSceneGraph();
scena.compile();

//Aggiungo la scena all'universo
sU.addBranchGraph(scena);

//Aggiungo la Canvas al frame,che funziona come un JPnael
this.getContentPane().add(c3d,BorderLayout.CENTER);
//A questo punto abbiamo creato il SimpleUniverse e la canvas3d.Quest'ultima è stata inoltre aggiunta al centro del frame.
}

//Il metodo seguente crea una scena di base(un oggetto BranchGroup),aggiungendogli un oggetto
//.obj caricato da un file esterno

public BranchGroup creaLoSceneGraph()
{
//creiamo la radice dello sceneGraph che e' un oggetto BranchGroup
BranchGroup objRoot = new BranchGroup();

//========= INIZIO DEL LOADING
//Oggetto loader del file
ObjectFile f = new ObjectFile(ObjectFile.RESIZE);
//L'operazione di loading,come tutte le operazioni che riguardano i file,
//vengono messi in un blocco try-catch
try
{
//carico il file,mettendolo in un oggetto Scene
Scene s = f.load("panchina.obj");

//Creo un TransformGroup per ruotare un po' l'oggetto
//Creo una trasformazione rotazione...
Transform3D rotazione = new Transform3D();
rotazione.rotY(Math.PI/4);
//ecco il nostro Transformgroup della rotazione
TransformGroup tgRotazione = new TransformGroup(rotazione);

//inserisco lo sceneGroup dell'oggetto Scene,come figlio del Tg di rotazione
tgRotazione.addChild(s.getSceneGroup());

//Aggiungo il Tg di rotazione a objRoot
objRoot.addChild(tgRotazione);
}

catch(Exception e)
{
System.out.println(e);
}
//======== FINE DEL LOADING

/**CREO UN BOUND,una luce direzionale e una luce ambientale per visualizzare il nostro oggetto(senza
luci non vedremmo niente) e aggiungo tutto alla scena*/
BoundingSphere bounds = new BoundingSphere();
DirectionalLight lightD1 = new DirectionalLight();
lightD1.setColor(new Color3f(1.0f,1.0f,0.9f));
lightD1.setDirection(new Vector3f(1.0f,1.0f,1.0f));
lightD1.setInfluencingBounds(bounds);
objRoot.addChild(lightD1);
Color3f ambientColor = new Color3f(1.0f, 1.0f, 0.1f);
AmbientLight lightA = new AmbientLight(ambientColor);
lightA.setInfluencingBounds(bounds);
objRoot.addChild(lightA);


// Restituisco, infine, la radice del branch graph con annesso l'oggetto OBJ e la luce ambientale
return objRoot;
}
}
Logged
nessunoHaStoNick®
Forumista
***
Offline Offline

Gender: Male
Posts: 660



« Reply #3 on: 29-11-2008, 13:35:55 »

è strano che a te compili, però.

Hai creato un costruttore con un nome diverso dalla classe, e ovviamente il compilatore restituisce errore in fase di compilazione.

Comunque una volta corretto ho caricato un obj correggendo ovviamente anche il percorso di questo e a me funziona.

codice corretto e funzionante:
Code:
// Import necessari per gestire JFrame, JPanel, il men?il SimpleUniverse e j3d.geometry per gli oggetti di base.
import com.sun.j3d.loaders.objectfile.*;
import com.sun.j3d.loaders.*;
import java.awt.*;
import com.sun.j3d.utils.universe.*;
import java.util.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import javax.swing.*;
import com.sun.j3d.utils.behaviors.keyboard.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.geometry.Box;
import com.sun.j3d.utils.image.*;
import java.awt.image.*;


//La classe eredita da JFrame: e' un JFrame che conterra' una Canvas3D,un menu'
public class EsempioPanchina extends JFrame
{
//il main non fa altro che istanziare un oggetto e mostrarlo a video
public static void main(String[]args)
{
EsempioPanchina esB = new EsempioPanchina();
esB.setVisible(true);
}

//Ecco qui il costruttore di EsempioBicchiere che eredita da JFrame
public EsempioPanchina()
{
//...per cui mi devo creare un normalissimo frame
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300,300);
this.setLocation(100,100);
this.setTitle("Il mio calice in 3d");

//Adesso creo il SimpleUniverse,la canvas 3D e mostro il tutto inserendolo nel frame
//ma prima recupero le configurazioni grafiche del computer
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();

//Creo il canvas 3D,passando la configurazione del computer al costruttore
Canvas3D c3d = new Canvas3D(config);

//Creo il SimpleUniverse,passando la canvas3D appena creata al costruttore
SimpleUniverse sU = new SimpleUniverse(c3d);

//Con "setNominalViewingPlatform(),spostiamo leggermente indietro il sistema di riferimento nel nostro SimpleUniverse"
sU.getViewingPlatform().setNominalViewingTransform();

//Creo una scena di base con i nostri meotdi e lo compilo.
BranchGroup scena = creaLoSceneGraph();
scena.compile();

//Aggiungo la scena all'universo
sU.addBranchGraph(scena);

//Aggiungo la Canvas al frame,che funziona come un JPnael
this.getContentPane().add(c3d,BorderLayout.CENTER);
//A questo punto abbiamo creato il SimpleUniverse e la canvas3d.Quest'ultima è stata inoltre aggiunta al centro del frame.
   

}

//Il metodo seguente crea una scena di base(un oggetto BranchGroup),aggiungendogli un oggetto
//.obj caricato da un file esterno

public BranchGroup creaLoSceneGraph()
{
//creiamo la radice dello sceneGraph che e' un oggetto BranchGroup
BranchGroup objRoot = new BranchGroup();

//========= INIZIO DEL LOADING
//Oggetto loader del file
ObjectFile f = new ObjectFile(ObjectFile.RESIZE);
//L'operazione di loading,come tutte le operazioni che riguardano i file,
//vengono messi in un blocco try-catch
try
{
//carico il file,mettendolo in un oggetto Scene
Scene s = f.load("saturno.obj");

//Creo un TransformGroup per ruotare un po' l'oggetto
//Creo una trasformazione rotazione...
Transform3D rotazione = new Transform3D();
rotazione.rotY(Math.PI/4);
//ecco il nostro Transformgroup della rotazione
TransformGroup tgRotazione = new TransformGroup(rotazione);

//inserisco lo sceneGroup dell'oggetto Scene,come figlio del Tg di rotazione
tgRotazione.addChild(s.getSceneGroup());

//Aggiungo il Tg di rotazione a objRoot
objRoot.addChild(tgRotazione);
}

catch(Exception e)
{
System.out.println(e);
}
//======== FINE DEL LOADING

/**CREO UN BOUND,una luce direzionale e una luce ambientale per visualizzare il nostro oggetto(senza
luci non vedremmo niente) e aggiungo tutto alla scena*/
BoundingSphere bounds = new BoundingSphere();
DirectionalLight lightD1 = new DirectionalLight();
lightD1.setColor(new Color3f(1.0f,1.0f,0.9f));
lightD1.setDirection(new Vector3f(1.0f,1.0f,1.0f));
lightD1.setInfluencingBounds(bounds);
objRoot.addChild(lightD1);
Color3f ambientColor = new Color3f(1.0f, 1.0f, 0.1f);
AmbientLight lightA = new AmbientLight(ambientColor);
lightA.setInfluencingBounds(bounds);
objRoot.addChild(lightA);


// Restituisco, infine, la radice del branch graph con annesso l'oggetto OBJ e la luce ambientale
return objRoot;
}
}
Logged
bluegirl
Apprendista Forumista
**
Offline Offline

Posts: 360



« Reply #4 on: 29-11-2008, 14:15:18 »

No vabbè il fatto del costruttore diverso dalla classe è stata la premura...quelle erano delle prove mie e di premura l'ho postato senza controllarlo.Figurati se era questo l'errore
Comunque a me non va.non si visualizza nada.sarà allora un problema mio?Huh?
Logged
nessunoHaStoNick®
Forumista
***
Offline Offline

Gender: Male
Posts: 660



« Reply #5 on: 29-11-2008, 14:31:27 »

io ho provato col saturno.obj delle lezioni del dott. milanese. hai provato con quella?
Logged
bluegirl
Apprendista Forumista
**
Offline Offline

Posts: 360



« Reply #6 on: 29-11-2008, 15:41:40 »

si si con quello funziona anche a me alla perfezione.
Scusa ma forse presa dall'ansia non mi sono spiegata bene...praticamente non mi visualizza i file .blend creati da me con blender o trovati in rete,cioè al momento di esportarli in file .obj non li visualizza nel file java.
Logged
Yngwie
Forumista
***
Offline Offline

Gender: Male
Posts: 849


Maestro! mi dia un MI in chiave di SOL!


« Reply #7 on: 29-11-2008, 15:47:44 »

si si con quello funziona anche a me alla perfezione.
Scusa ma forse presa dall'ansia non mi sono spiegata bene...praticamente non mi visualizza i file .blend creati da me con blender o trovati in rete,cioè al momento di esportarli in file .obj non li visualizza nel file java.

il tuo problema sta nell'esportazione dei file .obj da Blender.

Link Immagine

Quando esporti prova a impostare i parametri come vedi in figura.

se non è questo, allora può essere ke quando esporti, non selezioni l'oggetto: prendi il tuo file .blend, elimina telecamera e luci e poi premi A per selezionare tutto...dopodichè esporta e dovrebbe visualizzartelo yoh
« Last Edit: 29-11-2008, 15:51:15 by Yngwie » Logged

bluegirl
Apprendista Forumista
**
Offline Offline

Posts: 360



« Reply #8 on: 29-11-2008, 16:11:47 »

Yngwie ho impostato i parametri come mi hai fatto vedere tu...adesso inizia a comparire qualcosa,un pò deformato però si vede qualcosa boh
C'è una qualche impostazione per farla vedere così com'è creato su blender?Huh??
cmq grazie milleeeee
Logged
Yngwie
Forumista
***
Offline Offline

Gender: Male
Posts: 849


Maestro! mi dia un MI in chiave di SOL!


« Reply #9 on: 29-11-2008, 16:35:50 »

hai provato a selezionare tutte le componenti dell'oggetto e poi esportare?
Logged

bluegirl
Apprendista Forumista
**
Offline Offline

Posts: 360



« Reply #10 on: 29-11-2008, 17:18:12 »

si si,ho selezionato con A tutto l'oggetto e poi esportato.
Logged
Alexios
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 128



« Reply #11 on: 01-12-2008, 17:53:00 »

Ciao. Ho avuto anche io lo stesso problema. Quando esporti con blender viene generato un file con le varie coordinate ecc.... inoltre blender inserisce un po di informazioni che il loader di java non accetta quindi la soluzione sta nell'aprire il file .obj con il notepad e cancellare le righe #commenti e le righe o che sono i material se non sbaglio.

solitamente sono le prima 4


Ciao spero di averti aiutato.
Logged
Yngwie
Forumista
***
Offline Offline

Gender: Male
Posts: 849


Maestro! mi dia un MI in chiave di SOL!


« Reply #12 on: 01-12-2008, 18:07:59 »

Ciao. Ho avuto anche io lo stesso problema. Quando esporti con blender viene generato un file con le varie coordinate ecc.... inoltre blender inserisce un po di informazioni che il loader di java non accetta quindi la soluzione sta nell'aprire il file .obj con il notepad e cancellare le righe #commenti e le righe o che sono i material se non sbaglio.

solitamente sono le prima 4


Ciao spero di averti aiutato.


non è necessario manipolare il sorgente dei file obj...puoi lasciare i materiali esportando l'oggetto con i parametri mostrati in figura...il loader usato nelle esercitazioni importa tutto correttamente
Logged

bluegirl
Apprendista Forumista
**
Offline Offline

Posts: 360



« Reply #13 on: 02-12-2008, 16:59:23 »

Grazie mille cmq a tutti per l'aiuto.  ciao
Logged
Pages: [1]   Go Up
Print
Jump to: