Come inserire un'immagine in una Usando Java 3D Modello

July 9

Come inserire un'immagine in una Usando Java 3D Modello


Lavorare con le classi di Java 3-D comporta la definizione della geometria di un oggetto che descrive la sua forma e definisce il suo aspetto. Un modo di pregiudicare l'aspetto di un oggetto è allegando un'immagine esistente ad essa. Questo approccio, chiamato bitmap texturing, permette di creare oggetti che cercano estremamente complesse e realistiche da pochi immagini applicate alla geometria semplice. Ad esempio, mediante l'applicazione di una foto di erba per un modello di terreno, è possibile creare l'illusione di un prato peluche.

istruzione

1 Aprire un processore editor di testo o word e incollare in un nuovo documento il programma java alla fine di questa fase.

Il programma costruisce l'immagine (come tutti i programmi Java 3D fanno) con la costruzione di un "scene graph", che è possibile visualizzare su carta come una semplice struttura ad albero con padre e figlio oggetti. Il genitore cima di una scena è l'oggetto BranchGroup, sotto il quale il programma attribuisce (attraverso la chiamata di funzione parentOfScene.addChild) la geometria di un modello semplice, un aereo. La funzione ApplyImageToModelProgram crea componenti per completare la scena 3-D, tra cui la tela, (classe "Canvas3D"), l'universo (classe "SimpleUniverse") e la posizione dello spettatore (classe "ViewingPlatform").

Il codice del programma sotto il commento "Aggiungi immagine di modellare" crea un oggetto "Aspetto", che applica un file grafico per il modello.

import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.GraphicsConfiguration;
importare

com.sun.j3d.utils.geometry.;
import com.sun.j3d.utils.applet.MainFrame;
importare com.sun.j3d.utils.universe.;
import com.sun.j3d.utils.image.TextureLoader;
importare javax.media.j3d.;
importare javax.vecmath.;

public class ApplyImageToModelProgram estende Applet {

private static final Point3d USERPOSITION = new Point3d(5,2,7);

BranchGroup makeTheScene () {
BranchGroup parentOfScene = new BranchGroup ();
QuadArray simpleModel = new QuadArray (4, GeometryArray.COORDINATES
| GeometryArray.TEXTURE_COORDINATE_2);
Point3f vertex = new Point3f (-3.0f, 3.0f, 0.0f);
simpleModel.setCoordinate (0, vertice);
vertex.set (-3.0f, -3.0f, 0.0f);
simpleModel.setCoordinate (1, vertice);
vertex.set (3.0f, -3.0f, 0.0f);
simpleModel.setCoordinate (2, vertice);
vertex.set (3.0f, 3.0f, 0.0f);
simpleModel.setCoordinate (3, vertice);
TexCoord2f texturePoint = new TexCoord2f (0.0f, 1.0f);
simpleModel.setTextureCoordinate (0, 0, texturePoint);
texturePoint.set (0.0f, 0.0f);
simpleModel.setTextureCoordinate (0, 1, texturePoint);
texturePoint.set (1.0f, 0.0f);
simpleModel.setTextureCoordinate (0, 2, texturePoint);
texturePoint.set (1.0f, 1.0f);
simpleModel.setTextureCoordinate (0, 3, texturePoint);

// Aggiungere immagine da modellare

Appearance objectsAppearance = new Appearance();
String textureFilename = "someImage.gif";
TextureLoader imageloader = new TextureLoader(textureFilename, null);
ImageComponent2D the_image = imageloader.getImage();
if(the_image == null) {
System.out.println("The image load failed.");
}

Texture2D objectsTexture = new Texture2D (Texture.BASE_LEVEL, Texture.RGBA,
the_image.getWidth (), the_image.getHeight ());
objectsTexture.setImage (0, the_image);
objectsAppearance.setTexture (objectsTexture);
objectsAppearance.setTransparencyAttributes (
nuovi TransparencyAttributes (TransparencyAttributes.FASTEST, 0.1f));

// Crea il modello attuale
Shape3D planeObj = new Shape3D (simpleModel, objectsAppearance);

parentOfScene.addChild (planeObj);
tornare parentOfScene;
}

ApplyImageToModelProgram pubblico () {
setLayout (nuova BorderLayout ());
GraphicsConfiguration GFXconfig =
SimpleUniverse.getPreferredConfiguration ();
Canvas3D theCanvas = new Canvas3D (GFXconfig);
aggiungere (& quot; & quot ;, Centro theCanvas);
theCanvas.setStereoEnable (false);
SimpleUniverse universo = new SimpleUniverse (theCanvas);
// Sposta il punto di vista
ViewingPlatform viewPlatform = universe.getViewingPlatform ();
TransformGroup viewPlatTransGroup = viewPlatform.getViewPlatformTransform ();
Transform3D camTform = new Transform3D ();
viewPlatTransGroup.getTransform (camTform);
camTform.lookAt (USERPOSITION, nuova Point3D (0,0,0), nuova Vector3D (0,1,0));
camTform.invert ();
viewPlatTransGroup.setTransform (camTform);
universe.addBranchGraph (makeTheScene ());
}

static void main (String argv []) pubblica
{
nuova MainFrame (nuova ApplyImageToModelProgram (), 256, 256);
}

}

2 Creare un'immagine GIF cui dimensioni sono una potenza di due utilizzando un programma di elaborazione delle immagini. Ad esempio, 8 da 8 (due alla terza potenza), 16 da 16 (due alla quarta potenza), 256 per 256, (due per l'ottava potenza). Salvare l'immagine come "someimage.gif" nella stessa cartella del file java.

3 Salvare il file come "ApplyImageToModelProgram.java", con il tipo di file impostato su "Testo normale", per garantire che il compilatore in grado di leggere il codice del programma.

4 Incollare il seguente documento HTML (che è necessario per eseguire il programma) in un nuovo documento di testo. Salvare il documento con il nome "ApplyImageToModelProgram.html," nella stessa cartella del file sorgente Java.

<Html>
<Applet code = "ApplyImageToModelProgram.class"

codebase=&quot;.&quot; Width=500 height=500>
&lt;/applet>

</ Html>

5 Aprire un prompt dei comandi DOS nella cartella contenente il file java che si è salvato nel passaggio 2. Compilare il programma con "javac ApplyImageToModelProgra.java."

6 Eseguire il programma con questo comando:

appletviewer ApplyImageToModelProgram.HTML

Il programma appletviewer visualizzerà il modello con l'immagine dal file "someImage.gif".