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/11 20:05] – [Einfache 3D-Grundformen] 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 32: | Zeile 40: | ||
Box3d box2 = new Box3d(1, 1, 0.5, 2, 4, 2); | Box3d box2 = new Box3d(1, 1, 0.5, 2, 4, 2); | ||
box2.move(-1, | box2.move(-1, | ||
- | box2.getMaterial().setColor(0x5050ff); | + | box2.getMaterial().setColor(0x5050ff).setWireframe(true); |
- | box2.getMaterial().setWireframe(true); | + | |
Box3d box3 = new Box3d(); | Box3d box3 = new Box3d(); | ||
- | box3.getMaterial().setColor(0xff0000); | + | box3.getMaterial().setColor(0xff0000).setAlpha(0.6); |
- | box3.getMaterial().setAlpha(0.6); | + | |
- | box3.getMaterial().setTransparent(true); | + | |
</ | </ | ||
Zeile 149: | Zeile 154: | ||
+ | ==== Icosahedron3d ==== | ||
+ | <WRAP center round tip 80%> | ||
+ | Zur Bedeutung der maximal zwei möglichen Parameter radius, detail siehe [[https:// | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | Icosahedron3d ico = new Icosahedron3d(2, | ||
+ | ico.getMaterial().setFlatShading(true); | ||
+ | while(true); | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== 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.1736625940.txt.gz · Zuletzt geändert: 2025/01/11 20:05 von martin