# Bild im Raum darstellen (Texture2D)



## apfelsaft (21. Jun 2007)

Hallo,
ich habe ein Bild das ich gerne im Raum darstellen möchte. Dazu habe ich ein Texture2D auf einer Ebene (QuadArray) dargestellt, was auch soweit funktioniert. Allerdings kann ich die Textur nur von einer Seite betrachten. Wenn ich die Kameraposition ändere und von hinten auf das Bild schauen möchte, ist die Ebene bzw. die Textur gar nicht mehr zu sehen.

Kann mir jemand sagen, wie es möglich ist das Bild darzustellen, so dass man es von beiden Seiten betrachten kann? Von hinten sollte es dann entsprechend spiegelverkehrt zu sehen sein.

Hier noch mein Quellcode den ich derzeit verwende:


```
...		
		ImageComponent2D image = ...;

		Texture2D texture = new Texture2D(Texture.BASE_LEVEL, Texture.RGBA, image.getWidth(), image.getHeight());
		texture.setImage(0, image);
		Appearance appear = new Appearance();
		appear.setTexture(texture);
		
		QuadArray plane = new QuadArray(4, GeometryArray.COORDINATES | GeometryArray.TEXTURE_COORDINATE_2);
		
		// Koordinaten im Raum festelgen
		float x=2.56f/2,y=2.56f/2,z=1.00f/2;
		Point3f[] coords = new Point3f[4];
		coords[0] = new Point3f(-x, y, z);
		coords[1] = new Point3f(-x, -y, z);
		coords[2] = new Point3f(x, -y, z);
		coords[3] = new Point3f(x, y, z);
		plane.setCoordinates(0, coords);
		
		// Texturkoordinaten auf Ebene festelgen
		TexCoord2f[] texCoords = new TexCoord2f[4];
		texCoords[0] = new TexCoord2f(0.0f, 1.0f);
		texCoords[1] = new TexCoord2f(0.0f, 0.0f);
		texCoords[2] = new TexCoord2f(1.0f, 0.0f);
		texCoords[3] = new TexCoord2f(1.0f, 1.0f);
		plane.setTextureCoordinates(0,0,texCoords);
				
		Shape3D planeObj = new Shape3D(plane, appear);
		rootTG.addChild(planeObj);
...
```


----------



## Evil-Devil (21. Jun 2007)

Du musst es auf beiden Seiten deiner Ebene Zeichnen.


----------



## apfelsaft (21. Jun 2007)

Kannst du das bitte etwas genauer erklären? Also wie kann man auch auf die andere Seite der Ebene zeichnen?


----------



## EgonOlsen (21. Jun 2007)

Face culling abschalten, würde ich sagen. Ich habe aber keine Ahnung von Java3D, von daher weiß ich nicht, wie das da geht.


----------



## apfelsaft (21. Jun 2007)

Ok, vielen Dank! Das war das Stichwort was ich brauchte.

Habe den Teil am Anfang mit der Apperance entsprechend geändert und jetzt gehts. 


```
Texture2D texture = new Texture2D(Texture.BASE_LEVEL, Texture.RGBA, image.getWidth(), image.getHeight());
		texture.setImage(0, image);
		Appearance appear = new Appearance();
		PolygonAttributes pa = new PolygonAttributes();
		pa.setCullFace(PolygonAttributes.CULL_NONE);
		appear.setPolygonAttributes(pa);
		appear.setTexture(texture);
```


----------

