Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

08.09.2010, 10:03

fisheye effect

Hallo leude...

Ich würde gerne einen Fisheye effekt (etwa so wie die taskleiste bei mac).
Die suchfunktion hat mir einen alten beitrag gerbracht aus dem ich das hier als fisheye matrix habe:

0.750 0.000 0.000 0.000
0.000 1.000 0.000 0.000
0.000 0.000 1.000 1.000
0.000 0.000 -0.100 0.000

Is die jetzt richtig für das was ich machen will?
Also ich hab ein 640x480 bild und will in der mitte diesen fisheye effekt machen...

wie würd ich das dann realisieren? jedes pixel mit dieser matrix multiplizieren oder nur die in der mitte?

lg

3

12.09.2010, 20:21

So, erstens danke. Die links hab ich selber natürlich auch gehabt, nur dacht ich mir mit ein zwei sätzen is das erklärt und jemand sagts mir... ja da war ich faul

Hab aus dem 2ten link folgendes:
R = 2*f*sin (theta/2)


Jetzt is natürlich die frage, wie ich den spass implementiere?
ich nehme an dass θ mein winkel is und ich somit die stärke der verzerrung angeben kann?
aber was is f? mein wert an der stelle die ich berechnen will vor der verzerrung? und vor allem:
rechne ich mir das alles pixelweise aus oder das ganze bild?

lg

ich1994

Treue Seele

Beiträge: 164

Wohnort: Erlangen(nähe Nuernberg)

Beruf: Bald Abiturient(kein job eig...)

  • Private Nachricht senden

4

13.09.2010, 10:41

Zitat

The focal length f of common fisheye lenses corresponds quite simple to θ and the radial position R of a point on the image on the film or sensor
Steht über der Formel :rolleyes:

5

13.09.2010, 11:56

ich checks nicht... was is f in meinem fall?

also die "alte pixel position" is es wohl nicht... aber ich weiss zwar was focal length bei einer kamera ist aber wie ich das in meinem code umsetze...

lg

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

13.09.2010, 12:42

Ich denke der Effekt wie du ihn anstrebst lässt sich nicht einfach mit einer Matrix umsetzen. Du willst ja vermutlich dass das Bild so "verbogen" erscheit. Das ist aber eine nichtlineare Verzerrung und eine Matrix kann nur lineare Transformationen darstellen. Eine Lösung wäre es z.B. über einen VertexShader eine nichtlineare Projektion zu implementieren. Dabei ist aber zu bedenken dass die Kanten der Polygone dann trotzdem nicht gebogen werden. Wenn du also wirklich so etwas willst wie das hier so müsste man vermutlich die Szene rendern und dann das gerenderte Bild verzerren. In gewissem Rahmen dürfte das gute Ergebnisse liefern. Wofür brauchst du das?

7

13.09.2010, 13:10

nun ja, es is so das ich mit einem framework arbeite und nicht wirklich in den renderprozess eingreifen kann.
Ich dachte ich mach das so:

ich fahr mit der maus übern screen und dort wo meine maus is hab ich eben so eine erhöhung, so art bildschirmlupe nur halt fisheye mäßig.
Jetzt dacht ich mir, dass ich mir einen gewissen bildausschnitt um die maus herum ausschneide und diese subimage dann eben verzerre und dort wieder drüberlege wo es vorher war... so schauts aus als würd ich das hintergrundbild verzerren, dürft aber deutlich schneller sein...

du kennst das framework eh, dot: ich arbeite mit dem StbES und will eben nicht wirklich in den renderprozess vom SG eingreifen...
jetzt dacht ich, ich kann eben einfach ne einfache verzerrung machen und das wars... schön einfach, sehr schnell zu berechnen,...

lg

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

13.09.2010, 13:16

Naja ich hab mit StbES noch nie was gemacht aber mit nem PixelShader kannst du sicherlich sehr einfach so eine Verzerrung machen...

9

13.09.2010, 13:17

naja... dann werd ich mir das mal alles anschaun,
wobei ich noch keinen tau hab...
wenn ichs hab, sag ichs euch...

danke für eure hilfe
lg

10

13.09.2010, 13:23

eines noch: smartphones haben ja meistens keine gpu, die shader rechnerreien machen kann. wird das nicht zu langsam wenn ich alles in software rendering mach?

wobei ich nach wie vor ein problem hab... die formel aus dem obigen link is mir noch immer nicht wirklich klar...

Werbeanzeige