Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

3D-Raster

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 11.07.2008, 16:09    Titel: 3D-Raster Antworten mit Zitat

Wie würdet ihr ein 3D Raster mit 16x16x16 Pixel darstellen? Jeder 3D-Pixel kann entweder weiss oder durchsichtig/transparent sein.

Der "Würfel" sollte perspektivisch drehbar sein.. Schnittstelle weitgehend egal.. also ob selbstgemacht oder OpenGL/DirectX oder ähnliches...

Sollte nur möglichst einfach zu realisieren sein und nicht grade im schneckentempo arbeiten..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 11.07.2008, 16:14    Titel: Antworten mit Zitat

Nachtrag:

Die Pixel sollten eine Räumliche ausdehnung besitzen.

Also keine 16x2D-Grafiken hintereinander legen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 11.07.2008, 16:30    Titel: Antworten mit Zitat

1. Es gibt keine "Punkte" im 3D Raum, die du einfach so zeichnen kannst. Das liegt daran, weil die 3D Schnitstelle keine Tiefen bzw. Breiten und Höheninformationen zu diesem "Pixel" hat.

Du kannst jedoch 3 Dreiecke zu einem "Punkt" verbinden.

Alternativ könntest du, wenn du nur punkte haben willst, einen Punkthaufen bilden, und diesen im Wireframe betrieb zeichnen lassen. Dann würdest du Punkte sehen, jedoch wären sie ohne tiefeninformationen sowie ohne Textur.


was genau hast du vor?


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 11.07.2008, 16:43    Titel: Antworten mit Zitat

Gabs nicht früher mal in manchen spielen sogenannte "Voxel" ?

Ein Punkthaufen ist nicht "dicht" genug wenn ich mir das so vorstelle.. Wenn zwei ausgefüllte punkte neben/übereinander liegen sollte der raum zwischen den beden pixeln "dicht" sein.. also man sollte nicht dazwischen durchschauen können...


Wenn euch Conway's Game of Life was sagt, dann stellt euch das mal in 3D vor zwinkern

Aber auch für andere Gedankenspiele, die mir so im Kopf rumschwirren könnte ich ein 3D-Raster gut gebrauchen...



Ich stelle mir diese 3D-Pixel wie Quader vor.. nur würden sie dann aus mehreren polygonen bestehen welche die programmierung sicherlich nur noch komplizierter machen würden... schätze ich mal...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 11.07.2008, 17:18    Titel: Antworten mit Zitat

http://de.wikipedia.org/wiki/Voxel
http://en.wikipedia.org/wiki/Voxel

Vielleicht wären ja openGLs 3D-Texturen was für dich... (Falls deine Grafikkarte oder openGL Implementation das Unterstützt - in Hardware, versteht sich, weil das in Software dermassen lahm ist, da kannste gleich Opas Diaprojektor rauskramen durchgeknallt )
Das dürfte ab openGL 1.2 gehen...

Nachschauen welche openGL Version du hast, kannst du mit fbSysMon, im Report unter Graphics -> openGL version

Was auch wichtig ist, dass alle Masse der 3D-Textur gleich sind, und power of 2 (n^2) groß sind.
Dann kannst du die einfach ne Scheibe der Textur abschneiden ( grinsen ), auf ein GL_QUAD oder zwei GL_TRIANGLES tapeziern, die dann im 1er anordnung hintereinander klatschen, glRotatef davor, und glücklich sein grinsen

Falls ich dich falsch verstanden habe, und du irgendwas ála Matrizenberechnung mit 3 Spalten machen willst -> Shader (per Multitexturing gewünschte Berechnung durchführen, per glReadPixels Bild auslesen und in gewünschtes Datenformat transformieren)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 11.07.2008, 18:13    Titel: Antworten mit Zitat

Mit dem "Pixelhaufen" meine ich eher die Tatsache, das z.B. ein Dreieck aus 3 Vectoren besteht. In DX kann man hier den Wireframe (Lininezeichnung) ein und ausschalten. Wenn du ausschliesslich einen Würfel aus Punkenhaben wilslt, kannst du den "Trick" nutzen, und einfach einen Würfel als Punkthaufen (vektoren) definieren, udn den Wireframe Modus aktivieren. Wenn du diesen Puntkhaufen dannzeichnest, dann wird er nicht als zusammenhängende Linie sondern jeder Vektor als Pixel dargestellt. Egal wie weit er weg ist.

