api:documentation:grafik3d:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
api:documentation:grafik3d:start [2025/01/12 07:29] – [Box3d (Quader)] martin | api: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:// | 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:// | ||
- | Die 3D-Grafik-API besteht Stand Januar 2025 aus 35 Klassen und ist noch im Entstehen. Die Bezeichner aller Klassen dieser API enden auf " | + | Die 3D-Grafik-API besteht Stand Januar 2025 aus 35 Klassen und ist noch im Entstehen. Die Bezeichner aller Klassen dieser API enden auf " |
+ | Auf dieser Seite werden die verschiedenen Grundformen gezeigt. Hier die weiteren Unterkapitel zum Thema 3D-Grafik: | ||
+ | * [[: | ||
+ | * [[: | ||
+ | * [[: | ||
+ | * [[: | ||
+ | * [[: | ||
+ | * [[: | ||
</ | </ | ||
Zeile 164: | Zeile 172: | ||
</ | </ | ||
+ | ===== Sprite3d ===== | ||
+ | |||
+ | <WRAP center round tip 80%> | ||
+ | Objekte der Klasse '' | ||
+ | // Tipp: Klicken Sie im folgenden Beispiel mit der linken Maustaste ins Bild und ziehen Sie die Maus um die Kamera zu bewegen!// | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | Box3d box = new Box3d(); | ||
+ | |||
+ | Sprite3d sprite = new Sprite3d(1, SpriteLibrary.Plattforms, | ||
+ | sprite.move(0, | ||
+ | |||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | <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: | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | |||
+ | |||
+ | Cylinder3d c = new Cylinder3d(0.3, | ||
+ | c.move(0, 0.25 - 3, 0); | ||
+ | World3d.getWorld3d().getCamera().moveTo(20, | ||
+ | |||
+ | |||
+ | Plane3d p1 = new Plane3d(18, 18); | ||
+ | p1.rotateX(-90); | ||
+ | p1.move(0, -12, 0); | ||
+ | p1.getMaterial().setColor(0x5959c9); | ||
+ | p1.enableFrontBackSide(true, | ||
+ | |||
+ | new ParticleEmitter(); | ||
+ | |||
+ | |||
+ | |||
+ | class ParticleEmitter extends Actor { | ||
+ | int j = 0; | ||
+ | | ||
+ | for (int i = 0; i < 120; i++) { | ||
+ | new FlyingSprite1(); | ||
+ | } | ||
+ | if(j++ % 30 == 0) println(FlyingSprite1.count + " Sprites sichtbar" | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | class FlyingSprite1 extends Sprite3d { | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | int t = 0; | ||
+ | |||
+ | | ||
+ | super(0.9, SpriteLibrary.Particles, | ||
+ | move(0, 0.3 - 3, 0); | ||
+ | setColor(Color.randomColor(180, | ||
+ | count++; | ||
+ | } | ||
+ | |||
+ | | ||
+ | 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) { | ||
+ | | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | </ | ||
api/documentation/grafik3d/start.1736666992.txt.gz · Zuletzt geändert: 2025/01/12 07:29 von martin