spiegelungen
Übersicht

sldierBetreff: spiegelungen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
sldier |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja mit mirror gehts schon aber nur wenn der spiegel unendlich groß sein soll ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
[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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
aso schade
aber danke an euch |
||
sldier |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
oh hab mich zufrüh gefreut... das klappt doch nicht | ||
OJay |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group