[CG]Z-Buffer

Forum van 1ste Bachelor Informatica.

Moderator: Praesidium

User avatar
Fristi
WOZ
Posts: 4565

[CG]Z-Buffer

Post#1 » Sat May 17, 2008 10:37 pm

Hiya

Ik was men z-buffer aant implementeren en ben dus op een probleem gestoten.

Ik kan laten tekenen en opkleuren tot dit:

Image

Quite obvious dat dit niet klopt, probleem is dattek ni echt weet waark men fout moet zoeken, hence ga ik ffkes men redenering kort opschrijven en dan hopelijk ziet iemand daar dan de kemels in..:P

Wat ik nu dus doe is:
Ik overloop men polygonen (getrianguleerde)
Projecteer deze.

Dan werk ik d.m.v. een scanline
neem een y waarde ,zien waar deze snijd met men object, laat dan tussen de 2 snijpunten alle x- waardes aflopen, zo overloop ik dus alle pixels.

dan elke pixel die ik tegenkom bepaal ik de diepte van (al naargelang perspectief of parallel projectie)
en update dan men Z-buffer.

Deze laatste ziet er als volgt uit :

Code: Select all


ZBuffer = POINTER TO Pixels;
Pixels = ARRAY OF ARRAY OF PixelDesc;
PixelDesc =
RECORD
depth : REAL;
color : Gfx.Color;
END;
Als ik klaar ben hiermee ga ik tekenen.

Dit doe ik dan door heel men z-buffer te overlopen en alsk een pixel tegenkom met depth kleiner dan MAX(REAL) (standaardwaarde) teken ik, zoek dan de volgende pixel waarvoor dit geld en dan teken ik een lijn tussen deze 2..

Geen idee ofda da ook maar iets of wa goed is maar voor zover ik den arickx zijne cursus kan interpreteren..

Greets
Fristi

User avatar
Shinta
WOZ
Posts: 1122

Post#2 » Sat May 17, 2008 10:46 pm

Wat voor object stelt het rode ding voor ? Of kan je misschien eens een screenshot posten die enkel het rode laat zien. Alles van het rode dan weliswaar.
Remember remember the fifth of November
Gunpowder, treason and plot.
I see no reason why gunpowder, treason
Should ever be forgot...

User avatar
Fristi
WOZ
Posts: 4565

Post#3 » Sat May 17, 2008 11:06 pm

ewel , het zwarte is van men z-buffer, het rode is gewoon letterlij kdezelfde moff getekend met men triangulatie methode (dak dus kan zien wat er opgevuld moet zijn).

Dit is het hele object, kheb namelijk speciaal een moffke gemaakt met maar 1 vlak

Image
en
Image

Is een (veel meer) gedetailleerde moff

Voor zover dattek kan zien wordt mij z-buffer gwn te weinig geupdate

User avatar
Shinta
WOZ
Posts: 1122

Post#4 » Sat May 17, 2008 11:20 pm

Da zijn maar vreemde invullingen zenne :P. En als je alles eens uitvoert zonder die controle of de diepte in orde is? Op die manier zou je alles nog correct ingevuld moeten zijn maar dan niet met de correcte vlakkn. Maar als alles zwart is maakt dit geen verschil. Op die manier zou je veel beter kunnen testen of het algoritme goed werkt.
Remember remember the fifth of November
Gunpowder, treason and plot.
I see no reason why gunpowder, treason
Should ever be forgot...

User avatar
Fristi
WOZ
Posts: 4565

Post#5 » Sat May 17, 2008 11:39 pm

Hm, hebt ge idd gelijk in maar tmaakt niks uit..
Dus kzit wss gewoon ergens me een paar knallers van fouten :P

Update:
Het is al iets beter.
Ik had bij de bepaling van de 2 snijpunten geen rekening gehouden met het feit da de zijde waar men het snijpunt moet zoeken wel is kan veranderen..
Intusse doek da wel en em teken al een pak meer (nog wel ni alles, gaat ook nog regelmatid "buiten de lijntjes")..dus wss zit hierbove nog wel een foutje..

User avatar
Sebastiaan
Posts: 1184

Post#6 » Sun May 18, 2008 11:39 am

Maar ik weet ni hoe da gij da doet. Maar ik teken mijn figuur per polygoon naar mijn buffer en dus dan krijgde toch zoiezo driehoeken ?

User avatar
Fristi
WOZ
Posts: 4565

Post#7 » Sun May 18, 2008 1:03 pm

Ja, da hebbek ook ziitten denken dattek da gewoon per polygoon zou kunne doen, maar ik wou da zo ni doen omdat da minder efficient is, gezien ge dan dingen gaat tekenen die ge ni moet tekenen.

..nja, ik denk dak het wel zo ga doen want hoe het er nu uitzie ist helemaal kak :P

User avatar
PieterK
Posts: 118

Re: [CG]Z-Buffer

Post#8 » Sun May 18, 2008 2:24 pm

Fristi wrote:Dit doe ik dan door heel men z-buffer te overlopen en alsk een pixel tegenkom met depth kleiner dan MAX(REAL) (standaardwaarde) teken ik, zoek dan de volgende pixel waarvoor dit geld en dan teken ik een lijn tussen deze 2..
Waarom trekt gij een lijn tussen 2 verschillende punten? Ge kunt het uzelf veel makkelijker maken en gewoon een lijn trekken van da punt naar zichzelf zodat ie enkel een pixel tekent en geen lijn.
Ik weet nie of dat het probleem is (wrs ni) maar het is veel makkelijker zo.
En ge moet de kleur per pixel ook ni apart bijhouden. Uwen "kleurenbuffer" is hetgeen waar ge op tekent(= GfxPlane) en het bijhouden van de kleur gebeurt dus al voor u.
Ik zie voor de rest anders ook nie meteen wat er mis is met uw algoritme.

User avatar
Fristi
WOZ
Posts: 4565

Post#9 » Sun May 18, 2008 4:13 pm

hm, uhu, da zijn dinge dak seffes is zal gaan aanpassen se..maar idd denk idd ni da da het probleem is..
nuja, kga alle aanpassinge maken hier voorgesteld en dan gwn schonekes al men berekeninge terug overlopen en nakijken, hopelijk komk zo de fout tegen..nuja..eerst animatie -_-"

User avatar
zarry
Posts: 212

Post#10 » Mon May 19, 2008 8:57 pm

en? :)
Ik spreek Zwarryzwaniaans en jij?

Return to “1ste Bachelor”

Who is online

Users browsing this forum: No registered users and 69 guests