Benutzer-Werkzeuge

Webseiten-Werkzeuge


api:documentation:grafik3d:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
api:documentation:grafik3d:start [2025/03/04 15:03] – [3D-Grafik] martinapi:documentation:grafik3d:start [2025/03/08 08:45] (aktuell) – [Sprite3d] martin
Zeile 172: Zeile 172:
 </HTML> </HTML>
  
 +===== Sprite3d =====
 +
 +<WRAP center round tip 80%>
 +Objekte der Klasse ''Sprite3d'' sind Bilder, die immer zur Kamera hin gerichtet sind. \\ \\ 
 +// Tipp: Klicken Sie im folgenden Beispiel mit der linken Maustaste ins Bild und ziehen Sie die Maus um die Kamera zu bewegen!//
 +</WRAP>
 +
 +<HTML>
 +<div class="java-online" style="height: 400px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': '3d-sprite', 'enableFileAccess': true}">
 +
 +<script type="text/plain" title="Test1.java">
 +Box3d box = new Box3d();
 +
 +Sprite3d sprite = new Sprite3d(1, SpriteLibrary.Plattforms, 20);
 +sprite.move(0, 1.5, 0);
 +
 +</script>
 +
 +</div>
 +
 +</HTML>
 +
 +
 +<WRAP center round tip 80%>
 +Die Klasse Sprite3d ist auf Geschwindigkeit hin optimiert, so dass problemlos mehrere tausend Sprites gleichzeitig animiert werden können. \\ \\ 
 +Hier ein kleines Beispielprogramm dazu:
 +</WRAP>
 +
 +<HTML>
 +<div class="java-online" style="height: 300px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': '3d-sprite_2', 'enableFileAccess': true}">
 +
 +<script type="text/plain" title="Test1.java">
 +
 +
 +Cylinder3d c = new Cylinder3d(0.3, 0.3, 0.5);
 +c.move(0, 0.25 - 3, 0);
 +World3d.getWorld3d().getCamera().moveTo(20, 20, 20);
 +
 +
 +Plane3d p1 = new Plane3d(18, 18);
 +p1.rotateX(-90);
 +p1.move(0, -12, 0);
 +p1.getMaterial().setColor(0x5959c9); 
 +p1.enableFrontBackSide(true, true);
 +
 +new ParticleEmitter();
 +
 +
 +
 +class ParticleEmitter extends Actor {
 +   int j = 0;
 +   public void act() {
 +      for (int i = 0; i < 120; i++) {
 +         new FlyingSprite1();
 +      }
 +      if(j++ % 30 == 0) println(FlyingSprite1.count + " Sprites sichtbar");
 +   }
 +}
 +
 +
 +class FlyingSprite1 extends Sprite3d {
 +   static int count = 0;
 +   double vy = Random.randdouble(15, 30);
 +   double vx = Random.randdouble(-8, 8);
 +   double vz = Random.randdouble(-8, 8);
 +   double flimmerFrequency = Random.randdouble(0.2, 1);
 +   int t = 0;
 +
 +   FlyingSprite1() {
 +      super(0.9, SpriteLibrary.Particles, 0);
 +      move(0, 0.3 - 3, 0);
 +      setColor(Color.randomColor(180, 220));
 +      count++;
 +   }
 +
 +   public void act() {
 +      double factor = 0.02;
 +      move(vx * factor, vy * factor, vz * factor);
 +      // setAlpha(Math.abs(Math.sin(t++ * flimmerFrequency)) > 0.8 ? 1 : 0);
 +
 +      vy = vy - 0.4;
 +      if(getY() < -12) {
 +         destroy();
 +         count--;
 +      } 
 +   }
 +}
 +</script>
 +
 +</div>
 +
 +</HTML>
  
api/documentation/grafik3d/start.1741100613.txt.gz · Zuletzt geändert: 2025/03/04 15:03 von martin