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:

Openb3d Fragen

 
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
0oFreako0



Anmeldungsdatum: 17.12.2011
Beiträge: 114

BeitragVerfasst am: 03.01.2013, 17:20    Titel: Openb3d Fragen Antworten mit Zitat

Hätte ein paar kurze Fragen:

Wie erzeuge ich einen Spiegel Effect? Createmirror gibt es ja nicht traurig
Und wie benutzt ihr zb 2d Befehle? Erzeugt ihr auch ein FB.Image Buffer und klebt es dann per buffer2tex an ein quat an?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 03.01.2013, 18:33    Titel: Antworten mit Zitat

2D-Befehle sind doch ganz einfach. Bei OpenB3D wird eine 2d.bi mitgeliefert, die musst du vorher includen. Sieht dann so aus:
Code:
#Include "Openb3d.bi"
#Define Render_OpenGL
#Include "2d.bi"

Do
  Screenlock
    Cls
    Draw String (10,10),"OMG, unglaublich fantastisch!"
  Screenunlock
  Screensync
Loop


zwinkern

Spiegel ist schwierig, entweder renderst du die ganze Szene im Spiegel noch mal(was allerdings ziemlich speicherlastig wird), oder du musst mit OpenGL tricksen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 03.01.2013, 22:52    Titel: Antworten mit Zitat

Wenn du solche Effekte willst solltest Du dich nach einer anderen Engine umsehen oder dir selbst was mit OpenGL zusammenbasteln.
Sowas ist nicht in ein-zwei sätzen erklärt und meine das OpenB3D auch nicht unbedingt dafür geeignet ist...

eine 'einfache' spiegelung ist nicht sonderlich schwer, schwer wird erst das korrekte berechnen, je nachdem wie es angewendet werden sollte...

eine art 'rückspiegel' ist in OpenGL innerhalb von 5 minuten gemacht...

Kompliziertere Spiegelungen wie zB auf einer Wasseroberfläche wird dagegen schon einiges komplizierter, vorallem wenn es in 'echtzeit' geschehen soll...
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
micha



Anmeldungsdatum: 09.12.2005
Beiträge: 72

BeitragVerfasst am: 06.01.2013, 21:25    Titel: Antworten mit Zitat

Eternal_pain hat Folgendes geschrieben:
Wenn du solche Effekte willst solltest Du dich nach einer anderen Engine umsehen
Wen du keine Ahnung von OpenB3D hast dann gebe doch bitte auch keine schlechten Ratschläge.

OpenB3D hat alles an Board um alle möglichen arten von Reflektionen nach zu bilden.
Cubemapping, Spheremapping, Mirrortexture, Cammera to Texture last but not least Shaders ...

Einzigste Manko sind nur die fehlenden Beispiele für Einsteiger aber bei jeder 3D Engine gehört eine gewisse Einarbeitung nun halt einfach dazu.

Das Blitz3D Forum kann auch prima als Quelle für die ersten Schritte herhalten.

Einfach mal nach 'Blitz3d mirror reflection' googeln.

micha
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Domso



Anmeldungsdatum: 02.02.2011
Beiträge: 109

BeitragVerfasst am: 06.01.2013, 22:34    Titel: Antworten mit Zitat

Spiegelung würde ich mit cubemapping machen
http://www.blitzforum.de/help/SetCubeFace
Ist zwar für blitz3d aber so funktionierts auch in openb3d
Es gibt aber nen Unterschied zu blitz3d... ich hab auf dem pc irgendwo ein Code bsp
Was ich morgn mal postn kann

Die Theorie bei cubemapping ist so
Man positioniert eine Kamera an der reflexionsstelle
Nun rendert man 6 einzelbilder(Oben,unten,rechts,links,vorne,hinten)
Dadurch hast du einen umgebungswürfel
Die einzelnen Bilder werden in einer textur gespeichert und die graka
berechnet dann den Blickwinkel wenn man die textur auf ein Objekt legt
Soweit die Theorie... da gibt es aber viele guten Anleitungen für blitz3d
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
micha



Anmeldungsdatum: 09.12.2005
Beiträge: 72

BeitragVerfasst am: 08.01.2013, 02:08    Titel: Antworten mit Zitat

