spiegelungen

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

sldier

Betreff: spiegelungen

BeitragMi, Nov 24, 2004 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
hi

wie mache ich spiegelungen nur auf bestimmten fläschen oder an bestimmten entity´s?

ich kenne mirror aber das ist nicht das was ich suche..

also am besten ich mache nen cube und der ist wie ein spiegel ...

Markus2

BeitragMi, Nov 24, 2004 20:25
Antworten mit Zitat
Benutzer-Profile anzeigen
In DX7 gibbet glaube ich noch keine Reflections Shader .

Was du machen kannst ist ne Camera und machst das Bild
dann in einer Texture , ist aber langsam und würde evtl. gehen
wenn man alle XX Frames ein neues Bild macht .

Diese Mirros kann man auch irgendwie drehen und als Spiegel benutzen .

Ich warte lieber auf BMax Smile
 

sldier

BeitragMi, Nov 24, 2004 20:28
Antworten mit Zitat
Benutzer-Profile anzeigen
ja mit mirror gehts schon aber nur wenn der spiegel unendlich groß sein soll Wink

ne muss wenn leider schnell gehn also keine cam...

wann kommt den bmax?

#######
stop!!!

doch ich hab doch verwendung gefunden ... das war ne super idee mit der cam nur für was anderes... wie könnte ich das bild der cam den als ne textur machen?
 

Dreamora

BeitragMi, Nov 24, 2004 20:36
Antworten mit Zitat
Benutzer-Profile anzeigen
[edit]
code wegen fehler und unkorrektheit gelöscht.
Sorry dachte das ginge, da das drawen mit Bildern auf den Texturbuffer auch fehlerfrei funktioniert hat und es da eigentlich keinen unterschied gibt oder geben sollte
[/edit]


Was Reflection Shader betrifft:
Da wird BlitzMax selbst in naher Zukunft wenig bringen, da es ja keine 3D Engine zum Start hat. Mit DX7 ist es tatsächlich nicht möglich, da Shader ein DX8+ bestandteil sind. Bei OpenGL auf der anderen Seite ist es so, dass viele Grafikkarten auf Windowssystemen keine wirklich kompatiblen Treiber haben so dass da viele trotzdem auf DX7 Technologie bleiben werden müssen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
  • Zuletzt bearbeitet von Dreamora am Mi, Nov 24, 2004 23:48, insgesamt einmal bearbeitet
 

sldier

BeitragMi, Nov 24, 2004 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
aso schade


aber danke an euch
 

sldier

BeitragMi, Nov 24, 2004 20:47
Antworten mit Zitat
Benutzer-Profile anzeigen
oh hab mich zufrüh gefreut... das klappt doch nicht
 

OJay

BeitragMi, Nov 24, 2004 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
du kannst nicht direct in einen texturebuffer rendern...hör nicht auf dreamora...der erzählt viel, wenn der tag lang ist wie man sieht Wink

du musst den cameraviewport vor dem rendern auf die texturgrösse setzen, dann rendern, und dann mit copyrect das gerenderte image vom backbuffer in den texturebuffer kopieren. das ist vergleichsweise langsam, aber trotzdem noch schnell genug für z.b. cubemapping-wasser.
 

sldier

BeitragMi, Nov 24, 2004 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
ok und wie mache ich das also könntest du ein beispielscript schreiben?

weil ich versteh nich so viel davon weil hab vor 1oder 2 wochen erst mit 3d angefangen


aber jetzt schon danke für die infos..
 

sldier

BeitragMi, Nov 24, 2004 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
bisher hab ich:


Code: [AUSKLAPPEN]

Global tex=CreateTexture(800,600)
;#################################################schleife
While Not KeyHit(1)

SetBuffer TextureBuffer( tex )
RenderWorld
SetBuffer BackBuffer()
EntityTexture a,tex


a ist ein cube

Markus2

BeitragMi, Nov 24, 2004 23:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Guck mal CameraViewport camera,x,y,width,height an .

z.B. CameraViewport camera,0,0,64,64

Und Texturen besser rechteckig weil das kann nicht jede
Grafikkarte darstellen .
Also 32x32 64x64 128x128 256x256 ...

Beim Rendern dran denken das alle Cams gerendert werden
können z.B. für nen Split Screen .
Darum besser zwischen 1er Cam umschalten oder
nur eine an lassen vorm Rendern .

CameraProjMode camera,mode
Parameters
mode - projection mode:
0: no projection - disables camera (faster than HideEntity)

so ungefähr Wink

Global tex=CreateTexture(64,64)
;Cam2 Viewport ...

;Cam2 an Cam1 aus
RenderWorld
SetBuffer TextureBuffer( tex )
CopyRect ...
SetBuffer BackBuffer()
;Cam1 an Cam2 aus
RenderWorld
flip
 

sldier

BeitragDo, Nov 25, 2004 23:10
Antworten mit Zitat
Benutzer-Profile anzeigen
hab nur eine cam und habe alles gemacht wie es da oben stand klappt aber immernochnicht die textur bleibt schwarz...

wenn ich nur text drauf schreib geht es ... und copyrect habe ich laut OH auch richtig angewand...

Shodan

BeitragFr, Nov 26, 2004 1:32
Antworten mit Zitat
Benutzer-Profile anzeigen
also folgende Vorgehensweise:

Vorbereitung
-eine grosse Kugel als hintergrund erstellen, Flipmesh anwenden und ne markante Textur dafür auswählen.
-ein Licht, eine Hauptcamera und eine Spiegelcamera erstellen
-Hauptcamera wie gewohnt benutzen
-Spiegelcamera in die mitte des Objekts setzen, das die spiegelnde Fläche
haben soll (zB. eine Kugel)
-Viewport dieser Camera auf die Grösse der Textur setzen
-eine leere Textur in derselben Grösse erstellen, das Flag für Reflection
setzen und diese Textur an die Kugel vergeben.

Hauptschleife
-bei jedem Durchlauf die spiegelcamera auf die Hauptcamera ausrichten
-die Hauptcamera mit HideEntity verstecken und die Spiegelcamera mit
ShowEntity aktivieren
-Ist bei dem spiegelnden Objekt ( also der Kugel ) das Flag für zweiseitige
Darstellung ( EntityFx 16 ) aktiviert, muss auch dieses versteckt werden
-Bild rendern (KEIN FLIP VERWENDEN!! ) und mit CopyRect in den Buffer der Textur kopieren
-Cameras mit Hide- bzw. ShowEntity wechseln, event die Kugel auch
wieder sichtbar machen und eigentliches Bild rendern. Jetz Flip anwenden.

voila ein sich spiegelnder Hintergrund. Sieht allerdings nicht naturgetreu aus und gespiegelt ist das Bild auch nicht.

Die Weiterführung dieser Vorgehensweise wäre dann mit einer Cubemap auf der Kugel. Diese besteht dann aus 6 Bildern. In der Hilfe und in den Codearchiven ist definitiv ne Beschreibung drin.
www.selfmadegames.de

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group