Top Banner
Алгоритми за отделяне и скриване на невидими линии и повърхнини Доц. М. Иванова Технически университет – София
25

Computer Grapnics Algorithms Clipping

Jan 25, 2015

Download

Technology

Malinka Ivanova

компютърна графика отстраняване невидими линии повърхнини
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Computer Grapnics Algorithms Clipping

Алгоритми за отделяне и скриване на невидими линии и повърхнини

Доц. М. ИвановаТехнически университет – София

Page 2: Computer Grapnics Algorithms Clipping

Алгоритми за отделяне и скриване на невидими линии и повърхнини

• Постановка на задачата– Дадени са геометричните модели на обекти в моделно

пространство– Използва се дясно ориентирана координатна система– В равнината XY се разполага проекционната равнина– Посоката на наблюдение съвпада с отрицателната

посока на оста OZ, гледната точка се намира в положителната безкрайна точка на оста OZ

– Тримерната сцена се намира между гледната точка и проекционната равнина

– Използва се паралелна проекция при създаване на изображението на сцената

Page 3: Computer Grapnics Algorithms Clipping

Постановка на задачата

X

Y

Z

O

Page 4: Computer Grapnics Algorithms Clipping

Алгоритми за отделяне и скриване на невидими линии и повърхнини• Алгоритмите се разделят по определени

признаци:– Според средата от данни, в която работят:• Алгоритми, работещи с елементите от сцената в

моделното пространство• Алгоритми, работещи в пространството на

наблюдателя• Алгоритми от смесен тип, при различните стъпки се

работи в различни пространства

Page 5: Computer Grapnics Algorithms Clipping

Алгоритми за отделяне и скриване на невидими линии и повърхнини– Според точността:• Точни – работят с предварително зададена точност• Апроксимационни – точността зависи от растерното

устройство

– Според дефиниционната област:• Алгоритми, работещи с изпъкнали многоъгълници• Алгоритми, работещи с тела с криволинейни стени

Page 6: Computer Grapnics Algorithms Clipping

Алгоритъм за скриване на задни стени

• Алгоритъмът се използва само за единични тела, обградени с плоски стени, представляващи изпъкнали многоъгълници (изпъкнали многостени)

• Работи в моделното пространство• Чрез него не могат да се решат до край

въпросите за скриване на невидимите стени и ръбове при наличие на закриващи се обекти

Page 7: Computer Grapnics Algorithms Clipping

Алгоритъм за скриване на задни стени

• Аx+By+Cz+D=0 – уравнение на равнините, в които лежат стените на един обект

• По знака на коефициента С може да се определи дали дадена страна се закрива или не от обекта, към който принадлежи

Page 8: Computer Grapnics Algorithms Clipping

Алгоритъм за скриване на задни стени

• Постановка на алгоритъма:– Аx+By+Cz+D=0 – уравнение на равнина в

тримерното пространство– Разполагаме с дясно ориентирана

координатна система– В равнината лежи стена на изпъкнал

многостен– Вътрешна страна - страната на равнината,

гледаща към вътрешността на обекта– Видима/външна страна – обратната на

вътрешната - посоката на нормалата е от вътрешната към външната страна

Page 9: Computer Grapnics Algorithms Clipping

Алгоритъм за скриване на задни стени

• Коефициентите A, B, C и D се изчисляват от:

• Точките (x1,y1,z1), (x2,y2,z2) и (x3,y3,z3) от равнината са избрани в посока, обратна на въртене на часовниковата стрелка, гледана от външната страна на равнината

DCzByAx

zzyyxx

zzyyxx

zzyyxx

131313

121212

111

Page 10: Computer Grapnics Algorithms Clipping

Алгоритъм за скриване на задни стени

• Тогава за всяка точка с координати (x’,y’,z’) от вътрешната страна на една равнина е изпълнено неравенството:

Ax’+By’+Cz’+D<0• точката е или вътре в многостена или

многостенът се намира между нея и разглежданата стена – стената ще бъде невидима

• Ако Ax’+By’+Cz’+D>0 – стената е видима

Page 11: Computer Grapnics Algorithms Clipping

Алгоритъм за скриване на задни стени

• По условие: – гледната точка се намира

върху положителната посока на оста OZ

– посоката на гледане съвпада с отрицателната посока на оста OZ

• Тогава нормалният вектор N (A,B,C) ще има компонента С, паралелна на посоката на гледане

• Ако C<0 – невидима стена

Посока на гледане

N=(A,B,C)

z

x

y

Page 12: Computer Grapnics Algorithms Clipping

Алгоритъм за скриване на задни стени

• Ако коефициентите на уравненията на стените не са получени чрез изчисления на координатите на три върха, то се прави предварителен тест с вътрешна точка (x0,y0,z0)

• Ако A’x0+B’y0+C’z0+D’>0 , то коефициентите A’, B’, C’, D’ трябва да се умножат с -1, преди проверката на знака на С’

Page 13: Computer Grapnics Algorithms Clipping

Алгоритъм за скриване на задни стени

• Чрез този алгоритъм не могат да се отстранят всички невидими стени

• Използват се по-сложни алгоритми– Алгоритъм на Галимберти и Монтанари– Алгоритъм на Робертс– Алгоритъм на Z-буфера– Алгоритъм на Нюел и Санча

Page 14: Computer Grapnics Algorithms Clipping

