Управление светом в Direct3D8.
Управление светом в Direct3D8.
Direct 3D имеет довольно мощные средства для работы с освещением 3D-сцены. Поддерживается несколько различных типов источников света: параллельный (directional), точечный (point-source) и прожектор (spotlight). Параллельный свет не имеет источника – только направление. В качестве аналогии приведу солнце: все его лучи параллельны (простите, физики и астрономы!). Точечный свет и прожектор имеют вполне определенную точку, из которой исходят все лучи. Точечный свет испускается во все стороны, а прожектор имеет строго очерченный конус распространения лучей. Для получения более подробной информации можете обратиться к DirectX 8.0a SDK. Сейчас меня больше интересует другое. Есть одна проблема: все точки (vertexes), которые принимают участие в вычислении освещенности сцены должны включать вектор нормали. Определение нормали на самом деле очень просто, если Вы все еще помните курс школьной геометрии. Как это сделать? Есть, как минимум, 2 пути:
• Во-первых, мы можем найти аналитическое выражение, описывающее координаты вектора нормали. Это будет очень точный результат, но для каждого новой 3D-функции придется провести все выкладки заново.
• Во-вторых, мы можем рассчитать примерные координаты нормали исходя из координат точки, в которой определяется нормаль и координат соседних с ней точек. Пусть это лишь приближенное решение: его вполне достаточно для наших целей. К тому же оно зато абсолютно не зависит от самой функции. Именно этот подход реализован в демо-приложении и Вы можете найти его в функции C3DGraphic::CalcNormal(). Попробую прокомментировать сам алгоритм.
– Находим 4 вектора к соседним точкам:
V01 = P1 – P0;
V02 = P2 – P0;
V03 = P3 – P0;
V04 = P4 – P0;
– Находим 4 нормали к каждой из треугольных граней. Нормали находятся как векторное произведение соответствующих векторов.
N1 = [V02, V01];
N2 = [V03, V02];
N3 = [V04, V03];
N4 = [V01, V04];
– Искомая нормаль определяется как средний вектор четырех ранее найденных нормалей.
N = (N1 + N2 + N3 + N4) / 4;
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
4.2. Управление группами
4.2. Управление группами Начнем изучение вопроса с создания групп. Что это такое? Допустим, что в вашей сети 1000 пользователей, 500 из которых должны иметь доступ к файлам бухгалтерской отчетности. Как поступить? Можно каждому из 500 пользователей назначить права на нужный файл
Управление доменом
Управление доменом Несмотря на то что вы создали файл /etc/named.conf, указали в нем глобальные опции и определили зоны, оказывается, что настройка ведущего сервера DNS не закончена и запускать его еще рано. Если в файле /etc/named.conf указана зона типа master, необходим также
Управление контактами
Управление контактами В программе Skype можно управлять контактными данными абонентов, а именно отправлять список абонентов другим людям и импортировать данные абонентов из адресной книги.Отправка списка абонентовОбмениваться контактными данными очень удобно в
А что это за Direct3D8, и где оно живет???
А что это за Direct3D8, и где оно живет??? Если вы когда-либо имели дело с предыдущими версиями DirectX, то Вас ждет очень интересное открытие: DirectDraw больше нет вообще!!! Microsoft в очередной раз решил обобщить все что можно, и теперь все относящееся к рисованию в DirectX представлено под
Управление материалами.
Управление материалами. Все в этом мире имеет цвет. Цвет определяет восприятие нами окружающего мира. Яблоко – красное, небо – синее и так далее. Для обозначения свойств поверхности объектов Direct3D использует термин "материал". Свойства материала описываются структурой
Управление транзакциями
Управление транзакциями Необходимо помнить, что любое действие с базой данных происходит в рамках той или иной транзакции. Работа с InterBase основана на явном управлении транзакциями, а поскольку библиотека IBX - это обертка вокруг соответствующих функций InterBase API, то
Luminance Noise (Шум, связанный со светом)
Luminance Noise (Шум, связанный со светом) На этом этапе вы можете выбрать один из нескольких вариантов устранения шумовых эффектов. Используя кнопку Load Profile (Загрузить профиль), можно загрузить профиль камеры и получить доступ к дополнительным настройкам. Мы рассмотрим только
7.1. Управление и планирование
7.1. Управление и планирование Если мы при проектировании опираемся на метод итеративного развития, то важнее всего иметь сильное руководство, способное управлять ходом проекта и направлять его. Слишком много проектов сбились с пути из-за неспособности сосредоточиться
Управление монитором
Управление монитором Выключить монитор:SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0);Включить монитор:SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER,
Удаленное управление
Удаленное управление Управляться со своим собственным компьютером умеет не каждый. Ну а если вам вдруг понадобиться изменить что-то на ЧУЖОМ компьютере? Причем находящемся черте-где, возможно даже в другом городе?А это бывает не так уж редко. К примеру, нужно помочь
Управление просмотром
Управление просмотром ArchiCAD предоставляет пользователю мощные средства управления отображением проекта на экране. Сейчас рассмотрим только самые основные инструменты управления видом проекта, используемые при работе практически постоянно. Эти инструменты
Управление слоями
Управление слоями Элементы управления слоями и атрибуты слоев рассмотрим на примере стандартного списка слоев ArchiCAD.Окно управления слоями Layer Settings (Настройки слоя) (рис. 7.1) можно вызвать несколькими способами:? командой Document ? Layers ? Layer Settings (Документ ? Слои ? Настройки
Управление проектами
Управление проектами В завершение главы стоит рассказать о проектах, то есть о том, с чем, собственно, предстоит работать в программе Pinnacle
Управление воспроизведением
Управление воспроизведением Под областью предварительного просмотра в Проигрывателе расположены элементы управления воспроизведением. Внешний вид этой области в окне Проигрывателя зависит от конкретного режима работы программы Studio, например при захвате видео
Управление слоями
Управление слоями При манипулировании объектами титров вы могли заметить, что некоторые из них могут отображаться поверх других объектов, накладываясь на них. Все из-за того (или благодаря тому), что при отображении титра соблюдается определенный порядок прорисовки