Archief - Hidden-line algoritme

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

NfERnO

Legacy Member
Heys, ik moet als portfolio-opdracht nen 3d-engine maken. (in prog.-taal Oberon, 's den opvolger van Modula-2 welk den opvolger is van Pascal, wa hoogstwss veel bekender in de oren klinkt...).
Het werken eraan vlot wel behalve op één puntje; ik moet ook hidden-line implementeren. (tekent een wireframe, maar zorgt ervoor da je de achterkant van je model niet meer kan zien...)
M'nne cursus is daar vrij vaag over en dus vroeg ik me af of iemand van jullie toevallig iets meer over 't hidden-line algoritme weet, of ne goeie site erover kent? Mijn implementatie van hidden-line werkt al half, maar verwijdert in veel gevallen nog teveel lijntjes...
Heb ook al ff op google zitten zoeken en ze geven overal nooit echt veel uitleg, dus jah...

Hale

Legacy Member
aangezien je een 3D engine schrijft heb je prolly wel iets geïmplementeerd als een z-buffer of een BSP-tree.
die data structuren zouden je moeten toelaten om eenvoudig je beelden te renderen waarbij je alleen ziet wat zichtbaar is voor het oog ( dus de achterkant enzo niet ).


bij een BSP-tree gaat men vaak tewerk via het painters principe :
je rendert eerst wat helemaal achteraan staat en rendert daarover wat ervoor staat ( een beetje zoals een schilder die eerst de achtergrond helemaal tekent, en daarover de voorgrond ).

google anders eens op painters algoritme + BSP ( binary space partitioning ) tree

NfERnO

Legacy Member
Thx, ma het moet echt volgens het hidden-line algoritme gebeuren; z-buffer moest ook ma die heb ik al.
Hidden-line werkt enkel voor wireframes omda die voor elke lijn naar alle polygonen kijkt van ligt deze polygoon voor m'n lijn of niet, of gedeeltelijk, en tekent dan wa er nog van die lijn overschiet. T'is een belachelijk traag algoritme ma 't moeter in, hoe spijtig'k da ok vin...

Vich

Legacy Member
[offtopic]
In Oberon :o !? What the fuck man! Wat een rot-opdracht! Welke ****** verzint zoiets? Volg jij Toegepaste Informatic toevallig in Antwerpen en krijg je dat van een zekere vrouw die C. noemt? Zo ja: innige deelneming :/
[/offtopic]

NfERnO

Legacy Member
Hehe, gelukkig zen we juist begonne me over te stappen na C++ :). Nee 'k zit op UA, 1eBac informatica en krijg graphics van ne zekere prof A., die overigens vree goe meevalt .

wlibaers

Legacy Member
Vals spelen, Z-buffer gebruiken: teken eerst de volledige scene in de z-buffer met polygonen, pas dan de waarden in de Z-buffer een beetje aan zodat ze iets verder weg zitten, en teken dan de lijnen met Z-buffering.

Zijn het losse polygonen? Of maken ze deel uit van convext objecten?

Deel van objecten: elke lijn die de grens vormt tussen twee weg van de camera gerichte polygonen moet niet getekend worden.

Je elimineert lijnen die achter polygonen liggen. Een goede test, maar doe dit niet met de polygonen die de lijn begrenzen, want door kleine afrondingsfouten is er een kans dat die lijn zogezegd achter de polygoon ligt.

Moeten lijnen soms gedeeltelijk getekend worden? Dan is de polygoontest in ieder geval nodig.

Verder: Computer Graphics, Principles and Practice, Foley, van Dam, Feiner, Hughes, deel 15.3. Zit zeker in de bibliotheek waar je studeert, en heeft zeker wat handige referenties.

wlibaers

Legacy Member
Hoofdstuk 5 van Interactive Computer Graphics, Peter Burger, Duncan Gillies kan hier ook van pas komen (al is dit boek mogelijk iets moeilijker te vinden).

NfERnO

