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

11.03.2011, 01:10

Interpolationen im Dreieck

Nabend,
Ich schonwieder^^.

Alsooo:
Habe es geschafft den SoftwareRasterizer von Nicola Capens zu verstehen(hoff ich doch^^) und einzubauen. Wirklich schön schnell beim filling. Jetzt sitz ich aber erneut vor der frage wie ich den nun werte (Farben/ZWerte der vertices) an beliebigen punkten interpoliere.
Zuvor hatte ich für jeden Pixel die Baryzentrischen koordinaten berechnet und damit gearbeitet. Geht ohne probleme, aber leider auch (bei mir) nur Pixel für PIxel.
Der Rasterizer von Nicola arbeitet mit einem Chunk verfahren. Ich habe also immer 8x8px blöcke. Vorausgesetzt ein 8x8 block ist komplett im dreieck, kann ich einfach die baryzentrischen koordinaten der eckpunkte des Blocks bestimmen und möglichst schonend dazwischen linear(Bilinear?) interpolieren?(mit schonend, mein ich, eine formel die nicht zu sehr ins gewicht schlägt, will ja den neuen performancegwinn nicht gleich wieder begraben). Die Formel für die Bilineare interpolationa auf Wikipedia, hatte mich etwas erschlagen. Müsste ich das für jeden pixel machen, könnts düster werden.
http://en.wikipedia.org/wiki/Bilinear_interpolation

MFG
Memnarch
Meine Website mit Updates/News zu Aktuellen Projekten:SpareTime-Development

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

11.03.2011, 10:47

Da du Nicola Capens Ansatz nutzt: Weiter hinten in der Diskussion steht ein Vorschlag: http://www.devmaster.net/forums/showpost…46&postcount=55
@D13_Dreinig

3

11.03.2011, 11:03

WOW, genau nach solch einer lösung hab ich gesucht. EInfach durchsteppen zu können. Das wird die rechenzeit arg verkürzen.

Nick ist einfach klasse^^.

@David: Danke für den Link, das hätte ich so wohl nie in der diskussion gefunden^^.

Kurze Frage: WAs bedeutet die Schreibweise A/B? A und B sind doch Vectoren also V1/V2...dazu finde ich nichts. Kann mir jemand sagen wofür das in der Vektorrechnung steht?

EDIT: whoops, mit ABc waren die werte der Normal gemeint, und kein vektor ^^


MFG
Memnarch
Meine Website mit Updates/News zu Aktuellen Projekten:SpareTime-Development

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Memnarch« (11.03.2011, 11:40)


David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

11.03.2011, 11:41

Du meinst wie hier: z = -A / C * x - B / C * y - D? Das wäre dann einfach ein Divisionszeichen.
@D13_Dreinig

5

11.03.2011, 13:08

Mh, also irgendwie klappt das bei mir vorne und hinten nicht.
1) Ich arbeite mit den Bildschirmkoordinaten(also Welt position etc ist bereits zur View transformiert), das verfälscht alle normals(vllt sollte ich die dem rasterizer übergeben, so kann ich sie vorher untransformiert kalkulieren)
2) Ich gehe nicht X> Yv sondern Yv X> beim zeichnen. Damit kann ich leichter durch den Buffer iterrieren. Habs zum testen mal auf X>Yv abgeändert >.<.(Sonst gehts nicht)
3)Der gradient verläuft immer aus der selben ecke. Ich dachte das ich bei:

Zitat

z = z0 + dz/dx * (x - x0) + dz/dy * (y - y0)

Einfach nur Z0/X0/Y0 für die jeweiligen ecken ersetzen müsste. Klappt nicht. Wie und was muss ich umstellen?

MFG
Memnarch
Meine Website mit Updates/News zu Aktuellen Projekten:SpareTime-Development

6

16.03.2011, 14:47

Keiner ne Idee? ich komem nicht weiter >.<. Die normale von der 3dPlane berechnen, oder von der in den 2D raum projezierten?

MFG
Memnarch
Meine Website mit Updates/News zu Aktuellen Projekten:SpareTime-Development

Werbeanzeige

Ähnliche Themen