Алгоритъм на Галимберти и Монтанари

• Точен алгоритъм, работещ в моделното пространство• Алгоритъм от векторен тип, приложим при скриване на

ръбовете на тримерни обекти с плоски изпъкнали многоъгълни стени

Използва се при създаване на векторни изображения

z

y

xE

F

Page 15: Computer Grapnics Algorithms Clipping

Алгоритъм на Галимберти и Монтанари

• Всеки ръб Е от един обект се съпоставя с всяка стена F от друг обект търси се един от случаите:

1. Ръбът Е е видим – Е се намира в полупространството на наблюдателя и ограничено от равнината на F

2. Ръбът Е е частично или напълно закрит от равнината на F изследване взаимното разположение на проекциите E’ и F’ в картинната равнина

3. Е попада в двете полупространства, разделени от равнината на F разглеждат се предните два случая

z

y

xE

F

z

y

x

E F

Page 16: Computer Grapnics Algorithms Clipping

Алгоритъм на Галимберти и Монтанари

• Цикълът на тестване приключва:– При изчерпване на стените {F}– При установяване пълната невидимост на ръба

Eвизуализират се само видимите части на Е,

ако има такиваВремето за работа на алгоритъма е

функция на квадрата на броя на стените на всички обекти

Page 17: Computer Grapnics Algorithms Clipping

Алгоритъм на Робертс

• Съчетава и доразвива идеите на предните два алгоритъма

• Невидимите линии се скриват при визуализиране

Page 18: Computer Grapnics Algorithms Clipping

Алгоритъм на Робертс• Алгоритъмът работи с изпъкнали многостени• Неизпъкналите многостени се представят чрез изпъкнали многостени• Състои се от три части

1. Всеки обект отделно се тества за скрити линии и повърхнини2. Останалите видими ръбове се тестват спрямо другите обекти3. Конструират се допълнителни ръбове, получени при взаимното

припокриване на обектите

Page 19: Computer Grapnics Algorithms Clipping

Алгоритъм на Z-буфера• Алгоритъм за скриване на

невидими повърхнини при работа с растерни устройства

• Работи във визуализационната повърхност (кадровия буфер)

• Използва се Z-буфер , съдържащ информация за координатите на точките по оста OZ

• Аx+By+Cz+D=0 – уравнение на равнината на стената

• В точката (x,y), дълбочината е:

• В съседната точка, дълбочината е:

C

yBxADz

000

..

z

y

x

Z – буфер, съхранява дълбочината z

Визуализационна

повърхност

C

yBxADz

001

.)1.(

C

Azz 01

x0 x1

y0

y1

C

Bzz 01

Page 20: Computer Grapnics Algorithms Clipping

Алгоритъм на Нюел и Санча• Сортира стените-многоъгълници по дълбочина• Проекциите на стените се извеждат върху екрана в

определен ред, в зависимост от близостта им до наблюдателя

• Най-напред се извеждат върху екрана проекциите на най-отдалечените стени

• Най-близките стени ще закрият далечните, тъй като ще бъдат записани в буфера за регенерация върху тях

• Създават се изображения само върху растерни дисплеи

Page 21: Computer Grapnics Algorithms Clipping

Алгоритъм на Нюел и Санча

z

y

x1

1

2

2

3

3

4

4

5

5

Page 22: Computer Grapnics Algorithms Clipping

Алгоритъм на Нюел и Санча

• Три стъпки на алгоритъма:– Подреждане на стените в списък в зависимост от най-

голямата координата Zmax– Разрешаване на неопределеностите, възникнали при

припокриване на z обвивките на стените– Преобразуване на проекциите на стените в растерна

форма в ред на увеличаване на максималните им координати Zmax

Page 23: Computer Grapnics Algorithms Clipping

Алгоритъм на Нюел и Санча

• Детайлизиране на втората стъпка• Извършване на проверки при припокриване

на z обвивките на стените P и Q:• Тест 1: Припокриват ли се x обвивките на P и

Q? – Не – проекциите на стените не се припокриват –

редът им на извеждане върху екрана е без значение

– Да - P и Q имат общи точки – прави се втори тест

P

Q

Page 24: Computer Grapnics Algorithms Clipping

Алгоритъм на Нюел и Санча

• Тест 2: Припокриват ли се y обвивките на P и Q? – Не – проекциите на стените не се припокриват – редът им на

извеждане върху екрана е без значение– Да - P и Q имат общи точки – прави се трети тест

• Тест 3: Проверява се дали Р лежи изцяло в пространството, ограничено от равнината на Q, което не съдържа наблюдателя– Да – Q може да закрива Р и Р трябва да остане на мястото си в

списъка – преди Q, за да се визуализира преди Q– Не – прави се четвърти тест

Page 25: Computer Grapnics Algorithms Clipping

Алгоритъм на Нюел и Санча

• Тест 4: Проверява се дали Q лежи изцяло в пространството, ограничено от равнината на Р, което съдържа наблюдателя– Да – Q може да закрива Р и Р трябва да остане на мястото си в

списъка – преди Q, за да се визуализира преди Q– Не – прави се пети тест

• Тест 5: Проверява се дали проекциите на P’ и Q’ върху XY не се припокриват– Ако не се припокриват – редът им на извеждане върху екрана е

без значение и Р може да остане на мястото си в списъка