Seite 1 von 6
sich drehender 3D-Planet !ohne! 3D Engine
Verfasst: 13.03.2006 19:06
von STARGÅTE
Tachchen,
ich suche jemanden der eine Idee hat wie ich einen sich drehenden Planeten (um die Y-Achse, beim 2D-Bildschirm) sehr schnell darstellen kann ?
Meine erste Idee war ein Sprite im Hintergrund nach links laufen zu lassen und dieses dann mit einen großen Blickloch zu überdecken, aber das sieht
natürlich dumm aus.
Es sollten sich also schon die Pole langsammer bewegen als der Äquator !
Ach so ich will auch keine 360 verschiedene Bilder nach einander anzeiegn lassen!
Hat jemand einen Vorschlag ?

Verfasst: 13.03.2006 19:20
von Green Snake
Ich nehme mal an, dass du mit 3D engine die OGRE engine von pb meinst....nimm doch OpenGL *ist zwar auch was ähnliches, brauchst aber keine DLL mitzuliefern^^*
Verfasst: 13.03.2006 19:23
von STARGÅTE
Green Snake hat geschrieben:Ich nehme mal an, dass du mit 3D engine die OGRE engine von pb meinst....nimm doch OpenGL *ist zwar auch was ähnliches, brauchst aber keine DLL mitzuliefern^^*
naja so was wollte ich ja nicht
Ich versuche es mit Sprites zu machen die sich bewegen
will keine Polygone für eienen Planeten machen ^^
Re: sich drehender 3D-Planet !ohne! 3D Engine
Verfasst: 13.03.2006 20:48
von Kaeru Gaman
STARGÅTE hat geschrieben:sich drehender 3D-Planet !ohne! 3D Engine
@GreenSnake: welchen Teil von "OHNE" hast du nicht verstanden?
@Stargate:
> Ach so ich will auch keine 360 verschiedene Bilder nach einander anzeiegn lassen!
tja, dann wirds dünn...
du hättest noch die möglichkeit, die 360bilder vorher in ein AVI umzuwandeln, und das in einem Sprite anzuzeigen...
eine notlösung wäre, den planeten von oben zu zeigen, das geht dann easy mit RotateSprite3D...
oder du bleibst bei deiner blickloch-konstruktion, wenn du mehrere streifen verwendest,
die unterschiedlich schnell verbeiziehen, wirkt es evtl. etwas besser...
aber die übliche lösung ohne engine ist wohl prerendern,
und da bleibt dir wie ich das sehe nichts anderes als 360 sprites oder AVI...
Verfasst: 13.03.2006 21:07
von Green Snake
@KG
>>Ich nehme mal an, dass du mit 3D engine die OGRE engine von pb meinst....
ich ging davon aus, dass er sie (wie wir alle) nicht mitliefern will
Rückschlag:
>>Ach so ich will auch keine 360 verschiedene Bilder nach einander anzeiegn lassen!
was gibts denn da nicht zu verstehen
*UndNunSichWiederMitKaeruVertragen*
Re: sich drehender 3D-Planet !ohne! 3D Engine
Verfasst: 13.03.2006 21:16
von STARGÅTE
Kaeru Gaman
oder du bleibst bei deiner blickloch-konstruktion, wenn du mehrere streifen verwendest,
die unterschiedlich schnell verbeiziehen, wirkt es evtl. etwas besser...
das war auch meine erweiterte Idee !
das wäre sehr gut aller ding muss man jetzt noch die Krümmung an den seiten beachten also müsste ich gleichzeitig die Sprite zum Rand hin clippen und dann ein weiteres Rechteck einfügen usw.
ALSO :
Ein Geflächt aus Sprites die sich alle unterschiedlich bewegen und geclipt werden.
o je das ist schon wieder die Vorstufe zu 3D-Engine
PS: imm mich mal bei ICQ auf ! Du wurdes bei meiner Liste geworfen k.A. warum
Verfasst: 13.03.2006 21:19
von Zaphod
Da gibt es noch eine möglichkeit, eine kugel nur über sin/cos darzustellen. Hier ist ein kleines Tut dazu:
http://pixwiki.bafsoft.com/mags/11/arti ... phere.html
Verfasst: 13.03.2006 21:47
von STARGÅTE
jo ist einfach aber zimlich langsam ....
denn die gezerrten Sprite3D sollten nicht zu groß sein.
Aber klar das ist völling entgangen ^^
Verfasst: 13.03.2006 22:03
von STARGÅTE
habe ich schnell programmiert :
1000 Punkt einer Kugel
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenScreen(1024, 768, 32, "Kugel")
Structure P
x.l
y.l
F.l
EndStructure
NewList P.P()
Procedure Punkt(x, y, F)
AddElement(P())
P()\x = x ; Winkel ( 0 .. 360 )
P()\y = y ; Höhe ( -r .. r )
P()\F = F ; Farbe RGB()
EndProcedure
b.f = 3.14159265/180
r.l = 200 ; Radius
For n = 1 To 1000 :
Punkt(Random(359), Random(2*r)-r, RGB(Random(127)+128,Random(127)+128, 0))
Next n
Repeat
Kreis = Kreis + 1
If Kreis >= 360 : Kreis = Kreis - 360 : EndIf
ClearScreen(0,0,0)
StartDrawing(ScreenOutput())
ResetList(P())
While NextElement(P())
Plot(512+Sin((P()\x+Kreis)*b)*Sqr(Pow(r,2)-Pow(P()\y,2)), 384+P()\y, P()\F)
Wend
StopDrawing()
FlipBuffers()
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
CloseScreen()
End
so jetzt nur noch dir Textur ^^
Verfasst: 14.03.2006 16:09
von NicTheQuick
So siehts lustig aus:
Code: Alles auswählen
For n = 1 To 1000 :
Punkt(Random(180), Random(r), RGB(Random(127)+128,Random(127)+128, 0))
Next n
Und was ist, wenn du doch ein langes Sprite nimmst, aus dem du dann ein sich von links nach rechts bewegendes Rechteck ausschneidest und es wie folgt verzerrst: Jetzt gehst du Zeile für Zeile durch das Rechteck und resized sie. Oben und unten logischerweise ein oder Null Pixel und in der Mitte so breit wie Anzahl der Zeilen. Das wird vielleicht annähernd der Effekt.
