![]() |
Модераторы: Snowy, Alexeis, MetalFan |
![]() ![]() ![]() |
|
Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: 2 Всего: 4 |
/удалено
Это сообщение отредактировал(а) Чупакабро - 31.5.2009, 21:36 --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: 2 Всего: 4 |
/удалено
Это сообщение отредактировал(а) Чупакабро - 31.5.2009, 21:36 --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
Tanyaata |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 28.2.2009 Репутация: нет Всего: нет |
Сначала мне надо построение тени отрезка(как на рис. 1.64), так как эта основа построений, потом развить это на каркас:
- построить тень от каркаса куба- на произвольной поверхности(рисуется плоскость и на ней тень), а источник света точечный и должен двигаться. ну а на конец, я поставлю вашу первую программу, то есть построение тени от 3-мерного объекта. Добавлено через 3 минуты и 51 секунду а можно узнать из какого вы города? |
|||
|
||||
Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: 2 Всего: 4 |
/удалено
Это сообщение отредактировал(а) Чупакабро - 31.5.2009, 21:35 --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: 2 Всего: 4 |
/удалено
Это сообщение отредактировал(а) Чупакабро - 31.5.2009, 21:35 --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
Tanyaata |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 28.2.2009 Репутация: нет Всего: нет |
Еще я почитала книгу Роджерс - алгоритмические основы комп. графики. там тоже говорится о модификации алгоритмов удаления невидимых граней для теней. там даже пример есть разобранный.
Добавлено через 49 секунд а я не сильно Вас загружаю???? |
|||
|
||||
Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: 2 Всего: 4 |
/удалено
Это сообщение отредактировал(а) Чупакабро - 31.5.2009, 21:34 --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
Tanyaata |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 28.2.2009 Репутация: нет Всего: нет |
Тени
Если положения наблюдателя и источника света совпадают, то теней не видно, но они появляются, когда наблюдатель перемещается в любую другую точку. Изображение с построенными тенями выглядит гораздо реалистичнее, и, кроме того, тени очень важны для моделирования. Например, особо интересующий нас участок может оказаться невидимым из-за того, что он попадает в тень. В прикладных областях — строительстве, разработке космических аппаратов и др. — тени влияют на расчет падающей солнечной энергии, обогрев и кондиционирование воздуха. Наблюдения показывают, что тень состоит из двух частей: полутени и полной тени. Полная тень — это центральная, темная, резко очерченная часть, а полутень — окружающая ее более светлая часть. В машинной графике обычно рассматриваются точечные источники, создающие только полную тень. Распределенные источники света конечного размера создают как тень, так и полутень: в полной тени свет вообще отсутствует, а полутень освещается частью распределенного источника. Из-за больших вычислительных затрат, как правило, рассматривается только полная тень, образуемая точечным источником света. Сложность и, следовательно, стоимость вычислений зависят и от положения источника. Легче всего, когда источник находится в бесконечности, и тени определяются с помощью ортогонального проецирования. Сложнее, если источник расположен на конечном расстоянии, но вне поля зрения; здесь необходима перспективная проекция. Самый трудный случай, когда источник находится в поле зрения. Тогда надо делить пространство на секторы и искать тени отдельно для каждого сектора. Для того чтобы построить тени, нужно по существу дважды удалить невидимые поверхности: для положения каждого источника и для положения наблюдателя или точки наблюдения, то есть это двухшаговый процесс. Рассмотрим сцену на рис. 28.1. Один источник находится в бесконечности сверху: спереди слева от параллелепипеда. Точка наблюдения лежит спереди: сверху справа от объекта. В данном случае тени образуются двояко: это собственная тень и проекционная. Собственная тень получается тогда, когда сам объект препятствует пропаданию света на некоторые его грани, например на правую грань параллелепипеда. При этом алгоритм построения теней аналогичен алгоритму удаления нелицевых граней: грани, затененные собственной тенью, являются нелицевыми, если точку наблюдения совместить с источником света. ![]() сли один объект препятствует попаданию света на другой, то получается проекционная тень, например тень на горизонтальной плоскости на рис. 28.1b. Чтобы найти такие тени, нужно построить проекции всех нелицевых граней на сцену. Центр проекции находится в источнике света. Точки пересечения проецируемой грани со всеми другими плоскостями образуют многоугольники, которые помечаются как теневые многоугольники и заносятся в структуру данных. Для того чтобы не вносить в нее слишком много многоугольников, можно проецировать контур каждого объекта, а не отдельные грани. После добавления теней к структуре данных, строится вид сцены из заданной точки наблюдения. Отметим, что для создания разных видов не нужно вычислять тени заново, так как они зависят только от положения источника и не зависят от положения наблюдателя. |
|||
|
||||
Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: 2 Всего: 4 |
/удалено
Это сообщение отредактировал(а) Чупакабро - 31.5.2009, 21:34 --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
Tanyaata |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 28.2.2009 Репутация: нет Всего: нет |
я поняла, для построения теней необходимо 2 этапа:
- удалить нелицевые грани, когда точку наблюдения совмещают с источником света - собственные тени. - для построения проекционных теней необходимо просто построить проекцию всех нелицевых граней. Центр проекции находится в источнике света. для удаления невидимых граней можно использовать Алгоритм Роджерса, он более понятный. чем все остальные Добавлено через 2 минуты и 1 секунду Пример. Рассмотрим параллелепипед на рис. 28.1a. Он задан точками P1(1, 0, 3.5), P2(2, 0, 3.5), P3(2, 0, 5), P4(1, 0, 5), P5(1, 3, 3.5), P6(2, 3, 3.5), P7(2, 3, 5), P8(1, 3, 5). Параллелепипед стоит на плоскости, заданной точками B1(0, 0, 0), B2(6, 0, 0), B3(6, 0, 6), B4(0, 0, 6). Источник света расположен в бесконечности на прямой, проходящей через P2 и P8. Точка наблюдения находится в бесконечности на положительной полуоси z после поворота сцены сначала на -45o вокруг оси y и затем на 35o вокруг оси x. Для того чтобы найти собственные тени, необходимо определить нелицевые грани относительно положения источника. Составим матрицу объема параллелепипеда, где R, L, B, T, H, Y обозначают правую, левую, нижнюю, верхнюю, ближнюю и дальнюю грани, если смотреть на преобразованный объект из бесконечности с положительной полуоси z. Вектор от источника к объекту в однородных координатах: [E] = P2 - P8 = [1, -3, -1.5, 0]. Скалярное произведение вектора направления к источнику и нелицевых плоскостей дает: Знак минус означает, что при наблюдении из положения источника правая, нижняя и дальняя грани являются нелицевыми и, следовательно, находятся в в собственной тени. Существует несколько способов нахождения проекционных теней. Один из них заключается в том, чтобы перенести и повернуть параллелепипед вместе с плоскостью его основания до совмещения вектора направления на источник с осью z. Источник находится в бесконечности, поэтому ортогональная проекция видимых граней на преобразованную плоскостьоснования дает проекционную грань. Значение z получается подстановкой x- и y-координат вершин преобразованного параллелепипеда в уравнение преобразованной плоскости основания. Затем координаты проекционных теней проводятся к первоначальной ориентации. Для совмещения вектора падающего из бесконечности вдоль прямой P8P2 света с осью x необходимо: * перенести P2 в начало координат; * выполнить поворот на 33.69o вокруг оси y, чтобы P4 совпала с осью z; * выполнить поворот на 59.04o вокруг оси y, чтобы P8 совпала с осью z. Объединенное преобразование: Преобразуя плоскость основания и параллелепипед, получим Уравнение npeoбразованной плоскости основания найдем методом Ньюэлла: z = -0.6 y. Подставляя x- и y-координаты вершин преобразованного параллелепипеда в уравнение плоскости, определим z, что дает проекцию тени на плоскость основания: Штрих обозначает вершину проекционной тени. Из положения источника видны только передняя, левая и верхняя грани; они и порождают проекционные тени: передняя: P3P4P8P7 - P3'P4'P8'P7' левая: P1P4P8P5 - P1'P4'P8'P5' верхняя: P7P8P5P6 - P7'P8'P5'P6' Отметим, что ни одна видимая грань не содержит точку P2; поэтому ее проекция P2' не входит в видимые проекционные тени. Обратным преобразованием, то есть [T]-1, построенные проекционные тени переводятся в исходную ориентацию: Проекциями теней на плоскость основания будут S3S4S8S7, S1S4S8S5, S7S8S5S6, S4S8S7, S1S4S8S5, S7S8S5S6, а общим контуром — S1S5S6S7S3S4. Добавлено через 4 минуты и 59 секунд пример - тут пример Добавлено через 8 минут и 10 секунд Спасибо Вам большое, что не оставили меня в беде, что советуете и помогаете. |
|||
|
||||
Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: 2 Всего: 4 |
/удалено
Это сообщение отредактировал(а) Чупакабро - 31.5.2009, 21:33 --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
Tanyaata |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 28.2.2009 Репутация: нет Всего: нет |
Моему руководителю важно, чтобы все было по алгоритму, но с программой можете не торопиться, думаю к апрелю можно и написать. А четкого плана она не дает, говорит все сами пишите.
|
|||
|
||||
Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: 2 Всего: 4 |
/удалено
Это сообщение отредактировал(а) Чупакабро - 31.5.2009, 21:33 --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
Tanyaata |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 28.2.2009 Репутация: нет Всего: нет |
а какой Вы алгоритм используете для удаления невидимых граней
|
|||
|
||||
Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: 2 Всего: 4 |
/удалено
Это сообщение отредактировал(а) Чупакабро - 31.5.2009, 21:32 --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Звук, графика и видео" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |