Hintergrund ist kein Hintergrund.

Status
Nicht offen für weitere Antworten.

MPW

Top Contributor
Moin,

ich arbeite zur Zeit Java3D für Anfänger und Fortgeschritten durch, und so mache ich gerade den Sternenhintergrund....

Code:
	void createStarBackground(BranchGroup bg) {
		java.util.Random rand = new java.util.Random();
		float mag;
		BranchGroup BGBranch = new BranchGroup();
		Background BG = new Background();

		PointArray starfield = new PointArray(15000, PointArray.COORDINATES|PointArray.COLOR_3);
		float[] point = new float[3];
		float[] brightness = new float[3];
		for (int i = 0; i<15000; i++) {
			point[0] = (rand.nextInt(2) == 0) ? rand.nextFloat() * -1.0f : rand.nextFloat();
			point[1] = (rand.nextInt(2) == 0) ? rand.nextFloat() * -1.0f : rand.nextFloat();
			point[2] = (rand.nextInt(2) == 0) ? rand.nextFloat() * -1.0f : rand.nextFloat();
			starfield.setCoordinate(i, point);
			mag = (rand.nextFloat() +0.5f) /1.5f;
			brightness[0] = mag;
			brightness[1] = mag;
			brightness[2] = mag;
			starfield.setColor(i, brightness);
		}
		Shape3D StarShape = new Shape3D(starfield);
		StarShape.setAppearance(new Appearance());
		StarShape.getAppearance().setPointAttributes(new PointAttributes(1f, true));
		BGBranch.addChild(StarShape);
		BG.setGeometry(BGBranch);
		BG.setApplicationBounds(new BoundingSphere(new Point3d(), 10.0));
		bg.addChild(BG);
	}

mit dem Aufruf...

Code:
		createStarBackground(RootBG);

Aber aus irgendeinem mir nicht ersichtlichen Grund, kann ich aus dem Hintergrund rauslaufen....soweit ich das in dem Toturial verstanden haben, sollte man das aber nicht können.....

Danke für alle Hinweise!

MfG
MPW
 
Vielleicht fragst du einfach mal in dem Forum, auf das in dem Tutorial verwiesen wird!? Da wird dir sicher geholfen... ;-)
 
Was meinst du mit "herauslaufen"? Vielleicht liegt es ja an den recht kleinen ApplicationBounds, z.B. mit dem OrbitBehavior ist man schnell aus einem Umkreis von 10 meter um den Mittelpunkt herum draußen. Ansonsten weiß ich auch nix, kannst aber auch mal ne Methode von mir anschauen:

Code:
     public BranchGroup createBackGraph() {

         BranchGroup objRoot = new BranchGroup();

         PointArray starGeom1 = new PointArray(1300, PointArray.COORDINATES);                 
         Appearance starAppear1 = new Appearance();
         for (int i = 0; i < 1300; i++){
         	Point3d p3d = new Point3d (Math.random() * 2 - 1, Math.random() * 2 - 1, Math.random() * 2 - 1);
         	starGeom1.setCoordinate(i, p3d);
         }
         PointAttributes point1 = new PointAttributes(2.0f, false);
         starAppear1.setPointAttributes(point1);
         objRoot.addChild(new Shape3D(starGeom1, starAppear1));         
 
         objRoot.compile();
         return objRoot;
    }

//...

			Background back = new Background (createBackGraph());
			back.setApplicationBounds(new BoundingSphere(new Point3d(), 1000.0));
			scene.addChild(back);

@Oxygenic: Ich finds ja noch ok, wenn du hier Werbung für Javacore machst. Aber wenn du schon was schreibst, könntest du ihm ja auch gleich weiterhelfen, oder?
 
Hm, ich hab' das dann wohl missverstanden, hab' jetzt einfach diese 10 Meter auf das 100000fache erhöht.
 
Illuvatar hat gesagt.:
@Oxygenic: Ich finds ja noch ok, wenn du hier Werbung für Javacore machst. Aber wenn du schon was schreibst, könntest du ihm ja auch gleich weiterhelfen, oder?

was heißt werbung ichnehme eher an er speilt darauf an dass javacore das offizielle supportforum für dieses tutorial ist. so steht es zumindest drin das dort der autor selbst fragen beantwortet
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben