Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Mai 19, 2024 10:35

Foren-Übersicht » Sonstiges » Meinungen zu den Projekten
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 36 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3
Autor Nachricht
 Betreff des Beitrags: Re: @Open RollerCoaster Factory
BeitragVerfasst: Fr Jul 15, 2011 20:17 
Offline
DGL Member

Registriert: Sa Nov 24, 2007 11:59
Beiträge: 116
Programmiersprache: FreePascal
Danke für das Feedback :)

Bergmann89: Naja, bei Bézierpfaden geht die Strecke auch durch 1/3 der Stützpunkte, wenn man Kurven dritten Gerades aneinanderreiht.
Ich hatte ja sowas vor wie hier. Das ganze würde dann etwa so ablaufen, dass man einen Stützpunkt setzt, der das Ende des letzten und der Anfang des kommenden Segments markiert und gleichzeitig schon 2 voneinander richtungsabhängige Kontrollpunkte erzeugt. Richtungsabhängig deshalb, damit keine extremen Kanten entstehen können (die erste Ableitung müsste bei beiden Segmenten dann ja gleich sein.)

Wenn ich ehrlich bin, hab ich von B-Splines und kubischen Splines extrem wenig Ahnung. Vorurteile sind ja, dass die extrem rechenaufwändig sein sollen und bei jeder noch so kleinen Veränderung der gesamte Streckenverlauf geändert wird. Und dass Geraden praktisch unmöglich sein sollen. Wenn du mich aufklären könntest, wäre ich dir dankbar, denn irgendwie bin ich zu doof zum suchen oder das Internet spuckt wirklich keine vernünftigen Ergebnisse zu dem Thema aus.

Flash: Kann ich tun, hatte ich sogar ursprünglich vor, habs aber dann wieder verworfen, weil noch ne Menge aufgeräumt werden muss. Ich will nichts releasen, wofür ich mich später schämen muss (wobei, das muss ich mich für die grottige Performance sowieso). Aber ich seh mal zu, dass ich zum nächsten Mal was hinbekomme.

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: @Open RollerCoaster Factory
BeitragVerfasst: Sa Jul 16, 2011 00:05 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,

dann Versuch ich mal dich zu erleuchten^^ Erstmal muss ich meinen Post von vorhin korrigieren: B-Splines gehen nicht direkt durch die Stützpunkte. Denn sie sind eine spezielle Form der Berzier-Kurven. Die B-Spline-Kurve ist eine aus n-1 Polynomen zusammengesetzte Kurve (n = Anzahl der Stützpunkte) vom Grad k. Den Grad der B-Splines kannst du selbst definieren. Umso höher der Grad umso glatter wird die Kurve. Für jede Kurve brauchst du mindestens k-1 Stützpunkte. Wenn man ein Stützpunkt ändert (verschiebt, hinzufügt, löscht) dann hat dieser Stützpunkt maximal auf k Kurvenabschnitte Einfluss. Der Rechenaufwand bei B-Splines ist (bei meiner Implementierung) n-1 mal k Rekursionen und in jeder Rekursion ne kleine Berechnung. Da gibt es aber auch sicher vorgefertigte Algorithmen die wesentlich schneller rechnen.

CubicSplines sind wie der Name schon sagt zusammen gesetzte Polynome vom Grad 3. Auf wieviel Kurvenabschnitte die Stützpunkte hier Einfluss haben kann ich nicht genau sagen. Das gute bei CubicSplines ist, das sie direkt durch die Stützpunkte gehen. Ich hab z.B. CubicSplines bei meinem WurmHoleSurfer genutzt. Und ich denke das passt auch gut zu deinen Anforderungen. Der Rechenaufwand besteht bei CubicSplines darin, n Polynome vom Grad k zu lösen. Beim Berechnen der Position auf dem Spline musst du nur den Funktionswert des Splines berechnen. Und das 3mal (für X, Y, und Z). Das aufstellen der Polynome geht relativ schnell. Da das ja nur geschehen muss, wenn der User Stützpunkte ändert muss da denke ich nicht wirklich Wert auf die Performance gelegt erden. Viel wichtiger ist, das die Berechnung der Position auf dem Spline schnell geht, weil ja dann die Achterbahn ca. 30 mal pro Sec ihre Position ändern. Aber einen einfachen Funktionswert eines Polynoms ausrechnen macht der PC fast im Schlaf.

