Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
0oFreako0
Anmeldungsdatum: 17.12.2011 Beiträge: 114
|
Verfasst am: 03.01.2013, 17:20 Titel: Openb3d Fragen |
|
|
Hätte ein paar kurze Fragen:
Wie erzeuge ich einen Spiegel Effect? Createmirror gibt es ja nicht
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 |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 03.01.2013, 18:33 Titel: |
|
|
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 |
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 |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 03.01.2013, 22:52 Titel: |
|
|
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 |
|
 |
micha
Anmeldungsdatum: 09.12.2005 Beiträge: 72
|
Verfasst am: 06.01.2013, 21:25 Titel: |
|
|
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 |
|
 |
Domso
Anmeldungsdatum: 02.02.2011 Beiträge: 109
|
Verfasst am: 06.01.2013, 22:34 Titel: |
|
|
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 |
|
 |
micha
Anmeldungsdatum: 09.12.2005 Beiträge: 72
|
Verfasst am: 08.01.2013, 02:08 Titel: |
|
|
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 |
|
 |
0oFreako0
Anmeldungsdatum: 17.12.2011 Beiträge: 114
|
Verfasst am: 10.01.2013, 16:44 Titel: |
|
|
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 |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 10.01.2013, 21:07 Titel: |
|
|
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
 |
|
Nach oben |
|
 |
0oFreako0
Anmeldungsdatum: 17.12.2011 Beiträge: 114
|
Verfasst am: 11.01.2013, 19:37 Titel: |
|
|
Ich danke euch allen für die vielen Tips
@micha
Das mit der static lib klappt irgendwie nicht so richtig bei mir. KP was ich da falsch mache
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 |
|
 |
0oFreako0
Anmeldungsdatum: 17.12.2011 Beiträge: 114
|
Verfasst am: 13.01.2013, 22:04 Titel: |
|
|
Ich denke ich werde wohl nicht drum herum kommen und einen obj loader schreiben müssen  |
|
Nach oben |
|
 |
|