Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 20.04.2008, 16:26 Titel: 3D-Tutorial |
|
|
Hallo!
Kennt jemand ein gutes 3D-Tut für besonders bescheurte? Also ich meine so eins wo alles ganz genau beschrieben ist.
Danke schon mal... |
|
Nach oben |
|
 |
Heizi

Anmeldungsdatum: 19.01.2005 Beiträge: 309
|
Verfasst am: 20.04.2008, 16:34 Titel: |
|
|
unter www.qbasic.de -> Tutorials
findest du eins von Mario Zechner, dass hab ich mir auch mal angeschaut.
Dort werden vor allem die mathematischen Grundlagen erklärt.
Dann geht es noch um eine Sternenfeld Simulation glaub ich(oder war das ein anderes Tut???) ich hoffe ich konnte dir weiterhelfen
MfG |
|
Nach oben |
|
 |
Caran

Anmeldungsdatum: 11.03.2007 Beiträge: 290 Wohnort: Lörrach
|
Verfasst am: 20.04.2008, 16:49 Titel: |
|
|
Schau doch mal im Examples Ordner und GL\ damit hab ich das auch teilweise lernen können. Ansonsten gibts noch das http://wiki.delphigl.com/index.php/Hauptseite. Daher beziehe ich immer öfters Informationen, rund um OpenGL. Allerdings muss man sagen, dass auch hier nicht alles soo gut geschildert ist.
MfG Caran _________________ Eine Erkenntnis von heute kann die Tochter eines Irrtums von gestern sein. |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 20.04.2008, 18:14 Titel: |
|
|
Danke... |
|
Nach oben |
|
 |
darkinsanity aka sts

Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 21.04.2008, 20:30 Titel: |
|
|
falls du was von Visual C++ verstehst (oder es zumindest soweit kapierst um es auf Freebasic umzusetzen), dann solltest du diese Seite mal besuchen: nehe.gamedev.net
es gibt auch deutsche übersetzungen davon, einfach mal googlen |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 22.04.2008, 14:24 Titel: |
|
|
Und wozu muss man da unbedingt direkt was von Visual C++ verstehen? Warum sollten rudimentäre C++-Kenntnisse nicht schon reichen?  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 10.06.2008, 18:23 Titel: |
|
|
Ich habe noch eine Frage:
Ich habe einen Weltraumsimulator geschrieben. Bis jetzt sind da halt nur Sterne die auf einen zufliegen aber ich wollte Fragen wie mit der Kamera lenken kann (also z.B. in X Richtung drehen). Also das funktioniert schon, nur wenn ich nach links lenke, kommen die Sterne von der Seite aus mich zu. Wie muss man das schreiben das sie von Vorne kommen? |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 10.06.2008, 18:41 Titel: |
|
|
Achnee, hat sich schon erledigt.
Dafür habe ich jetzt eine andere Frage: Wenn ich die Kamera und z.B. 45 grad nach x drehe und dann vorwärts fliegen möchte, wie berechnet man das? |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 10.06.2008, 18:49 Titel: |
|
|
Code: |
'---BEWEGUNG---
With TViewPos
'--- Vor/Zurück
.X = .X + VR_View_Pos_Change.Z * Cos(VR_View_Winkel.X / PIx180)
.Z = .Z + VR_View_Pos_Change.Z * Sin(VR_View_Winkel.X / PIx180)
'--- Links/Rechts
.X = .X + VR_View_Pos_Change.X * Cos((VR_View_Winkel.X - 90) / PIx180)
.Z = .Z + VR_View_Pos_Change.X * Sin((VR_View_Winkel.X - 90) / PIx180)
'--- Hoch/Runter
.Y = VR_View_Pos_Change.Y * 0.1 '(VR_View_Winkel.Z * 0.05)
End With
|
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 10.06.2008, 19:51 Titel: |
|
|
Und noch etwas:
Mein Weltraum soll sozusagen eine Kugel sein. Jetzt soll er einen Stern irgentwo inmitten der Kugel setzen. Vorher hatte ich einen Würfel, da sah es so aus:
Code: | Function NeuerStern () As Punkt3DType
Dim nStern As Punkt3DType
nStern.XPos = Rnd * Raum.XGroesse + -(Rnd * Raum.XGroesse)
nStern.YPos = Rnd * Raum.YGroesse + -(Rnd * Raum.YGroesse)
nStern.ZPos = Rnd * Raum.ZGroesse + -(Rnd * Raum.ZGroesse)
Return nStern
End Function |
Nur wie macht man das in einer Kugel? |
|
Nach oben |
|
 |
Caran