Bei meinen Projekten in denen ich mit CubicSplines gearbeitet habe, hatte ich nie Probleme mit der Geschwindigkeit, weder beim erstellen der Splines (teilweise mit 50 Stützpunkten und 2-3 mal pro sec) noch beim Berechnen der Position (500-1000 mal pro Frame bei ca. 500 FPS). Im Anhang mal ein kleines Programm mit dem du die CubicSplines im Raum testen kannst (DoppelKlick: neuer Stützpunkt; RMT: Stützpunkt verschieben; LMT: Camera verschieben; Mausrad in 3D: Y-Position ändern; Mausrad in 2D: Zoom; Beide Maustasten in 3D: Zoom)

MfG Bergmann.

€: das mit den Geraden is bei CubicSplines nicht so einfach, da hast du Recht. Und das B-Splines durch 1/3 der Stützpunkte gehen ist auch nur teilweise richtig, denn das stimmt nur, wenn die Stützpunkte so genannte DeBoor-Punkte sind. Und zu den hab ich auch noch nich wirklich was im Netz gefunden.


Dateianhänge:
CubicSplineTest.rar [240.38 KiB]
336-mal heruntergeladen

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: @Open RollerCoaster Factory
BeitragVerfasst: Sa Jul 16, 2011 16:08 
Offline
DGL Member

Registriert: Sa Nov 24, 2007 11:59
Beiträge: 116
Programmiersprache: FreePascal
Danke, ich werd mir das ganze mal ansehen, wenn ich mal wieder Windows boote.

Es kann durchaus sein, dass ich mit falschen Ausdrücken um mich werfe, dass ich mich in den Beiträgen oben falsch ausdrücke, aber wenn man kubische Bézierkurven aneinanderreiht, dann bleibt für t=0 nur P0 übrig und für t=1 P3, wenn man mal die Wikipedia-Bezeichnungen übernimmt. P3 ist der P0 des nächsten Segments. Das hab ich auch schon für Animationen implementiert, zumal es sich direkt aus Blender exportieren lässt. Hab mal ein Bildchen gemacht, was ich eigentlich die ganze Zeit meine. Das ist halt so das, was sowohl Blender als auch ich unter Bézierpfaden verstehen. Nach meinem jetzigen Vertändnis dürften B-Splines nichts übermäßig anderes sein, aber ich lass mich gerne korrigieren, wenn ich hier Blödsinn laber.

Bild

Meine Implementation dürfte auch relativ flott sein, weil die wirklich nur das kann (und keine verschiedenen Grade usw.), nur da sich algebraisch die Länge einer solchen Kurve nicht bestimmen lassen dürfte, geschweige denn der Funktionsparameter t ausgehend von der zurükgelegten Länge, werden die Segmente geteilt und in so einer Art Lookup-Table erstellt, was natürlich in der Erstellung relativ langsam sein dürfte, aber die CPU ist mit etwa 10 Suchschritten, einer Interpolation und einer dreidimensionalen Funktionswertberechnung auch am Ziel. Das ist deswegen nötig, weil die zurückgelegte Länge alles andere als proportional zu t ist, und man will ja nicht, dass sich die Bahnen komisch bewegen.

Was DeBoor-Stützpunkte sein sollen, weiss ich aber auch nicht.

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: @Open RollerCoaster Factory
BeitragVerfasst: Mi Jul 20, 2011 16:34 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7804
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Sehr geil! Unbedingt ins Spiel integrieren. Wenns nach mir geht, sollte alle Spiele sowas anbieten. Reduziert zwar die Auflösung, macht das Spiel aber noch cooler.

Kannst du per Option auch "Parallel View" anbieten? Zusätzlich zu "Cross Eye"? Das fällt mir persönlich leichter, solange die Bilder nicht zu nah und zu groß werden.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: @Open RollerCoaster Factory
BeitragVerfasst: Mi Jul 20, 2011 19:40 
Offline
DGL Member

Registriert: Sa Nov 24, 2007 11:59
Beiträge: 116
Programmiersprache: FreePascal
Wird gemacht, da muss ich doch im Prinzip nur die Bilder vertauschen, oder?

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: @Open RollerCoaster Factory
BeitragVerfasst: Do Jul 21, 2011 13:10 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7804
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ja, genau

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 36 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3
Foren-Übersicht » Sonstiges » Meinungen zu den Projekten


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 15 Queries | GZIP : On ]