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

Computer Grapnics Algorithms Clipping

Embed Size (px)

DESCRIPTION

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

Citation preview

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 не се припокриват– Ако не се припокриват – редът им на извеждане върху екрана е

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