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. :freak:
Es sollten sich also schon die Pole langsammer bewegen als der Äquator ! :allright:

Ach so ich will auch keine 360 verschiedene Bilder nach einander anzeiegn lassen! :lol:

Hat jemand einen Vorschlag ? :roll:

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 :roll: /:-> :D :mrgreen:

Rückschlag:
>>Ach so ich will auch keine 360 verschiedene Bilder nach einander anzeiegn lassen!

was gibts denn da nicht zu verstehen :twisted:


*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 :lol:

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
Zaphod hat geschrieben: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
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: :mrgreen:

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. /:->