Aber, ich glaube das willst du garnicht. Ich schätze, du willst sowas wie in der WIki unter Voxel zu sehen ist.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Name.and(2)=Andreas



Anmeldungsdatum: 11.07.2008
Beiträge: 14

BeitragVerfasst am: 11.07.2008, 19:12    Titel: Antworten mit Zitat

Eig könntest du das ganze doch einfacher haben, indem du ein Array( 16x 16 x 16) erstellst und dann eine skalierung hinzufügst bsp.: du sagt standardmäßig ist ein Punkt 1X1x1 Pixel und dann kannst du das beliebig mit dem skalierungsfaktor s vergrößern, so dass es passt.
( in dem Array kannst du dann die Farbinformationen speichern bsp.,: 1 für weiß; 0 für transparent)

jetzt brauchst du nur noch die formeln, um den würfel auch 3d anzuzeigen, bedien dafür mal google, da hab ich auch was gefunden als ich sowas ähnliches benötigte (sry hab den Link vergessen)

Andreas
_________________
Fluchen ist die einzige Sprache, die alle Programmierer wirklich beherrschen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 11.07.2008, 19:17    Titel: Antworten mit Zitat

Die Zeiten in denen jeder seinen eigenen Software-Renderer programmiert hat sind vorbei.

Er kann das ganz einfach handeln, indem er eine 3D-Textur wie ein 3 Dimensionales Array behandelt, und danach durch eine Schleife diese per glCopySubTexImage3D (oder so ähnlich) auf mehrere GL_QUADS bringen.
evtl. glScalef davor, glTranslatef wahrscheinlich auch, und glRotatef für die Perspektive...

(Nat. gluPerspective beim Initialisieren nutzten...)

Wenn du's mit openGL ganz leicht haben willst, hier gibts nen GLFW Basecode, dann brauchst du dich nich mit der fbGFX rumärgern.

Achja, und du brauchst nen aktuellen GLFW Header, hier zu haben...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Name.and(2)=Andreas



Anmeldungsdatum: 11.07.2008
Beiträge: 14

BeitragVerfasst am: 11.07.2008, 19:27    Titel: Antworten mit Zitat

Ja das ist wahr, jedoch scheint bei seinem Anwendungsgebiet sowas sinnvoller zu sein, denn er will das ja für verschiedene Anwendungen mit anderen Anforderungen haben, da kann er es dann ja einfach umprogrammieren.

Außerdem...so schwer ist das was ich vorgeschlagen hab nu nicht, in Delphi hat das mal ein Kumpel von mir gemacht, das waren kaum mehr als 150 Zeilen und das ist nun wirklich nicht die Welt.

Andreas
_________________
Fluchen ist die einzige Sprache, die alle Programmierer wirklich beherrschen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 14.07.2008, 13:24    Titel: Antworten mit Zitat

@28398: Was ist das denn für ein seltsamer code? .. da ist eine funktion namens main mit irgendwelchen Parametern deren sinn ich nicht verstehe und ganz am ende wird die funktion mit "end function" beendet.. aber dann kommt noch eine Zeile:

End main(__FB_ARGC__, __FB_ARGV__)

Deren sinn erschließt sich mir irgendwie überhaupt nicht..
Soll das einer main-function wie in C/C++ entsprechen? .. wie funktioniert das?? bzw warum wird das da so gemacht?

Sorry für das kurze offtopic...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 14.07.2008, 16:24    Titel: Antworten mit Zitat

__FB_ARGC__ und __FB_ARGV__ sind Präprozessorkonstanten, welche zu den Komandozeilenparametern umgesetzt werden. (Siehe: Command Befehl)

Die Rückgabe der main() function wird als "Fehlernummer" an End weitergeleitet.

Und, jo .. das is C Style.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 14.07.2008, 22:57    Titel: Antworten mit Zitat

Habe das so gehalten, weil das eine (fast) 1:1 Übersetztung von hier ist.
Habe lediglich den Teapot hinzugefügt...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz