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/03/04 15:03] – [3D-Grafik] martin | api:documentation:grafik3d:start [2025/03/08 08:45] (aktuell) – [Sprite3d] martin | ||
---|---|---|---|
Zeile 172: | 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.1741100613.txt.gz · Zuletzt geändert: 2025/03/04 15:03 von martin