Geometrialtaan mielivaltaisen huonetilan pintojen näkyvyyskertoimien laskenta Ville Havu, Lassi Roininen, Eero Immonen, Janne Puustelli, Keijo Ruohonen Teollisuusmatematiikan työpaja, Tampere 21.-25.10.2002 1 Taustaa Näkyvyyskertoimien laskentaa tarvitaan monissa sovelluksissa. Tällaisia ovat esimerkiksi säteilylämmönsiirto sekä tietokonegrafiikassa tarvittavien valaistusominaisuksien määrittäminen. Tässä työssä näkyvyyskertoimia pyritään soveltamaan talotekniseen mallinnukseen, jossa määritetään huonetilan eri pintojen vaikutus henkilön viihtyvyyteen. 2 Näkyvyyskertoimien määrittäminen Pisteessä sijaitsevan havainnoijan näkyvyyskertoimeksi pinnan suhteen määritellään (1) missä tarkoittaa sitä avaruuskulmaa, jossa pinta näkyy pisteestä. Mikäli siis pinnat ympäröivät havainnoijan, saadaan (2) Teknillinen korkeakoulu Tampereen teknillinen korkeakoulu 1
Toisaalta suoraan avaruuskulman määritelmän avulla, voidaan näkyvyyskertoimien (1) määrittäminen palauttaa pinnalla! tapahtuvaksi integroinniksi, jolloin #"%$'& missä on pinnan normaalivektori pisteessä/10 324657,$'& on pisteestä pinnan pisteeseen/10 324657 osoittava normaalivektori sekä() on pisteiden ja/10 välisen etäisyyden neliö. Integrointi tulee suorittaa yli pisteen näkemän pinnan osan ;:. Seuraavassa esitetään eri tapoja sekä näkyvien pinnan osien <:että pintaintegraalien (3) määrittämiseen. (*),+.- (3) 82965.7 2.1 Näkyvien pintojen määrittäminen laskennallisen geometrian keinoin Luonnollinen tapa näkyvyyskertoimien (3) laskemiseksi on käyttää laskennallisen geometrian keinoja integroimispinnan <:määrittämiseksi. Tällöin tarkastelupisteen suhde tasoon jakautuu kahteen päätyyppiin 1. Piste näkee tason kokonaan. Tällöin :. 2. Pisteen = ja tason välissä on varjostava taso= ;:. Tällöin on laskettava tason tasolle?> heittämä varjo, kun tilannetta tarkastellaan pisteestä. Tällöin { tason R varjo }. Varjostavia tasoja= voi olla useampia, joista jokainen on käsiteltävä erikseen. Kun taso ;:on näin saatu selville, voidaan integraali (3) suorittaa alueen ;:yli esimerkiksi jakamalla tämä kolmioihin sekä soveltamalla näihin jotakin tunnettua kvadratuuria. 2.2 Seinien toisiinsa kohdistama varjostus Seinätasojen aiheuttama varjostus voidaan taas selvittää seuraavalla algoritmilla (ns. "Clipping Plane" -algoritmi) : For i = 1 to (kaikkien särmien lkm) For j = 1 to (kaikkien seinien lkm) 2
P P yllä A käy end Tarkistetaan, <@<"/$'A CB A7että <@D"/$'A $FE7 särmä i on tason j edessä, eli katsotaan, että ja ovat samanmerkkisiä. LG H@JIK Lasketaan MB G ) särmän i ja seinän j leikkaussuora: @ B I# ) <@ LONMP)RQ%)TSNVU $'A CB A GA;W GA $'A;W SL PG, Leikkaussuoran S yhtälö M on siten missä. $@$)N (Huomaamme siis, että oikeastaan tarvitsee ratkaista GA;W vain olevasta yhtälöstä) Korvataan seinä uudella leikatulla PG. seinällä, joka on rajoitettu suoralla end B Tässä A on merkitty: $*A $.@$) katsojan paikka leikattavan seinän piste H@ ^XZY3[X]\^ XZYZ[X]\ leikattavan seinän määrittävät suuntavektorit B $*A;W @B @]$.@_W Q@`$) leikattavan seinän normaali ) ^by[fb\^ leikattavan sei nän parametrisoitu pinta )leikkaavan tason määrittävät suuntavektorit (esimb @ $*EaB B A<W @B @cw Q@B ) leikkaavan tason normaali $FE leikkaavan seinän parametrisoitu pinta leikkaavan särmän piste toiseksi) a n 1 n 2 x2 x 0 x 1 r 2 r 1 r 0 Kuva 1: Clipping-plane -algoritmilla ratkaistava näkyvä taso : 3
d f, f 2.3 Pystysuorien seinien tapaus Tässä kohdassa esitetty menetelmä soveltuu sellaisen huoneen näkyvyyskertoimien määrittämiseen, jossa seinät ovat pystysuoria ja lattia sekä katto ovat yhdensuuntaiset. Seinien ei kuitenkaan tarvitse olla tasomaisia, vaan niissä voi olla myös kaarevuutta. Huoneen geometrialle asetettavien oletusten perusteella näkyvyyskertoimia ajatellen on yhdentekevää, tarkastellaanko huonetilaa kolmessa dimensiossa vai ylhäältä 2-ulotteisena projektiona. Jälkimmäisessä tapauksessa (ylhäältä katsottaessa) seinät rajaavat tasosta alueen, jota rajaa paloittain sileä käyrä (vertaa kuva 2). y r C x Kuva 2: Seinien projektion rajaama alue ja sitä rajoittava reunakäyräd Ajatuksena on, että koska huoneen määrittävät pinnat tiedetään, myös niiden parametriesitys tunnetaan. Tästä on helppo päätellä tasoprojektiossa reunakäyrän parametriesitys. Seuraavassa $/P7 /10D/P7e82 tarkastellaan yleisyyttä rajoittamatta tilannetta, jossa tasokoordinaatiston origo sijaitsee katselupisteessä. Merkitään reunakäyränd parametriesitystä /P7Z7U. Sitä käyttämällä voidaan määrittää parametriesitys käyrälle joka rajaa origosta "line-of-sight" tyyliin nähtyä aluetta. Analyyttisesti f proseduuri on seuraava. $/P7 /f 0;/P7ef 2 d Merkitään origosta "line-of-sight" tyyliin nähdyn käyrän parametriesitystä /P7Z7U. Tarkastellaan g (<hjikml yhtälöparin 0D/P7 (<kznpoal 2 /P7 (4) 4
f ratkaisuja, kun parametrip (q?r l rts kulkee yli vaihteluvälinsä, eli kun kierretään reunakäyrä positiiviseen suuntaan ). Vertaa kuva 2. Ensimmäinen tapaus on, että parametriap vektoria/u0d/p7e32 (ja siten /P737U) vastaavalla kulmanl arvolla yhtälöparilla (4) on ratkaisuna ainoastaan/p(7 /P*v 0D/P7) W 2 /P7)7. Toinen tapaus on luonnollisesti se, että ratkaisuja on useita, ts. parametrinp arvoa vastaavaa kulmaal kohtaan yhtälöparilla (4) on useita ratkaisuja/p(7w%%/p]x(x7. Tämä tapaus on kuvassa 2 esitetty katkoviivan avulla; selvästi näkyvän reunakäyrän parametrisointi pitää valita origoa lähimmän reunakäyrän osan parametrisoinnista. Siten kullakinp g 0D/P7 f 2 y zy npo {'}'(%{_kznpoal~/p{(%{7 npo {F}'(%{chjikml~/P{(%{7 ratkaisee (5) ratkaisee (4):n Kun saadun käyrän epäjatkuvuuskohdat yhdistetään sopivilla (triviaaleilla) suoril- kuva 3). la, tuloksena on näkyvää aluetta rajoittava käyrä f d (vertaa y C x Kuva 3: Kuvan 2 tapauksessa origosta näkyvän alueen reunakäyrä f d Saatua käyrän f d parametriesitystä ja alkuperäisiä seinien parametriesityksiä yhdistelemällä voidaan helposti päätellä eri seinistä näkyvät alueet. Tästä päästään suoraan laskemaan seinien näkyvien osien näkyvyyskertoimia laskemalla integraalia #"ƒ$& () +.- (6) yli seinien. Koska kulmamuuttujal ja parametrip pitää diskretisoida ryhmän (4) numeerista ratkaisua varten, kyseinen integrointi voidaan approksimatiivisesti tehdä jo em. parametriesitystä laskettaessa. Tämä tapahtuu pitämällä kirjaa siitä, miltä reunakäyränd osalta ratkaisu kulloinkin löytyy. 5
aivan yhtä suoraviivaista. Näkyvää aluetta reunustava käyrä f d saattaa Huoneen lattian ja katon näkyvyyskertoimien laskenta ei tätä kautta sen sijaan ole rajata hyvinkin mielivaltaisen tason polygonin. Numeerinen integrointi tarjoaa ratkaisun, mutta on mahdollista edetä myös analyyttisesti käyttäen saatua informaatiota käy- Stokesin lausetta. Stokesin lauseesta on helppo todeta, #"$'& () että +ˆ z Š missä on kentänx ] vektoripotentiaali. /u0 82965.7 5Eräs käypä vektoripotentiaali on Näin ollen esimerkiksi lattian näkyvyyskertoimen laskenta palautuu kentän Tämä onnistuu jopa analyyttisesti, ainakin siinä tapauksessa, jossa huonetta rajoittavat seinät ovat tasomaisia, kuten seuraava esimerkki osoittaa. rästä f d ja vektoraalisen viivaintegraalin laskuun yli lattian reunan f d. Œ "+ˆŽ (7) /u0 ) W 2)7( 24 0 q U (8) Esimerkki 1 Koska monessa käytännön tapauksessa huonetta rajoittavat tasomaiset seinät, viivaintegraalia (7) lasketaan usein yli tason murtoviivan. Lasketaan mielivaltaisen lattian (pohjan) reunalla olevan janan vaikutus pohjan näkyvyyskertoimiin. Tätä varten edellä tarkasteltu koordinaatisto pitää upottaa 3- ulotteiseen avaruuteen. Oletetaan, että näkyvyyskulmia lasketaan korkeussuunnassa huoneen puolivälissä olevan pisteen suhteen. Jos seinien korkeus on, ja katsojan paikka on - kuten edellä - pisteessä/ qqq7, niin pohjalla5-koordinaatti $/P7 on vakio ). Pohjan reunalla $'A;W olevan janand parametriesitys on (@ P @() A W A W Tästä suoralla laskulla todetaan, että PG P š M œ+n P ) s U P š Mžœ+N (9) (10) ŒŸ "+ Ž s / @() /(@ A )(@ A7+P P @7) A W W /() P )7)3 m A W /(@ P @7) A W W /() P )7) A W W \ (11) joka integroituu suljetussa muodossa esimerkiksi valmisohjelmalla. Toisin sanoen lattian näkyvyyskertoimelle on tasomaisten seinien tapauksessa analyyttinen lauseke. Sama pätee tietysti myös kattoon, mikäli se on yhdensuuntainen lattian kanssa. 6
2.4 Säteenheittomenetelmät näkyvyyskertoimien laskemiseksi Erityisesti monimutkaisissa geometrioissa kaikkien varjostavien pintojen laskeminen voi muodostua raskaaksi tehtäväksi. Tällöin pisteeseen liittyvät näkyvyyskertoimet voidaan määrittää seuraavasti: 1. Arvotaan mielivaltainen suunta. 2. Etsitään pisteestä suuntaan lähtevän säteen leikkauspiste järjestelmään kuuluvien tasojen kanssa. 3. Valitaan leikkauspisteistä se, joka on lähinnä pistettä ja merkitään muistiin, mihin tasoista tämä kuuluu. 4. Toistetaan algoritmia rittävän monta kertaa. Näin saadaan kunkin tason näkyvyyskerroin osamääränä tähän tasoon osuneista säteistä ja kaikista lähetetyistä säteistä. Säteenheittomenetelmä muistuttaa läheisesti Monte Carlo -integrointia, joten käytettävien säteiden lukumäärän tulee olla riittävän suuri luotettavan vastauksen saamiseksi. 2.5 Pintojen kolmiointiin perustuva näkyvyyskertoimien määrittäminen Säteily- ja valaistuslaskennassa käytetään tavallisesti menetelmää, joka perustuu tarkasteltavien pintojen jakamiseen pienempiin osiin, esimerkiksi kolmioihin tai nelikulmioihin. Tällöin voidaan toimia seuraavasti: 1. Jaetaan kukin tarkasteltava pinta osaelementteihin. Olkoot nämä}* * mª Ṽ«@. 2. Lasketaan kunkin elementin approksimatiivinen kontribuutio näkyvyysker- ja tarkastelupisteen välillä näköyhteys. Mikäli näin on, lisätään näkyvyyskertoimeen elementin osalta #"$& $& välinen etäisyys sekä vastaava yksikkövektori. 7 toimeen pisteessä tarkastamalla, onko elementin keskipisteen missä( on pisteen ja elementin keskipisteen () ala/ 7e (12)
². jää voidaan Näin saadaan approksimatiivinen arvo näkyvyyskertoimelle. Arvon tarkkuutta voidaan parantaa valitsemalla tiheämpi elementtijako. Myös adaptiivinen toteutus on mahdollinen. 3 Algoritmien nopeuttaminen rajoittamalla tarkasteltavien pintojen määrää Edellä esitetyissä algoritmeissa oletetaan, että kaikissa tapauksissa tarkistetaan pintojen ja säteiden kaikki mahdolliset yhdistelmät. Laskentaa voidaankin tehostaa tekemällä alustavia testejä, joiden pohjalta jätetään osa tarkasteluista tekemättä. Esimerkiksi arvottaessa säteiden suuntia Monte Carlo -menetelmissä voidaan rajoittua tarkastelemaan tasoja, jotka sijaitsevat säteen suunnassa. Myös laskettaessa tasojen heittämiä varjoja on tarpeen ottaa huomioon vain tarkastelupisteen ja -tason väliin jäävät varjostavat tasot Yksi mahdollisuus on toimia seuraavasti: Määritetään kullekin tasopinnalle= kiekko, jonka sisään kyseinen pinta kokonaisuudessaan jää. Tarkasteltaessa tietyn tason näkyvyyttä pisteeseen muodostetaan ensin kartio *, jonka määräävät piste ja kiekko. Nyt jokainen taso=, johon liittyvä kiekko ei leikkaa kartiota ' voidaan jättää tarkastelematta laskettaessa tason varjostuksia. Samaten, jotta Monte Carlo -menetelmissä heitetty säde voisi osua tasoon, on sen kuljettava kartion ' sisällä. Toisaalta voidaan ajatella, että ± kylmät, pienet, kaukaiset ja vinosti katsottavat pinnat ovat lopputuloksen kannalta merkityksettömiä. Kullekin pinnalle ~² "$'& () voidaankin laskea tunnusluku sekä$'& missä jälleen( on pisteen ja pinnan (sopivasti määrätyn) keskipisteen etäisyys vastaava yksikkövektori. Lisäksi on huomioitava pinnan lämpötila Ne pinnat, joiden tunnusluku± alle jonkin asetetun toleranssin, voidaan jättää välittömästi pois jatkotarkasteluista. Toleranssi voidaan myös laskea suhteellisena eli pintojen tunnuslukuja± verrata toisiinsa ja näin saada selville tehtävän kannalta merkittävät pinnat. ala/³ 7~ (13) 8
4 Viitteitä kirjallisuuteen ja ohjelmistoihin Näkyvyyskertoimien laskentaan on kehitetty valmiita menetelmiä ja ohjelmistoja. Seuraavassa mainitaan lyhyesti muutamia vaihtoehtoja. 1. ELMER on CSC:n multifysiikan laskentaohjelmisto. ELMER pystyy ratkaisemaan myös säteilytehtäviä, joten näkyvyyskertoimien laskeminen on siällytetty ohjelmistoon. ELMERin toteutus perustuu pintojen kolmiointiin. http://www.csc.fi/elmer/ 2. FACET on Lawrence Livermore National Laboratoryn kehittämä näkyvyyskertoimien laskentaohjelma. FACET käyttää laskennallisen geometrian algoritmeja kertoimien määrittämiseen. FACETin lähdekoodi on saatavilla. http://www.osti.gov/estsc/pdfs/facet.pdf 3. RadCad on kaupallinen ohjelma, joka käyttää Monte Carlo tyyppistä säteenheittomenetelmää näkyvyyskertoimien määrittämiseen. http://www.thermaldesktop.com/radcad.html Viitteet [1] Durand, F., Drettakis, G., Puech, C.: Fast and Accurate Hierarchical Radiosity Using Global Visibility, imagis-gravir / IMAG - INRIA, http://wwwimagis.imag.fr/ [2] Glassner, A.S. (ed.): An Introduction to Ray Tracing, Academic Press, 1989, ISBN 0-12-286160-4 [3] O Rourke, J.: Computational Geometry in C, Cambridge University Press, 1998 [4] Preparata, F.P., Shamos, M.I.: Computational geometry: an introduction, Springer, 1985 9