Voor een opdracht ben ben ik bezig met een aantal andere in java3d een virtuele abstracte wereld te bouwen. Dit wordt een soort van showroom waar je een auto kan kopen.
Opzich loopt het allemaal lekker echter we hebben nu een probleempje waar we niet uitkomen. We hebben een prijskaartje dat gemaakt is van een Text2D object. Deze heeft de capabilities dat ie verandert kan worden. Dus als de auto aangepast wordt zal de prijs ook aangepast worden.
Nu het probleem, als de auto verkocht wordt dan is het de bedoeling dat er een sticker met verkocht overheen komt. Wat we hebben geprobeerd is een texture erover heen te laden. De texture was geen probleem, het laden van de texture ook niet maar het eroverheen zetten wel.
Enige code die we geprobeerd hebben is om een texture op een box te laden en die dan transparant weer te geven.
Wat we ook geprobeerd hebben is om de texture in een Shape3d te krijgen met daarnaast een QuadArray om de plek aan te geven. De QuadArray is in dit geval een kopie van de QuadArray van de text2d om de goed plek te krijgen. De QuadArray is aangevuld met textureCoordinaten om die ook goed te zetten. Op deze manier komt ie mooi op de goede plek te staan maar we krijgen hem maar niet naar de voorgrond.
Heeft er iemand enig idee hoe we de texture op de voorgrond kunnen krijgen of heeft iemand een ander oplossing voor het plaatsen van de sticker?
Alvast bedankt
Opzich loopt het allemaal lekker echter we hebben nu een probleempje waar we niet uitkomen. We hebben een prijskaartje dat gemaakt is van een Text2D object. Deze heeft de capabilities dat ie verandert kan worden. Dus als de auto aangepast wordt zal de prijs ook aangepast worden.
Nu het probleem, als de auto verkocht wordt dan is het de bedoeling dat er een sticker met verkocht overheen komt. Wat we hebben geprobeerd is een texture erover heen te laden. De texture was geen probleem, het laden van de texture ook niet maar het eroverheen zetten wel.
Enige code die we geprobeerd hebben is om een texture op een box te laden en die dan transparant weer te geven.
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| // Load in the Texture File TextureLoader loader = new TextureLoader("models/verkocht.gif",null); //Create Texture object Texture brick = loader.getTexture(); //Create Appearance Object Appearance appearance = new Appearance(); TextureAttributes ta = new TextureAttributes(); appearance.setTextureAttributes(ta); // Attach Texture object to Appearance object appearance.setTexture(brick); // Create Shape object and assign it the Appearance object. Box mySphere = new Box(0.2f, 0.1f, 0.0f,Primitive.GENERATE_TEXTURE_COORDS,appearance); BranchGroup extra = new BranchGroup(); extra.addChild(mySphere); priceBG.addChild(extra); |
Wat we ook geprobeerd hebben is om de texture in een Shape3d te krijgen met daarnaast een QuadArray om de plek aan te geven. De QuadArray is in dit geval een kopie van de QuadArray van de text2d om de goed plek te krijgen. De QuadArray is aangevuld met textureCoordinaten om die ook goed te zetten. Op deze manier komt ie mooi op de goede plek te staan maar we krijgen hem maar niet naar de voorgrond.
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| QuadArray plane = new QuadArray(4, GeometryArray.COORDINATES | GeometryArray.TEXTURE_COORDINATE_2); Geometry g = text2d.getGeometry(); plane = (QuadArray) g; Point2f q = new Point2f( 1.0f, 0.0f); plane.setTextureCoordinate(0, q); q.set(1.0f, 1.0f); plane.setTextureCoordinate(1, q); q.set(0.0f, 1.0f); plane.setTextureCoordinate(2, q); q.set(0.0f, 0.0f); plane.setTextureCoordinate(3, q); Appearance appear = new Appearance(); TextureLoader loader = new TextureLoader("models/verkocht.gif", null); ImageComponent2D image = loader.getImage(); // can't use parameterless constuctor Texture2D texture = new Texture2D(Texture.BASE_LEVEL, Texture.RGBA,image.getWidth(), image.getHeight()); texture.setImage(0, image); appear.setTexture(texture); Shape3D planeObj = new Shape3D(plane, appear); BranchGroup extra = new BranchGroup(); extra.addChild(planeObj); priceBG.addChild(extra); |
Heeft er iemand enig idee hoe we de texture op de voorgrond kunnen krijgen of heeft iemand een ander oplossing voor het plaatsen van de sticker?
Alvast bedankt