Anmeldungsdatum: 11.03.2007 Beiträge: 290 Wohnort: Lörrach
|
Verfasst am: 10.06.2008, 21:47 Titel: |
|
|
Ich denk das hier löst das Problem
Code: |
Function NeuerStern () As Punkt3DType
Dim nStern As Punkt3DType
nStern.XPos = rnd()*Radius_Kugel
nStern.YPos = rnd()*Radius_Kugel
nStern.ZPos = rnd()*Radius_Kugel
Return nStern
End Function
|
Grüße, Caran _________________ Eine Erkenntnis von heute kann die Tochter eines Irrtums von gestern sein. |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 11.06.2008, 15:47 Titel: |
|
|
Aber das geht auch nicht.
Wenn z.B. der Kugelradius = 100 ist und das Programm würfelt X = 100, Y = 100 und Z = 100, dann ist dieser Punkt außerhalb der Kugel... |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 11.06.2008, 20:51 Titel: |
|
|
Hallo
Ich denke, am eifachsten ist es, wenn du beim Festlegen der zufälligen Sternpositionen prüfst, ob der Punkt innerhalb der Kugel liegt. Außerdem musst du den Radius mal zwei nehmen und dann den Radius abziehen, damit du auf einen Wertebereich von -radius bis +radius kommst, sonst wird nur ein 1/8 der Kugel mit Sternen gefüllt. Also immer nur in positiver x,y und z-Richtung.
Also ungefähr so:
Code: | DO
x(stern) = RND * 2 * radius - radius
y(stern) = RND * 2 * radius - radius
z(stern) = RND * 2 * radius - radius
d = SQR(x(stern) ^ 2 + y(stern) ^ 2 + z(stern) ^ 2)
LOOP WHILE d > radius |
Gruß
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 12.06.2008, 18:49 Titel: |
|
|
Danke das geht.
Und wieder ne Frage: wie kann man berechnen, ob ein Stern, vom Betrachter aus gesehen, sichtbar ist (Also im Bild ist)? |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 12.06.2008, 21:27 Titel: |
|
|
Indem man die Winkel berechnet, den die (gedachte) Verbindungslinie vom Stern zum Betrachter in der Horizontalen und Vertikalen zur Blickrichtung einnimmt. Ab einer bestimmten Abweichung nach oben oder unten bzw. zur Seite, liegt der Stern außerhalb des Sichtfeldes.
Gruß
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 13.06.2008, 13:22 Titel: |
|
|
Ja, das ist mir schon klar, nur (1) wie berechne ich den Winkel und (2) Wie groß muss der Winkel sein?
Bei der konvertierung von 3D zu 2D, habe ich eine Zahl (Fokus) und damit muss man bestimmt irgentwie den Winkel berechnen oder? |
|
Nach oben |
|
 |
max06

Anmeldungsdatum: 05.12.2004 Beiträge: 390 Wohnort: Augsburg
|
Verfasst am: 14.06.2008, 14:26 Titel: |
|
|
Warum löst du das ganze nicht mit OpenGL?
Ich habe mir auch zuerst das Tutorial von qbasic.at angesehen und in FB umgesetzt. Doch wollte ich das ganze mit einer etwas ansprechenderen Bibliothek umsetzen und gleichzeitig die Chance nutzen, OGL zu lernen und zu verstehen.
Rausgekommen ist dabei das hier
Code gibts auf Anfrage  |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 14.06.2008, 19:15 Titel: |
|
|
Ja, aber ich bin jetzt schon so weit mit meinem "Starfield". |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 18.06.2008, 11:38 Titel: |
|
|
Hallo
Zum berechnen der Winkel würde ich so machen. Zuerst das Raumschiff zum Zentrum deines Universums machen, indem man die Schiffskoordinaten von den Sternkoordinaten abzieht. Dann kann man mit der ATN-Funktion diese neuen, kartesischen Sternkoordinaten in polare mit dem Betrachter als Nullpunkt umwandeln.
Umrechnung kartesisch zu polar
Zu diesen Winkeln muss man dann die Winkel, die die Blickrichtung hat, addieren. Ist das Raumschiff und damit die Blickrichtung z.B. genau nach hinten gedreht, müsste man zum horizontalen Winkel eben 180° bzw. PI dazuzählen. Sieht man genau nach oben, dan 90° oder PI/2 zum vertikalen.
Nun kann man auch eine Auswahl treffen, welche Sterne noch im Sichtfeld liegen. Welche Winkel du da zulässt, kann ich nicht genau sagen, ich kenne mich mit 3-D-Grafik nicht aus. Vielleicht gibt es da Regeln oder Festlegungen. Laut Wikipedia beträgt das menschliche Sichtfeld ca. 170° in der Horizontalen, aber du kannst ja auch ne "Weitwinkelkamera" benutzen und die zulässigen vertikalen Winkel hängen dann wieder von den Seitenverhältnissen des Bildschirmfensters ab.
Liegt ein Stern im Sichtbereich, wandelst du dessen polare wieder in kartesische Koordinaten um und kannst ihn dann zeichnen.
Umwandlung polare in kartesische Koordinaten
Gruß
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
|