Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
foreach ehem. hanse
Anmeldedatum: 08.05.2004 Beiträge: 183
Medaillen: Keine
|
Verfasst am: 25.03.2006, 17:17 Titel: Splines |
|
|
Für ein Projekt soll ein Raumschiff verschiedene Punkte abfliegen. Da das Raumschiff keine scharfen Ecken fliegen soll kommt lineare Interpolation nicht in frage. B-Splines gehen auch nicht da das Schiff die Punkte berühren muss.
Also hab ich mich für natürliche Splines entschieden. Da ich die nicht selber implementieren will (wird vermutlich zu langsam und würde zu lange dauern) suche ich eine fertige Implementation.
Hat jemand so eine herum liegen? |
|
Nach oben |
|
|
Chriss Senior JLI'ler
Anmeldedatum: 18.08.2004 Beiträge: 267
Medaillen: Keine
|
|
Nach oben |
|
|
foreach ehem. hanse
Anmeldedatum: 08.05.2004 Beiträge: 183
Medaillen: Keine
|
Verfasst am: 26.03.2006, 11:57 Titel: |
|
|
Naja es sind Bezierpatches. Bei Bezierpatches werden zusätzliche Kontrollpunkte verwendet die von der Kurve (Fläche nicht berührt werdN). |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 26.03.2006, 14:42 Titel: |
|
|
Ich finde das diese Splines sich sehr interessant anhören. Würde ein schönes Thema für einen Wettbewerb abgeben... _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 26.03.2006, 14:51 Titel: |
|
|
Mach es Dynamisch:
Das Raumschiff hat zu jeder Zeit im Flug einen Vektor Position und eine Quanternion Richtung. (Die Quanternion enthält also neben dem RichtungsVektor noch eine Information, wie das Raumschiff um die eigene Flugachse gedreht ist)
Und Du hast eine Zielposition, wo das Raumschiff hinfliegen soll. Du kannst doch nun berechnen, in welche Richtung das Raumschiff gelenkt werden muss, damit es dem Ziel näher kommt. Das hat 2 Vorteile gegenüber einer Fest vorher definierten Flugbahn:
Die Zielposition kann dynamisch sein - sprich sie kann sich ändern und das Raumschiff findet trotzdem hin, und Du musst weder Splines, Nurms, Patches oder Beziers berechnen - die Flugbahnkrümmung kommt ganz von alleine.
Wenn du das ganze statt 3D nur in 2D benötigst, sind die Schritte analog - nur sind die Berechnungen um ein vielfaches simpler... _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 26.03.2006, 15:10 Titel: |
|
|
genau, so wies AFE gesagt hat, würde es am besten gehen. Damit keine zu großen "Richtungsschwenker" vorkommen, könntest du bei einer Drehung die Endrichtung speichern, bei jedem Frame wenn gedreht wird um eine vorbestimme Zahl drehen, und das solange bis die Endrichtung erreciht ist, in Pseudo ca. so:
Code: |
if( Drehend )
{
Aktuelle_Drehung += Drehungsgeschwindigkeit;
if( Aktuelle_Drehung == Gesuchte_Drehung )
Drehend = false;
} |
Gruß DXer |
|
Nach oben |
|
|
foreach ehem. hanse
Anmeldedatum: 08.05.2004 Beiträge: 183
Medaillen: Keine
|
Verfasst am: 26.03.2006, 17:47 Titel: |
|
|
das Problem ist das das ganze Multiplayer mäßig werden soll und ich die Steuerung eben so machen wollte um Traffic zu sparen.
Das wollte ich eigendlich nicht verraten *gg* |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 26.03.2006, 19:52 Titel: |
|
|
Was schließt sich bei Multiplayer und der vorgestellten Lösung aus? Bzw. wie genau willst du welche Steuerung machen?
Ich finde die Lösung mit Vektoren eigentlich auch die beste. Es wirkt dann auch realistischer, wenn das Raumschiff nicht immer in Richtung der Linie gedreht ist, sondern immer nur in die Beschleunigungsrichtung. Wenn du eine Unterscheidung zwischen Geschwindigkeitsvektor und Beschleunigungsvektor hast, dann brauchst du solche zeitlichen Verzögerungen wie sie in der Realität vorkommen, nicht mehr umständlich einbauen, weil sie in dem ganzen schon integriert sind. Wenn du bei einem Schiff nach rechts lenkt, wird es erst noch eine Weile geradeaus fahren, bis die Beschleunigung die gesamte Masse des Schiffs nach rechts umgelenkt hat _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 27.03.2006, 15:01 Titel: |
|
|
The Lord of Programming: Man kann das Raumschiff auch einen Spline abfliegen lassen und trotzdem in eine andere Richtung schauen lassen. Ich nehme mal an seine Flieger sind KI gesteuert also wird das sicher eh irgendwie gescriptet sein. Und eine normale Steuerung mit Beschleunigung etc zu scripten ist wirklich verdammt umständlich.
@hanse: Ich habe auf CD irgendwo eine Facharbeit darüber rumfliegen... kann ich dir gerne schicken damit du es selber probieren kannst wenn du keine Implementierung findest. Ansonsten schau ich mal auf GarageGames.com. Da hat einer eine Spline-Klasse für Weltraumspiele gebastelt. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
Flow Junior JLI'ler
Alter: 42 Anmeldedatum: 13.09.2005 Beiträge: 57
Medaillen: Keine
|
Verfasst am: 27.03.2006, 15:37 Titel: |
|
|
@hazel
wenn Du die Facharbeit auf deiner CD dazu gefunden hast, wäre ich auch sehr daran interessiert |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 27.03.2006, 16:50 Titel: |
|
|
Flow hat Folgendes geschrieben: | @hazel
wenn Du die Facharbeit auf deiner CD dazu gefunden hast, wäre ich auch sehr daran interessiert |
er kann sie ja uploaden, auf sowas als opensource bin ich imer scharf |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 27.03.2006, 16:52 Titel: |
|
|
Hazel hat Folgendes geschrieben: | The Lord of Programming: Man kann das Raumschiff auch einen Spline abfliegen lassen und trotzdem in eine andere Richtung schauen lassen. |
Klar, hab ich ja auch nicht bestritten
Ich denke nur, dass es so komplizierter ist, weil man es zusätzlich noch einbauen muss.
Hazel hat Folgendes geschrieben: | Ich nehme mal an seine Flieger sind KI gesteuert also wird das sicher eh irgendwie gescriptet sein. Und eine normale Steuerung mit Beschleunigung etc zu scripten ist wirklich verdammt umständlich. |
Ich kenne mich zwar nicht so besonders mit gescripteter KI aus, aber was hat die KI mit der Physik der Welt zu tun?
Das Script bzw. die ("Wegfindungs-")KI muss ja eigentlich nur das Ziel selbst bestimmen bzw. ein paar Eckpunkte, die es vorher noch abfahren muss. Die Physik würde ich direkt ins Programm integrieren. Kann sein, dass ich das unterschätze, aber ich kann mir wirklich nicht vorstellen, was an dieser Methode so schwer/umständlich sein soll.
Den Beschleunigungsvektor bestimmt man mit den Werten der KI, den Geschwindigkeitsvektor hat man noch aus den vorherigen Frames und muss dann ganz einfach mit Vektoraddition arbeiten.
Aber hanse, kannst du vielleicht erläutern, was genau an der vektorbasierten Lösung nicht zu deinem Projekt passt? Das hat mich jetzt neugierig gemacht _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 27.03.2006, 18:12 Titel: |
|
|
The Lord of Programming hat Folgendes geschrieben: |
Ich kenne mich zwar nicht so besonders mit gescripteter KI aus, aber was hat die KI mit der Physik der Welt zu tun?
Das Script bzw. die ("Wegfindungs-")KI muss ja eigentlich nur das Ziel selbst bestimmen bzw. ein paar Eckpunkte, die es vorher noch abfahren muss. Die Physik würde ich direkt ins Programm integrieren. Kann sein, dass ich das unterschätze, aber ich kann mir wirklich nicht vorstellen, was an dieser Methode so schwer/umständlich sein soll.
Den Beschleunigungsvektor bestimmt man mit den Werten der KI, den Geschwindigkeitsvektor hat man noch aus den vorherigen Frames und muss dann ganz einfach mit Vektoraddition arbeiten.
Aber hanse, kannst du vielleicht erläutern, was genau an der vektorbasierten Lösung nicht zu deinem Projekt passt? Das hat mich jetzt neugierig gemacht :) |
Naja es ist auf alle Fälle schwerer als Splines, welche recht simpel sind. Wenn man die Physikengine dazu benutzen würde müsste man Integrieren um herauszubekommen wieviel Gas das Schiff geben muss um genau auf dem Punkt zur Ruhe zu kommen. Das gleiche gilt für die Rotationsbeschleunigung. Wenn man das Schiff ne weiche Spline abfliegen lässt und ein bisschen per Script oder KI die Rotation faket dann ist es auf alle Fälle einfacher so hinzukriegen das es cool/intellelligent aussieht als nur mit der Physik. :) _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
|