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/01/12 07:29] – [Box3d (Quader)] martinapi:documentation:grafik3d:start [2025/03/08 08:45] (aktuell) – [Sprite3d] martin
Zeile 2: Zeile 2:
 <WRAP center round info 80%> <WRAP center round info 80%>
 Die Online-IDE ermöglicht einen einfachen Einstieg in die 3D-Grafikprogrammierung und stellt dafür viele spezialisierte Klassen zur Verfügung, die intern wiederum auf [[https://threejs.org/|die Open-Source-Bibliothek three.js]] zurückgreifen. \\ \\  Die Online-IDE ermöglicht einen einfachen Einstieg in die 3D-Grafikprogrammierung und stellt dafür viele spezialisierte Klassen zur Verfügung, die intern wiederum auf [[https://threejs.org/|die Open-Source-Bibliothek three.js]] zurückgreifen. \\ \\ 
-Die 3D-Grafik-API besteht Stand Januar 2025 aus 35 Klassen und ist noch im Entstehen. Die Bezeichner aller Klassen dieser API enden auf "3d", sodass man sie von den anderen Klassen der API leicht unterscheiden kann.+Die 3D-Grafik-API besteht Stand Januar 2025 aus 35 Klassen und ist noch im Entstehen. Die Bezeichner aller Klassen dieser API enden auf "3d", sodass man sie von den anderen Klassen der API leicht unterscheiden kann. \\ \\  
 +Auf dieser Seite werden die verschiedenen Grundformen gezeigt. Hier die weiteren Unterkapitel zum Thema 3D-Grafik: 
 +  * [[:api:documentation:grafik3d:transformationen:start|Transformationen]] \\  
 +  * [[:api:documentation:grafik3d:kamera:start|Kamera]] \\  
 +  * [[:api:documentation:grafik3d:licht:start|Licht]] \\  
 +  * [[:api:documentation:grafik3d:materialien:start|Materialien]] \\  
 +  * [[:api:documentation:grafik3d:texture:start|Texturen]] \\  
 +  * [[:api:documentation:grafik3d:animation:start|Animation]] \\  
 </WRAP> </WRAP>
  
Zeile 164: 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.1736666992.txt.gz · Zuletzt geändert: 2025/01/12 07:29 von martin