Die Ergebnisse von Cube - Mapping sind wirklich perfekt z.B. als Umgebungs- Spiegelungen auf stark reflektierende (polierte) Lacke.

Der Realismus wird dadurch erkauft das man ja für die Cube - Texturen 6 mal plus der finalen Szene insgesamt 7 mal "Rendern" muss.

Es gibt daher mehrere Ansätze (habe schon alles mal getestet) um auch bei komplexen Szenen dennoch respektable Frameraten zu erzielen.

Oft aktualisiert man die 6 Texturen nicht jeden Frame neu.
(Bei z.B. 60 FPS. nur jeden dritten Frame also 20 mal pro Sekunde)

Oder man reduziert die Anzahl der sich spiegelnden Objekte.
(Weiter entfernte Objekte werden da gerne mal vernachlässigt).

Oder man hat für die Spiegelung extra einen Satz von Objekten die viel weniger Details haben.
(Das Prinzip der Detailreduktion (LOD's level of detail) wird auch gerne für Objekte benutzt die Schatten erzeugen sollen.)

Es liegt in der Natur der Sache das die Objekte auf der spiegelnden Textur letztendlich nur recht kleine Abbildungen des original Modelles sind.
Ein z.B. großer Zeppelin in der Szene der den halben Screen füllt ist als Spiegelung auf einer Motorhaube oder sonst wo drauf nur vergleichsweise winzig.
Nur als Beispiel hätte der Szene füllende Zeppelin 3,000-5,000 Dreiecke dann würde für die Spiegelung ein Model mit nur 30-50 Dreiecken oft schon reichen.

Oder z.B. eine Baumgruppe im Rückspiegel (welchen man aber nicht mit Cube- Mapping realisiert) da rendert man einfach nur jeden 2. oder 3. Baum. (Bei einen kurzem Blick in dem Rückspiegel merkt man das gar nicht.)

Wenn sich spiegelnde Objekte oder das Objekt auf dem man die spiegelnden Abbildungen sieht sich in der Szene nicht oder nicht besonders schnell bewegen dann erneuert man in jedem Frame immer nur eine der 6 Würfelflächen.

Wenn daher die Finale Szene mit z.B. 60 FPS. animiert und gerendert wird dann wird die gespiegelte Abbildung der gleichen Szene auf den 6 Würfelflächen mit 10 FPS. aktualisiert.

Einfach mal verschiedene Ansätze testen die Ergebnisse "belohnen" einen und man lernt auf jeden Fall etwas.

micha
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
0oFreako0



Anmeldungsdatum: 17.12.2011
Beiträge: 114

BeitragVerfasst am: 10.01.2013, 16:44    Titel: Antworten mit Zitat

Hi kurze Frage an die openb3d Leute.

Wenn ich in eine Texture erstelle und dabei eine Art Mask-Color benutzen will die nicht mit gerendert werden soll zb &hFF00FF wie bewerkstellige ich das?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 10.01.2013, 21:07    Titel: Antworten mit Zitat

Texturierst du damit ein Sprite oder ein Modell? Bei Sprites ist das einfach, dort werden transparente Bereiche nicht angezeigt(benutze hierfür PNG Bilder). Die MaskColor ist schwarz. Schau dir mal die Moden von LoadTexture an: http://www.blitzforum.de/help/LoadTexture

zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
0oFreako0



Anmeldungsdatum: 17.12.2011
Beiträge: 114

BeitragVerfasst am: 11.01.2013, 19:37    Titel: Antworten mit Zitat

Ich danke euch allen für die vielen Tips lächeln

@micha
Das mit der static lib klappt irgendwie nicht so richtig bei mir. KP was ich da falsch mache traurig

Und noch ne Frage an euch. Ich wollte die meshs die ich einlade über ein Arraypointer einladen geht das auch?

Das ich zb. ein 3ds Obj. vorher mit bin2bas in ein Data Array Konverte und diese dann Include und das object somit aus dem Speicher herraus reinlade.

Ist sowas möglich oder müsste ich mir dafür eine eigene Function basteln?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
0oFreako0



Anmeldungsdatum: 17.12.2011
Beiträge: 114

BeitragVerfasst am: 13.01.2013, 22:04    Titel: Antworten mit Zitat

Ich denke ich werde wohl nicht drum herum kommen und einen obj loader schreiben müssen traurig
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