Tecnología

Inicio

Cómo insertar una imagen en un modelo 3D Uso de Java

Cómo insertar una imagen en un modelo 3D Uso de Java


Utilización de clases en 3-D de Java consiste en definir la geometría de un objeto que describe su forma y define su apariencia. Una manera de afectar la apariencia de un objeto es añadiendo una imagen existente a la misma. Este enfoque, llamado mapa de bits de texturización, hace posible la creación de objetos que buscan extremadamente complejos y realistas desde sólo unas pocas imágenes aplicadas a la geometría simple. Por ejemplo, mediante la aplicación de una foto de la hierba a un modelo de terreno, puede crear la ilusión de un prado de felpa.

Instrucciones

1 Abra un procesador de texto o editor de textos y pegue en un nuevo documento el programa Java al final de este paso.

El programa construye la imagen (como todos los programas Java 3-D lo hacen) mediante la construcción de un "escenario gráfico", que se puede visualizar en el papel como una estructura en forma de árbol sencillo con los objetos primarios y secundarios. El padre superior de una escena es el objeto BranchGroup, en las que se une el programa (a través de la llamada de función parentOfScene.addChild) la geometría de un modelo simple, un avión. La función ApplyImageToModelProgram crea componentes para completar la escena 3D, incluyendo el lienzo, (clase "Canvas3D"), el universo (clase "SimpleUniverse") y la posición del espectador (clase "ViewingPlatform").

El código de programa bajo el comentario "Añadir imágenes a modelar" crea un objeto "Apariencia", que se aplica un archivo gráfico para el modelo.

java.applet.Applet importación;
java.awt.BorderLayout importación;
java.awt.GraphicsConfiguration importación;
importar

com.sun.j3d.utils.geometry.;
com.sun.j3d.utils.applet.MainFrame importación;
importar com.sun.j3d.utils.universe.;
com.sun.j3d.utils.image.TextureLoader importación;
importar javax.media.j3d.;
importar javax.vecmath.;

ApplyImageToModelProgram public class extends 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 vértice = new Point3f (-3.0f, 3.0f, 0.0f);
simpleModel.setCoordinate (0, vértice);
vertex.set (-3.0f, -3.0f, 0.0f);
simpleModel.setCoordinate (1, vértice);
vertex.set (3.0f, -3.0f, 0.0f);
simpleModel.setCoordinate (2, vértice);
vertex.set (3.0f, 3.0f, 0.0f);
simpleModel.setCoordinate (3, vértice);
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);

// Añadir imagen para modelar

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 (
nuevos TransparencyAttributes (TransparencyAttributes.FASTEST, 0.1f));

// Crear modelo real
Shape3D planeObj = new Shape3D (simpleModel, objectsAppearance);

parentOfScene.addChild (planeObj);
volver parentOfScene;
}

ApplyImageToModelProgram público () {
setLayout (nueva BorderLayout ());
GraphicsConfiguration GFXconfig =
SimpleUniverse.getPreferredConfiguration ();
Canvas3D theCanvas = new Canvas3D (GFXconfig);
añadir (& quot; quot ;, Center y theCanvas);
theCanvas.setStereoEnable (false);
universo SimpleUniverse = new SimpleUniverse (theCanvas);
// Posiciona el punto de vista
ViewingPlatform ViewPlatform = universe.getViewingPlatform ();
TransformGroup viewPlatTransGroup = viewPlatform.getViewPlatformTransform ();
Transform3D camTform = new Transform3D ();
viewPlatTransGroup.getTransform (camTform);
camTform.lookAt (USERPOSITION, nuevo Point3d (0,0,0), nuevo Vector3D (0,1,0));
camTform.invert ();
viewPlatTransGroup.setTransform (camTform);
universe.addBranchGraph (makeTheScene ());
}

public void principal (argv String []) estática
{
Unidad central nueva (nueva ApplyImageToModelProgram (), 256, 256);
}

}

2 Hacer una imagen GIF cuyas dimensiones son una potencia de dos mediante el uso de un programa de tratamiento de imágenes. Por ejemplo, 8 por 8 (dos a la tercera potencia), 16 por 16 (dos a la cuarta potencia), 256 por 256, (dos a la octava potencia). Guarda la imagen como "someimage.gif" en la misma carpeta que el archivo de java.

3 Guarde el archivo como "ApplyImageToModelProgram.java," con el tipo de archivo se ajusta a "Texto sin formato", para asegurar que el compilador puede leer el código del programa.

4 Pegue el siguiente documento HTML (que se necesita para ejecutar el programa) en un nuevo documento de texto. Guarde el documento con el nombre "ApplyImageToModelProgram.html", en la misma carpeta que el archivo fuente de Java.

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

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

</ Html>

5 Abra un símbolo del sistema DOS en la carpeta que contiene el archivo java que guardó en el paso 2. Compilar el programa con "ApplyImageToModelProgra.java javac."

6 Ejecutar el programa con este comando:

appletviewer ApplyImageToModelProgram.HTML

El programa Appletviewer mostrará el modelo con la imagen del archivo "someImage.gif".