Legacy Member
Valsspelen doe'k niet; het moet met hidden-line algoritme en nix anders, basta. :)
De polygonen maken deel uit van 'n convex object.
En ja, de lijnen moeten soms gedeeltelijk getekend worden; 'k zal zeker eens zien achter die boeken i.d. bib; thx!

Boris Barowski

Legacy Member
informeer bij Tweedejaars, die ook slachtoffer van die prof waren ?
B.

NfERnO

Legacy Member
Ik hem 'n groot vermoeden da die da nooit hemme afgekrege :); in ons jaar kennek er nog ma eentje die't werkende heeft gekrege en die heeft hulp gekrege van iemand op gamedev.net dus...
Ma daarentege, weet ok iemand uit't tweede die heeft 'n 19/20 of iets terveu gehad en dien z'nne raycaster en hidden line werkten ma halfzegat zei die... (of'k da moe gelove is mss iets anders lolz...)
Mnujah 'k geraak ter wel uit :)

killgore

Legacy Member
gamedev.net tutorials op hidden surface removal of culling eens bekijken, daar staan enkele nuttige dingen tussen (hoewel ze wel vaak redelijk wat voorkennis eisen).

Deze zijn wel (zo goed als) allemaal voor c/c++ en ik weet niet in hoeverre dit je helpen kan. Ook zal je zelf een beetje de overgang van polygons naar lines moeten maken ;).

NfERnO

Legacy Member
Hmmz 'k heb daar al eens gekeken, maar niets over hidden-line removal gevonden... :s Zal nog's kijken... Ma Backface culling had'k al lang hoor... (da's ma een tweetal regels code in z'n simpelste vorm ... :) )

CyBeRRaT

Legacy Member
hehe, ik heb er ook aan gedacht om daar een thread over te maken hier.

ik ben ook het slachtoffer van deze opdracht, al sta ik nog iets minder ver. vooral de snelheid van het hele ding is schitterend zenne:)

killgore

Legacy Member
NfERnO zei:
Hmmz 'k heb daar al eens gekeken, maar niets over hidden-line removal gevonden... :s Zal nog's kijken... Ma Backface culling had'k al lang hoor... (da's ma een tweetal regels code in z'n simpelste vorm ... :) )
Als je verscheidene culling methoden toepast die echter met polygonen werken kan je al voor heel wat vertices van je model bepalen of ze moeten getekend worden of niet, wat toch al heel wat helpt (dan moet je enkel de lijnen teken waarvan zowel eind- en beginpunt zichtbaar zijn).
Dit is het enige waar ik mom. kan opkomen. Prolly niet echt een goede methode, want ik ben niet zo vaak bezig met grafisch programmeren en ze ziet er mij ook nogal rekenintensief uit EN je kan geen LINE_STRIP gebruiken :p. Ook weet ik niet met welke data je moet werken en kan ik geen snars van oberon :).

CyBeRRaT

Legacy Member
killgore zei:
ze ziet er mij ook nogal rekenintensief uit EN je kan geen LINE_STRIP gebruiken :p. Ook weet ik niet met welke data je moet werken en kan ik geen snars van oberon :).

het is zeker heeeel rekenintensief! en die LINE_STRIP is eigenlijk een beetje wat wij moeten maken vermoed ik.
de data is eigenlijk ook zo simpel als wat.

een lijst met indexen van de polygonen bepalen een wereld
een lijst met polygonen die elk een kleur en een aantal hoekpunten bevat
en een lijst met hoekpunten. dit lijkt mij trouwens helemaal niet zo abnormaal te zijn hoor.

NfERnO

Legacy Member
Het enige hulpmiddel da we in Oberon hemme gekregen is feiluk enkel iets da lijntjes op je scherm kan tekenen; zegt genoeg lijkt me... :)

Hale

Legacy Member
ey ey , niks tegen pure software rendering he :D

ik ben zelf bezig om een complete renderer ( raytracer ) te schrijven vanaf 0 ( dus zonder ogl of directx of whatever ).

zal de resultaten een van de weken wel is posten. Eerst nog men specular refraction implementeren.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan