Создание трехмерного графического движка для разработки игровых программ
Обзор существующих игровых движков, их компоненты, назначение и область применения. Разработка самостоятельного технического модуля для быстрого создания на его основе пользовательских приложений с поддержкой обработки трехмерных сцен в реальном времени.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 22.01.2016 |
Размер файла | 1,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Государственная политика осуществляет охрану труда в различных направлениях, принимая и реализуя федеральные и другие нормативные правовые акты в этой области, а также различного рода программы, улучшающие условия работы.
Несомненно, в первую очередь должна обеспечиваться безопасность жизни и здоровья работников. За выполнением всех норм охраны труда следят управление охраной труда и федеральный надзор. Они так же обеспечивают не только соблюдение всех инструкций, но и защиту рабочих, в случае невыполнения каких-либо условий безопасности труда. Контроль также обеспечивается за счет проведения проверок, в ходе которых выясняется о соблюдении всех норм и требований по охране труда. Для этого производится государственная экспертиза, в ходе которой устанавливается так называемая оценка условий труда.
Также, чтобы снизить вероятность несчастных случаев, на производстве проводится их профилактика, расследование и учет. Интересы сотрудников, пострадавших на производстве, защищены законом. Если работник имеет дело с вредными или опасными условиями, то устанавливаются гарантии и компенсации за такую работу.
Крайне важно также, чтобы в опасных и вредных условиях производственного процесса работникам выдавались средства защиты (коллективной или индивидуальной) за счет средств нанимающей компании.
Также важен не только контроль исполнения правил и норм охраны труда отдельного производства или отдельной страны, но и распространение передового опыта, что может поспособствовать улучшению условий производства и охраны интересов рабочих.
За выполнением норм также следят специалисты по охране труда, подготовка которых происходит за счет финансирования государства. За счет государства также проводят различные мероприятия по охране труда, повышение квалификации специалистов, организуется государственная статистическая отчетность об условиях труда, травматизме на производстве, заболеваемости рабочих и пр.
Международное сотрудничество и единая ее информационная система по охране труда и способствует эффективной налоговой политике, а это стимулирует разработку и использование безопасных технологий, производство и совершенствование средств индивидуальной защиты, создание оптимальных условий труда работников.
2.6 Безопасность труда при работе с ПЭВМ
Одним из важнейших элементов организации труда и производства, обеспечивающим его эффективность, являются безопасные условия работы. Они могут быть обеспечены в случае, если вся система производственных факторов рабочей среды и рабочего процесса, которые могут оказать свое влияние на работоспособность и состояние здоровье человека, исключает влияние на рабочих вредных или опасных факторов, описанных выше. Либо, как уже говорилось ранее, если уровни их воздействия не превышают установленной нормы.
В соответствии с Санитарными правилами СанПиН 2.2.2/2.4.1340-03 от 3 июня 2003 г. «Гигиенические требования к персональным электронно-вычислительным машинам (ПЭВМ) и организации работы» (утв. Главным государственным санитарным врачом РФ 30 мая 2003 г.) определяются безопасность труда при эксплуатации ПЭВМ. Эти правила также включают и определенные требования к проектированию и эксплуатации персональных компьютеров, используемых на рабочем месте, в процессе обучения или дома, а также требования к организации рабочих мест, строительству и реконструкции помещений, в которых эти ПЭВМ будут эксплуатироваться.
Персональные компьютеры не должны нарушать требования санитарных правил и норм. Каждый параметр использования ПЭВМ проходит санитарно-эпидемиологическую экспертизу, в ходе которой в испытательных лабораториях ему присваивается оценка. Такому оцениванию подвергаются степени звукового давления и уровни звука, издаваемого ПЭВМ, временные уровни электромагнитных полей, параметры отображения информации мониторами устройств, концентрация в помещении вредных веществ, которые выделяет ПЭВМ в воздух, и др. Все эти параметры должны не превышать допустимые нормы.
Должна обеспечиваться возможность поворота и фиксации корпуса в определенном положении используемого монитора ПЭВМ как в горизонтальной, так и вертикальной плоскости для обеспечения комфортного наблюдения экрана пользователем. Есть также и определенные нормы и к дизайну корпуса устройства. Например, не рекомендуется окраска в яркие контрастные цвета, а также глянцевая поверхность, отражающая блики.
Дизайн должен быть спокойным и мягким не раздражающим глаза, например, бежевые или серые тона корпуса с диффузным рассеиванием света. Также такие комплектующие персонального компьютера, как мышь, клавиатура, системный блок и другие устройства ПЭВМ должны быть оборудованы корпусом с матовой поверхностью с коэффициентом отражения 0,4-0,6 и не иметь блестящих деталей, способных создавать блики [7]. Также настройки монитора ПЭВМ должны давать его пользователю возможность регулировать яркость и контрастность изображения для более комфортной работы с отображаемой информацией.
Также важным фактором является естественное и искусственное освещение, которое не должно нарушать требования, инструкции и нормативную документацию. Все окна в рабочем помещении должны быть оборудованы жалюзи, занавесками, внешними козырьками или другими устройствами, регулирующими естественную освещенность помещения. Также цокольные и подвальные помещениях не могут быть оборудованы как рабочие места для пользователей ПЭВМ, так как уровень естественного света там слишком мал.
Внутри помещений, в которых предполагается размещение мест для работы с персональными компьютерами, интерьер должен быть выполнен из диффузно-отражающих материалов с коэффициентом отражения:
- для стен: 0,5-0,6;
- для потолка: 0,7-0,8;
- для пола: 0,3-0,5. [7]
Не рекомендуется размещать рабочие места пользователей ПЭВМ поблизости с силовыми кабелями или высоковольтными трансформаторами, технологическим оборудованием, создающим помехи в работе устройства. Шумящее оборудование (такое как принтер, сканер, сервер и др.), уровни шума которого выходят за границы, установленные нормативами, не должно находиться в одном помещении с ПЭВМ.
Расположение рабочих мест пользователей компьютеров также должно соответствовать определенным нормам. Расстояние между двумя столами с персональным компьютером должно быть не менее 2 метров, а соседние рабочие поверхности должны быть друг от друга не менее, чем в 1,2 метра. Глаз пользователя должен находиться на расстоянии 0,6-0,7 м от экрана монитора.
Кроме того, если на рабочей поверхности должно размещаться другое оборудование или устройства помимо ПЭВМ, то строение рабочего стола должно предусматривать это и обеспечивать их наиболее эффективное размещение с учетом их количества и других параметров. Но нужно учитывать, что конструкция рабочих столов должна отвечать всем требованиям эргономики.
Немаловажно также проводить довольно частую влажную уборку, периодическое проветривание, а также чистку окон, рам и осветительных приборов в помещениях с ПЭВМ как минимум два раза в год, чтобы обеспечить комфортную работу пользователей.
2.7 Микроклимат в рабочей зоне
«Микроклимат производственных помещений - это метеорологические условия внутренней среды помещений, которые определяются действующими на организм человека сочетаниями температуры, влажности, скорости движения воздуха и теплового излучения; комплекс физических факторов, оказывающих влияние на теплообмен человека с окружающей средой, на тепловое состояние человека и определяющих самочувствие, работоспособность, здоровье и производительность труда.» [8]
В производственных помещениях независимо от природных метеорологических условий должны быть созданы благоприятные и наиболее безопасные для выполнения работы условия.
В Санитарных правилах СанПиН 2.2.2/2.4.1340-03 в п. 4 описаны требования к микроклимату, куда также входят принятые нормы содержания вредных химических веществ в помещениях, в которых размещаются рабочие места пользователей ПЭВМ.
На производственных местах, в которых основная работа связана с использованием персонального компьютера и сопряжена с нервным или эмоциональным напряжением, должно обеспечиваться соблюдение оптимальных параметров микроклимата в соответствии с принятыми нормами микроклимата для рабочих помещений. К таким помещениям могут относиться диспетчерские, расчетные, залы вычислительной техники, операторские и др. В такого рода помещениях температура, влажность и другие параметры микроклимата не должны нарушать санитарные нормы на рабочем мест сотрудника.
Для обеспечения оптимальным параметров микроклимата помещения всех типов, оборудованных ПЭВМ, должны проводится систематические проветривания в течение дня и влажная уборка рабочего места и помещения в целом.
Уровни содержания вредных химических веществ на рабочих местах, где расположены ПЭВМ, не могут нарушать действующие нормы санитарии и эпидемиологии и должны находится в пределах допустимой концентрации в зоне работы пользователя ПЭВМ.
Нормальному здоровью человека может поспособствовать сохранение стабильного температурного режима организма, что достигается за счет регуляции температуры.
Сохранение стабильной температуры тела обеспечивается за счет термостабильного состояния всего организма в целом. Оценка этого состояния производится по тепловому балансу, на который оказывает влияние микроклимат. По степени его влияния на этот параметр состояния человека микроклимат подразделяется на нейтральный, нагревающий, охлаждающий.
Если обеспечивается тепловой баланс организма человека в течении всего рабочего дня, то такой климат называют нейтральным. Охлаждающий приводит к образованию общей или локальной нехватке тепла в теле человека (более 2 Дж/с). Это может привести к возникновению заболеваний дыхательной или сердечно-сосудистой систем, нарушению координации и способности выполнять точные работы. При частичном охлаждении пальцев снижается точность выполнения различных операций.
Нагревающий микроклимат проявляется в повышенной температуре среды, приводящей к накоплению тепла в организме человека (более 2 Дж/с). Также это может привести к увеличению влагопотери (более 30%). Воздействие такого микроклимата так же может вызвать нарушение здоровья, ухудшение качества работы и производительности труда. Например, нагревающий микроклимат может привести к различным заболеваниям, обморочному состоянию, головной боли, чувству слабости, головокружению и тошноте. Подобного рода микроклимат также может привести к тепловому удару.
К основным показателям теплового состояния относят температуру кожи, температуру в глубоких тканях организма, среднюю температуру тела, изменение теплосодержания в организме, величину влагопотерь, теплоощущение и изменение сердцебиения. [8]
Для теплового состояния разработаны классификации и методы его оценки, а также меры профилактики от переохлаждения или перегревания рабочих. По степени влияния на состояние здоровья человека условия микроклимата могут быть на оптимальными, допустимыми, вредными и опасными.
Показатели микроклимата, воздействующие на человека в течение рабочего дня и обеспечивающие оптимальный тепловой баланс организма, являются наиболее подходящими микроклиматическими условиями В этом случае напряжение терморегуляции организма минимально, что позволяет сохранять высокую производительность труда.
Допустимы такие микроклиматические условия, параметры которых могут вызывать колебания теплового баланса, но при этом наблюдается умеренное напряжение и незначительный дискомфорт связанный с изменением температуры. При этом относительная термостабильность сохраняется.
Если имеются изменения теплового состояния, вызывающие выраженные дискомфортные теплоощущения, то такие микроклиматические условия являются вредными. В этом случае не гарантируется стабильный тепловой баланс организма человека и защита его здоровья во время производственной деятельности и после ее окончания.
В случае если происходят изменения теплового состояния в течение непродолжительного времени (менее 60 мин), сопровождающиеся чрезмерным напряжением механизмов, отвечающих за регуляцию теплообмена, то такой микроклимат является опасным (экстремальным). Это может привести к серьезным нарушениям здоровья человека и даже возникновению риска смерти.
В случае если в рабочей среде невозможно поддерживать допустимые условия микроклимата, необходимо обеспечивать работников средствами защиты от перегревания и охлаждения.
Этого можно достичь различными средствами. Например, местное кондиционирование воздуха, использование индивидуальных средств защиты от повышенного или пониженного температурного режима или сокращение рабочего дня.
Также проводится профилактика работников, находящихся в условиях нагревающего микроклимата. В нее входят следующие мероприятия:
- контроль продолжительности нахождения в нагревающей среде для поддержания среднесменного температурного состояния на допустимом уровне;
- нормировка максимальной границы температурной нагрузки рабочего на допустимом уровне;
- использование специальных средств защиты (индивидуальной или коллективной), которые уменьшают доступ тепла из внешней среды к поверхности тела человека.
Защита от охлаждения производится с помощью специальной одежды, произведенной в соответствии с требованиями ГОСТ 29335--92 и 29338--92 «Костюмы мужские и женские для защиты от пониженных температур. Технические условия». Также в целях сокращения теплопотери используются локальные источники тепла, которые смогут обеспечить сохранение необходимого уровня теплообмена организма.
Но так или иначе для нормализации температурного состояния организма необходимо регламентировать продолжительность непрерывного пребывания в неблагоприятных температурных условиях и продолжительность пребывания в среде с комфортными условиями.
2.8 Защитное зануление
В соответствии с требованиями по эксплуатации персональных компьютеров помещения, где располагаются рабочие места, должны быть оборудованы защитным занулением.
«Зануление - это преднамеренное электрическое соединение с нулевым защитным проводником металлических нетоковедущих частей, которые могут оказаться под напряжением.» [9] Главной целью использования зануления является обеспечение безопасности при работе с электрооборудованием.
Отличие зануления от заземления заключается в том, что оно использует эффект короткого замыкания. Если на производственном помещении наблюдается в какой-то мере равномерное распределение нагрузок на сеть и нулевой проводник служит в основном в защитных целях, то в этом случае эффект короткого замыкания происходит при контакте напряжения одной из фаз на проводящий корпус электрического прибора. В такой ситуации срабатывает на отключение дифференциальный автомат (средство защиты человека от удара электрическим током) или обычный автоматический выключатель.
Главное назначение защитного зануления - это защита от возможного удара электрическим током. Допустим, в случае поврежденной изоляции внутри электроприбора корпус установки оказался под напряжением. Тогда и появляется ток короткого замыкания. Защита реагирует на это и сразу отключает электроприбор от сети.
Для быстрого отключения электрического прибора от сети, как правило, используются автоматические выключатели и предохранители, которые устанавливаются для защиты от эффекта короткого замыкания.
Основная причина возникновения тока короткого замыкания состоит в попадании напряжения (фазового провода) на токопроводящий корпус электрического устройства, соединенного с нулевым проводником. В этом случае происходит значительное и резкое увеличение силы тока в электрической цепи, из-за чего и срабатывают защитные устройства, отключающие линию, питающую неисправный электроприбор. Для обеспечения зануления устройства используются специально предназначенные для этого проводники, например, в случае с однофазной проводкой - это третья жила кабеля.
В соответствии с описанными правилами устройства электроприборов время на автоматическое отключение поврежденной электрической сети с напряжением 380/220 В не должно превышать 0,4 секунд. [9]
Для этого необходимо соблюдение следующего условия:
Iкз >k * Iн,
где Iкз - ток короткого замыкания, Iн - номинальный ток установки (например, автоматический выключатель), k - коэффициент надежности.
Помимо этого, согласно правилам устройства электроприборов показатель коэффициента надежности должен не превышать значение 3 для плавких предохранителей или автоматов с тепловым расцепителем для нормальных помещений и 4-6 - для взрывоопасных помещений. Для автоматических выключателей с электромагнитным расцепителем это значение составляет 1,4 во всех помещениях. [9]
Зануление обеспечивает не только быстрое отключение от электропитания неисправной линии, но и низкое напряжение на корпусе электрического прибора при контакте с ним. Таким образом, исключается возможность поражения электрическим током человека.
Также в соответствии с правилами устройства электроприборов, использование такой преднамеренной защиты, как зануление, рекомендуется на производстве, но не на бытовом уровне из-за ее небезопасности. То есть такая система может использоваться только в промышленных помещениях.
Согласно правилам устройства электроустановок зануление должно быть выполнено «в электроустановках до 1 кВ с глухозаземленной нейтралью или глухозаземленным выводом источника однофазного тока, а также с глухозаземленной средней точкой в трехпроводных сетях постоянного тока». [9] Применение заземления в таких установках не достаточно. Также рекомендовано в качестве дополнительной защиты использовать защитное отключение.
К частям устройства, подлежащим занулению согласно требованиям, относятся:
- корпуса электрических машин, различных аппаратов, трансформаторов и светильников;
- приводы электрических аппаратов,
- каркасы щитов управления, распределительных щитов и шкафов;
- металлические кабельные конструкции и пр.
Каждая часть электроприбора, которая заземляется или зануляется, должна быть соединена с общей электрической сетью с помощью отдельного ответвления. В такой цепи защитных проводников также не разрешено использование разъединяющих приспособлений и предохранителей. Но если выключатель, который вместе с отсоединением нулевых проводников отключает также и от всей сети провода, находящиеся под напряжением, то такие аппараты допустимо использовать.
2.9 Разработка эргономичного интерфейса
Через интерфейс пользователь воспринимает структуру всей системы в целом. Пользовательский интерфейс заключает в себе различные аспекты, связанные с взаимодействием между пользователем и системой. Интерфейс состоит из множества компонентов, например, набор сообщений пользователя, элементы управления системой, перемещение между блоками системы, дизайн отображаемых экранов программы и пр. Перед разработчиками встает задача проектирования эргономичного интерфейса, который позволяет обеспечить наиболее эффективное и экономичное использование технологий информационных систем.
Необходимость улучшения как интерфейса, так и процесса его разработки значительно повысилась, благодаря инновациям в области информационных технологий и автоматизации систем проектирования.
Для большинства программ на разработку пользовательского интерфейса уходит существенная часть бюджета и усилий программистов. Исследования, проведенные в этой области, показывают то, что этот процесс составляет около половины кода всей программы, а на разработку уходит не менее трети проектного бюджета. Плохо разработанный интерфейс может понизить функциональность системы, так как для большинства пользователей интерфейс представляет из себя саму структуру и функционал программы.
Целью создания эргономичного интерфейса является максимально удобная и комфортная работа пользователя за монитором. Для этих целей используют критерии эргономичного интерфейса, которые обеспечивают естественность и интуитивность работы, последовательность и непротиворечивость действий, выделение нужных элементов для привлечения внимания пользователя, организацию системы переключения между блоками программы, хорошую поддержку пользователя и гибкость.
Критерий естественности диалога подразумевает под собой интуитивно понятный интерфейс. Иными словами, пользователю нет необходимости существенно изменять свою привычную тактику при решении различных задач. Для выполнения этого критерия достаточно придерживаться некоторым принципам. Во-первых, должна обеспечиваться поддержка родного языка пользователя. Во-вторых, текстовые надписи (например, подписи и подсказки), появляющиеся в процессе диалога, должны однозначно интерпретироваться пользователем. В-третьих, алгоритм должен имитировать естественный порядок ведения диалога с пользователем в соответствии с привычным процессом обработки информации при решении задач человеком.
Соблюдение общих правил эксплуатации системы гарантируется правильной очередностью ведения диалога. В этот критерий входят последовательность в обработке команд, в использовании форматов данных и в размещении информации на мониторе. Иными словами, разные по смыслу команды должны иметь различные обозначения, формат однотипных полей всегда должен быть одинаковым, а сообщения и уведомления должны появляться в привычном для пользователя месте.
Для привлечения внимания пользователя используется выделение элементов интерфейса. При этом если количество выделенных элементов окажется слишком велико, то это может вызвать дискомфорт у пользователя.
Есть несколько способов выделения элементов интерфейса:
- движение или мигание (довольно действенный метод, так как глаз может быстро реагировать на движущиеся элементы и такой эффект не оставит важный инструмент интерфейса без внимания пользователя).
- яркость (мало эффективный метод из-за того, что человек может обнаружить не так много уровней яркости).
- цвет (довольно действенный метод, который может использоваться для группировки элементов, выделения различных частей интерфейса и т.п.). Для того, чтобы использовать этот способ выделения элементов интерфейса максимально эффективно, важно придерживаться основным принципам использования цвета: число цветов должно быть ограничено до 4 для одного экрана; более эффективно использовать цвета в соответствии с представлениям пользователя (например, красный - ошибка, зеленый - нормальная работы системы); для привлечения внимания чаще используются белые, желтые или красные цвета; для разбиения данных на блоки лучше всего выбрать контрастные цвета или цвета, расположенные в различных частях спектра (синий и желтый, красный и голубой, зеленый и фиолетовый и т.д.); для объединения данных лучше наоборот использовать соседние в спектре цвета (синий и голубой, желтый и зеленый, красный и фиолетовый и т.д.). Яркие цвета могут затруднять восприятие информации пользователем, и не давать сконцентрироваться на рабочем процессе. Выбор вызывающих цветов снизит работоспособность человека и будет способствовать усталости и раздражению. Все это на прямую может повлиять на результат работы и привести к возникновению ошибок.
- форма (шрифт, размер окна и пр.) позволяет отличить различные типы данных. Правильная работа со шрифтами в графическом интерфейсе может снизить зрительное напряжение у пользователя. Важно придерживаться некоторым принципам при выводе текста на экран пользователя: текст в нижнем регистре читается быстрее; символы верхнего регистра лучше всего использовать для выделения важных частей сообщения; интервал между строками лучше всего делать чуть больше высоты самих символов. Не желательно также большое количество окон (форм) в интерфейсе, так как это усложняет восприятие информации.
- оттенение (этот метод присваивает текстуру объектам, но он скорее улучшает общий визуальный вид интерфейса, чем привлекает к себе внимание);
- окружение (это различного рода эффекты, например, рамка, подчеркивание, инвертированное изображение и пр.).
Система навигации дает пользователю возможность перемещаться между различными информационными блоками и подпрограммами в процессе диалога с системой. Для обеспечения легкой навигации по интерфейсу можно использовать заголовки страниц для каждого из экранов, пронумеровывать строки или столбцы, отображать текущее имя файла.
Во время диалога система оказывает пользователю поддержку в виде инструкций, подтверждения действий, сообщений об ошибках и пр.
Диалог пользователя и системы также должен быть гибким, то есть соответствовать различным уровням квалификации и производительности пользователя. Это означает, что диалоговой системе необходимо адаптироваться. Такая адаптация может проходить как с помощью пользователя, так и самостоятельно, предлагая различные возможные уровни подготовки оператора.
Также не стоит оставлять без внимания и формулировку текста диалогового окна. Она должна быть четкой и однозначной и не приводить к неправильному толкованию информации пользователем. Иначе он может принять неверное решение, что негативно отразится на результате его работы.
Чтобы ускорить работу пользователя с программой при проектировании интерфейса, стоит добавить функцию горячих клавиш (сочетания клавиш). При нажатии определенной комбинации клавиш на клавиатуре выполняется некое действие (команда), обрабатываемое системой. Эти команды, как правило, повторяют интерфейс меню и кнопок, что избавляет пользователя от необходимости искать необходимую команду на форме, а это значительно ускоряет работу опытных пользователей.
Эргономика графического интерфейса - один из важнейших факторов качественной и эффективной работы пользователя в системе. Эргономичный интерфейс обеспечивает комфортные условия для работы. Гибкость, простота и наглядность интерфейса позволяют расширить круг людей, которые могут им пользоваться, а соблюдение норм проектирования интерфейса увеличивают работоспособность пользователя и снижают риск его ошибок.
Выводы к главе 3
В результате изучения нормативной документации по экологии и охране труда были учтены следующие аспекты:
1. Определено понятие охраны труда в производственной деятельности, а также его функции и задачи.
2. Доказана необходимость исполнения всех норм и инструкций, связанных с областью охраны труда.
3. Выделены основные правила безопасности и рекомендации по работе с персональным компьютером.
4. Рассмотрены различные микроклиматические условия в производственной среде, а также их влияние на человека.
5. Обосновано использование защитного зануления на рабочем месте пользователя персонального компьютера или другого электрического устройства.
6. Определены основные принципы разработки эргономичного пользовательского интерфейса.
ЗАКЛЮЧЕНИЕ
Главным результатом дипломного проекта является создание системы, способной формировать и визуализировать трехмерное пространство для игровых приложений.
В ходе разработки данной системы была рассмотрена технология DirectX. Программирование с использованием ее интерфейса Direct3D позволило спроектировать модули системы, поддерживающие расширения и различного рода надстройки, благодаря разбиению программы на отдельные модули.
В данном проекте была затронута актуальная и бурно развивающаяся область индустрии разработки компьютерных игровых программ.
В рамках дипломного проекта были получены следующие теоретические и практические результаты:
- проведен анализ модулей, составляющих игровые приложения;
- рассмотрены основные компоненты и возможности существующих популярных игровых движков;
- в ходе анализа предметной области определены основные цели и задачи, а также область применения разрабатываемой системы;
- проведен анализ основных графических интерфейсов, в ходе которого была выбрана оптимальная технология для решения поставленной задачи;
- рассмотрена логика построения и отображения трехмерного виртуального пространства;
- разработан алгоритм работы базового приложения и его модулей;
- произведено тестирование разработанного на базе системы приложения, показывающее возможности графического движка, а также знаний, накопленных в процессе изучения данной области;
- изучены основные положения и нормативы по безопасной работе с персональным компьютером и созданию эргономичного интерфейса.
Перечисленные результаты способствовали созданию гибкого приложения с возможностью его расширения и модификации, который обладает хорошей производительностью и стабильностью.
Разработанная система модулей может использоваться:
- как графический движок для создания игровых приложений для образовательных или развлекательных целей;
- как приложение для создания трехмерных демонстрационных видеороликов;
- как приложение для быстрой визуализации трехмерных сцен;
- как дополнительный модуль для других создаваемых приложений.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. Рынок игр в России и мире, 2010-2016 гг. [Электронный ресурс]: аналитика. - Режим доступа: http://json.tv/ict_telecom_analytics_view/rynok-igr-v-rossii-i-mire-2010-2016-gg-20141121113425 (Дата обращения 21.11.2014 г.)
2. Киризлеев, А.Ю. Игровая индустрия [Электронный ресурс] / А.Ю. Киризлеев. - Режим доступа: http://gamesisart.ru/game_dev_structure.html (Дата обращения 16.08.2014 г.)
3. Поздняков, К. Составляющие игрового графического движка [Электронный ресурс] / К. Поздняков. - Разработка игр. - Режим доступа: http://www.gamedev.ru/coding/20517.shtml (Дата обращения 17.05.2002 г.)
4. Ousterhout J. Scripting: Higher-Level Programming for the 21st Century (англ.) // IEEE Computer. -- 1998. -- Т. 31. -- № 3. -- P. 24-26.
5. Ясани, Т. Топ-10 игровых движков: выбери свой [Электронный ресурс] / Тежас Ясани. - пер. И. Смирнова. - Режим доступа: http://app2top.ru/game_development/top-10-igrovy-h-dvizhkov-vy-beri-svoj-45170.html (Дата обращения 3.09.2014 г.)
6. Ламот, А. Программирование трехмерных игр для Windows. Советы профессионала по трехмерной графике и растеризации.: Пер. с англ. - М.: Издательский дом «Вильяме», 2004. - 447-458 с.
7. Трудовой кодекс Российской Федерации от 30 декабря 2001 г. N 197-ФЗ (ТК РФ)
8. Российская энциклопедия по охране труда: В 3 т. -- 2-е изд., перераб. и доп. -- М.: Изд-во НЦ ЭНАС. - 2007.
9. Правила устройства электроустановок ПУЭ. - утв. Минэнерго СССР. - 6 изд.
ПРИЛОЖЕНИЕ 1. ФУНКЦИИ ИНИЦИАЛИЗАЦИИ И ФОРМИРОВАНИЯ СЦЕНЫ ФАЙЛА ИСХОДНОГО КОДА VISENGINEDX.CPP
bool Init(HWND hWnd)
{
if (DXinit(&dxInterf, &dxDev, hWnd, width, height, TRUE)!=S_OK)
{
MessageBox(hWnd, "Ошибка инициализации DirectX.", "Ошибка", MB_OK);
return FALSE;
}
gm = new GraphicModule(dxDev);
nMaterial = LoadMesh("chess.x", dxDev, &pMesh, &pMeshTextures, " chess_tex.bmp", &pMeshMaterials);
D3DXMATRIXA16 matView;
D3DXMatrixIdentity(&matView);
D3DXMatrixRotationZ(&matView, 90);
dxDev->SetTransform(D3DTS_VIEW, &matView);
D3DLIGHT9 light;
ZeroMemory(&light, sizeof(D3DLIGHT9));
light.Type = D3DLIGHT_DIRECTIONAL;
light.Direction = D3DXVECTOR3(0.5f, 0.0f, 0.5f);
light.Diffuse.r = light.Diffuse.g = light.Diffuse.b = light.Diffuse.a = 1.0f;
dxDev->SetLight(0, &light);
dxDev->LightEnable(0, TRUE);
return TRUE;
}
void CreateScene() {
dxDev->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(255,255,255), 1.0f, 0);
if (SUCCEEDED(dxDev->BeginScene()))
{
D3DMATRIX matWorld = {0.1f, 0, 0, 0, 0, 0.1f, 0, 0, 0, 0, 0.1f, 0, 0, -10, 0, 1, };
dxDev->SetTransform(D3DTS_WORLD, &matWorld);
dxDev->SetRenderState(D3DRS_LIGHTING, TRUE);
for (DWORD i=0; i<nMaterial; i++)
{
dxDev->SetMaterial(&pMeshMaterials[i]);
if (pMeshTextures[i])
dxDev->SetTexture(0, pMeshTextures[i]);
pMesh->DrawSubset(i);
}
gm->renderAll();
dxDev->EndScene();
}
dxDev->Present(NULL, NULL, NULL, NULL);
}
ПРИЛОЖЕНИЕ 2. ПРОГРАММНЫЙ КОД ДЛЯ DX3D
Заголовочный файл:
#ifndef _DX3D_H_
#define _DX3D_H_
#include "d3d9.h"
#include "d3dx9.h"
HRESULT DXinit(IDirect3D9 **dxInterf, IDirect3DDevice9 **dxDev, HWND hWnd, DWORD width, DWORD height, BOOL fScrn);
DWORD LoadMesh(char *filename, IDirect3DDevice9 *dxDev, ID3DXMesh **dxMesh, LPDIRECT3DTEXTURE9 **dxTexture, char *texFilename, D3DMATERIAL9 **dxMaterial);
#endif
Файл исходного кода:
#include "dx3D.h"
HRESULT DXinit(IDirect3D9 **dxInterf, IDirect3DDevice9 **dxDev, HWND hWnd, DWORD width, DWORD height, BOOL fScrn)
{
if((*dxInterf = Direct3DCreate9(D3D_SDK_VERSION)) == NULL)
return E_FAIL;
D3DPRESENT_PARAMETERS dxPP;
ZeroMemory(&dxPP, sizeof(dxPP));
dxPP.BackBufferWidth = width;
dxPP.BackBufferHeight = height;
dxPP.AutoDepthStencilFormat = D3DFMT_D24S8;
dxPP.EnableAutoDepthStencil = TRUE;
RECT wndView;
RECT wndClient;
GetWindowRect(hWnd, &wndView);
GetClientRect(hWnd, &wndClient);
width = width + (wndView.right-wndView.left) - (wndClient.right-wndClient.left);
height = height + (wndView.bottom-wndView.top) - (wndClient.bottom-wndClient.top);
MoveWindow(hWnd, wndView.left, wndView.top, width, height, TRUE);
D3DDISPLAYMODE disMode;
(*dxInterf)->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &disMode);
dxPP.BackBufferFormat = disMode.Format;
dxPP.SwapEffect = D3DSWAPEFFECT_DISCARD;
dxPP.Windowed = TRUE;
HRESULT hRes;
DWORD fl = D3DCREATE_MIXED_VERTEXPROCESSING;
if(FAILED(hRes = (*dxInterf)->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, fl, &dxPP, dxDev)))
return hRes;
float aspect = (float)dxPP.BackBufferWidth / (float)dxPP.BackBufferHeight;
D3DXMATRIX matr;
D3DXMatrixPerspectiveFovLH(&matr, D3DX_PI / 4.0f, aspect, 1.0f, 5000.0f);
(*dxDev)->SetTransform(D3DTS_PROJECTION, &matr);
(*dxDev)->SetRenderState(D3DRS_LIGHTING, TRUE);
return S_OK;
}
DWORD LoadMesh(char *filename, IDirect3DDevice9 *dxDev, ID3DXMesh **dxMesh, LPDIRECT3DTEXTURE9 **dxTexture, char *texFilename, D3DMATERIAL9 **dxMaterial)
{
LPD3DXBUFFER dxBuffer;
DWORD nMaterial;
D3DXLoadMeshFromX(filename, D3DXMESH_SYSTEMMEM, dxDev, NULL, &dxBuffer, NULL, &nMaterial, dxMesh);
D3DXMATERIAL* d3dxMaterials = (D3DXMATERIAL*)dxBuffer->GetBufferPointer();
(*dxTexture) = new LPDIRECT3DTEXTURE9[nMaterial];
(*dxMaterial) = new D3DMATERIAL9[nMaterial];
for( DWORD i=0; i<nMaterial; i++)
{
(*dxMaterial)[i] = d3dxMaterials[i].MatD3D;
if( FAILED(D3DXCreateTextureFromFile(dxDev, d3dxMaterials[i].pTextureFilename, &(*dxTexture)[i])))
if( FAILED(D3DXCreateTextureFromFile(dxDev, texFilename, &(*dxTexture)[i])))
(*dxTexture)[i] = NULL;
}
return nMaterial;
}
ПРИЛОЖЕНИЕ 3. ПРОГРАММНЫЙ КОД ДЛЯ DXOBJ
Заголовочный файл:
#include <string>
#include "d3d9.h"
#include "d3dx9.h"
const int typeROOM = 1;
const int typeCHESS = 2;
const int mxEffects = 10;
class cObj
{
public:
IDirect3DDevice9 *objDev;
DWORD nMaterials;
ID3DXMesh *objMesh;
LPDIRECT3DTEXTURE9 *objTexture;
D3DMATERIAL9 *objMaterial;
ID3DXEffect *dxEffect[mxEffects];
TCHAR *effTechnic[mxEffects];
IDirect3DTexture9 *effTexture[mxEffects];
D3DXVECTOR4 effLight[mxEffects];
D3DXMATRIX matWorld;
public:
cObj(IDirect3DDevice9 *obj3DDev);
void loadMeshFromFile(char* filename, char* texturename);
void loadTexture(char* filename, char* iEffectName, int index);
void setEffect(ID3DXEffect *effect, int index);
void setTechniс(char* tech, int index);
const D3DXMATRIX& getWorldPos() const { return matWorld; };
void setWorldPos(D3DMATRIX *matrix);
void setLightPos(D3DXVECTOR4 *pos, int index);
void posObj();
bool render(DWORD iEffect=1);
void setShader(int iEffect);
};
Файл исходного кода:
#include "dxObj.h"
#include "d3d9.h"
#include "d3dx9.h"
#include "dx3D.h"
cObj::cObj(IDirect3DDevice9 *obj3DDev)
{
for (int i=0; i<mxEffects; i++)
dxEffect[i]=NULL;
objDev=obj3DDev;
D3DXMatrixIdentity(&matWorld);
}
void cObj::setEffect(ID3DXEffect *effect, int index)
{
dxEffect[index] = effect;
}
void cObj::setTechniс(char* tech, int index)
{
if (tech!=NULL)
{
effTechnic[index] = tech;
dxEffect[index]->SetTechnique(tech);
}
}
void cObj::loadTexture(char* filename, char* iEffectName, int index)
{
D3DXCreateTextureFromFileEx(objDev, filename, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_FILTER_TRIANGLE | D3DX_FILTER_MIRROR, D3DX_FILTER_TRIANGLE | D3DX_FILTER_MIRROR, 0, NULL, NULL, &effTexture[index]);
if (iEffectName)
for (int i=0; i<mxEffects; i++)
if (dxEffect[i])
if (dxEffect[i]->IsParameterUsed(iEffectName, effTechnic[i]))
dxEffect[i]->SetTexture(iEffectName, effTexture[index]);
}
void cObj::setLightPos(D3DXVECTOR4 *pos, int index)
{
effLight[index] = *pos;
}
void cObj::setWorldPos(D3DMATRIX* matrix)
{
matWorld = *matrix;
}
void cObj::posObj()
{
objDev->SetTransform(D3DTS_WORLD, &getWorldPos());
}
void cObj::setShader(int iEffect)
{
D3DXMATRIX Full, View, matProjection, ident;
objDev->GetTransform(D3DTS_VIEW, &View);
objDev->GetTransform(D3DTS_PROJECTION, &matProjection);
D3DXMatrixMultiply(&Full, &matWorld, &View);
if (dxEffect[iEffect]->IsParameterUsed("world_view_matrix", effTechnic[iEffect]))
dxEffect[iEffect]->SetValue("world_view_matrix", &Full, D3DX_DEFAULT);
D3DXMATRIX matWorldViewInv, matWorldViewInvTrans;
D3DXMatrixInverse( &matWorldViewInv, NULL, &Full);
D3DXMatrixTranspose( &matWorldViewInvTrans, &matWorldViewInv );
if (dxEffect[iEffect]->IsParameterUsed("WorldViewInvTrans", effTechnic[iEffect]))
dxEffect[iEffect]->SetValue("WorldViewInvTrans", &matWorldViewInvTrans, D3DX_DEFAULT);
D3DXMatrixMultiply(&Full, &Full, &matProjection);
if (dxEffect[iEffect]->IsParameterUsed("world_matrix", effTechnic[iEffect]))
dxEffect[iEffect]->SetValue("world_matrix", &matWorld, D3DX_DEFAULT);
if (dxEffect[iEffect]->IsParameterUsed("view_matrix", effTechnic[iEffect]))
dxEffect[iEffect]->SetValue("view_matrix", &View, D3DX_DEFAULT);
if (dxEffect[iEffect]->IsParameterUsed("proj_matrix", effTechnic[iEffect]))
dxEffect[iEffect]->SetValue("proj_matrix", &matProjection, D3DX_DEFAULT);
if (dxEffect[iEffect]->IsParameterUsed("world_view_proj_matrix", effTechnic[iEffect]))
dxEffect[iEffect]->SetValue("world_view_proj_matrix", &Full, D3DX_DEFAULT);
if (dxEffect[iEffect]->IsParameterUsed("mat", effTechnic[iEffect]))
dxEffect[iEffect]->SetValue("mat", &Full, D3DX_DEFAULT);
dxEffect[iEffect]->SetValue("lightPos0", effLight[0], D3DX_DEFAULT);
}
bool cObj::render(DWORD iEffect)
{
int y=nMaterials;
if (dxEffect[iEffect]==NULL)
return false;
posObj();
setShader(iEffect);
UINT uPass;
dxEffect[iEffect]->Begin(&uPass, NULL);
for(UINT i = 0; i < uPass; i++)
{
dxEffect[iEffect]->BeginPass(i);
for (DWORD j=0; j<nMaterials; j++)
{
objDev->SetMaterial(&objMaterial[j]);
if (objTexture[j])
{
objDev->SetTexture(0, objTexture[j]);
if (dxEffect[iEffect]->IsParameterUsed("tText", effTechnic[iEffect]))
dxEffect[iEffect]->SetValue("tText", &objTexture[j], D3DX_DEFAULT);
}
objMesh->DrawSubset(j);
}
dxEffect[iEffect]->EndPass();
}
dxEffect[iEffect]->End();
return true;
}
void cObj::loadMeshFromFile(char* filename, char* texturename)
{
nMaterials = LoadMesh(filename, objDev,
&objMesh, &objTexture,
texturename, &objMaterial);
}
ПРИЛОЖЕНИЕ 4. ПРОГРАММНЫЙ КОД ДЛЯ DXGRAPH
Заголовочный файл:
#include "d3d9.h"
#include "d3dx9.h"
#include "dxObj.h"
const int nObjects = 20;
const int mxEFFECTS = 50;
class GraphicModule
{
private:
float vAngle;
ID3DXEffect *objEffect[mxEFFECTS];
TCHAR *objTechnic[mxEFFECTS];
IDirect3DDevice9 *pDevice;
cObj *obj[mxEFFECTS];
IDirect3DVertexDeclaration9 *objVertex;
public:
GraphicModule(IDirect3DDevice9 *objDev);
~GraphicModule();
void initSceneObj();
bool initObj(int type, int index);
void loadShader(const char* filename, int index);
void renderAll();
};
Файл исходного кода:
#include "dxGraph.h"
const int cur_nObjects = 1;
GraphicModule::GraphicModule(IDirect3DDevice9 *objDev)
{
pDevice=objDev;
vAngle=0;
initSceneObj ();
}
GraphicModule::~GraphicModule()
{
for (int i=0; i<cur_nObjects; i++)
{
delete obj[i];
}
}
void GraphicModule::initSceneObj ()
{
loadShader("room.fx", 0);
loadShader("chess.fx", 1);
initObj (typeROOM, 0);
initObj (typeCHESS, 1);
D3DMATRIX position = {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 10, 0, 1, };
obj[0]->setWorldPos(&position);
D3DXVECTOR4 *lp = new D3DXVECTOR4(20, 20, 0, 0);
obj[0]->setLightPos(lp, 0);
obj[1]->setLightPos(lp, 0);
}
bool GraphicModule::initObj(int type, int index)
{
obj[index] = new cObj(pDevice);
switch(type)
{
case typeROOM:
obj[index]->loadMeshFromFile("room.x", NULL);
obj[index]->setEffect(objEffect [0], 0);
obj[index]->setTechniс("PixelLight", 0);
break;
}
return true;
}
void GraphicModule::loadShader(const char* filename, int index)
{
if (filename==NULL)
return;
HRESULT hr = D3DXCreateEffectFromFile(pDevice, filename, 0, 0, 0, 0, &objEffect [index], 0);
if (FAILED(hr))
return;
}
void GraphicModule::renderAll()
{
float a=0.2f;
D3DMATRIX matWorld = {cos(a), 0, sin(a), 0, 0, 1, 0, 0, -sin(a), 0, cos(a), 0, 20, -10, 90, 1, };
pDevice->SetTransform(D3DTS_VIEW, &matWorld);
obj[0]->render(0);
pDevice->Clear(0, NULL, D3DCLEAR_STENCIL, D3DCOLOR_XRGB(255,255,255), 1.0f, 0x40);
for (int i=1; i<cur_nObjects; i++)
{
obj[i]->render(0);
}
}
Размещено на Allbest.ru
...Подобные документы
Общая характеристика игровых движков, история их создания и совершенствования, современное состояние и перспективы. Сущность и значение шейдерных эффектов, программирование данных программ. Механизм и этапы разработки 3D-приложения, его тестирование.
дипломная работа [2,2 M], добавлен 16.06.2011Обзор популярных игровых движков для разработки 2D и 3D игр, среды разработки и конструкторы компьютерных игр. Основные этапы и концепции разработки игровых программ под платформу Windows. Документация и современные методы управления рабочими группами.
курсовая работа [62,7 K], добавлен 11.01.2016Анализ существующих программ трехмерного моделирования. Сравнение программ для создания трехмерной графики. Технологии трехмерного моделирования в Cinema 4D. Проект создания текстовой анимации на основе инструментов "Organicball", "Formula" и "Cloud".
дипломная работа [2,4 M], добавлен 14.11.2017Разработка вычислительной системы обработки данных в реальном времени, состоящей из устройства ввода и ПЭВМ. Назначение данной разработки и основные требования к ее качеству и функциональности. Этапы создания данной системы и анализ результатов.
курсовая работа [223,5 K], добавлен 05.01.2010Основы программирования на языке VB.NET. Область применения трехмерных изображений. Форматы хранения пакетов инженерной графики. Преимущества трехмерного моделирования. Разработка программы по вращению трехмерных изображений на языках VB.NET и VRML.
курсовая работа [195,1 K], добавлен 11.03.2013Обзор и анализ предметной области. Актуальность проекта, сравнение аналогов, сферы применения. Виртуальная реальность: CAVE-системы, Leap Motion. Выбор методов построения системы. Обзор игровых движков. Использование баз данных. Разработка интерфейса.
курсовая работа [4,6 M], добавлен 30.06.2017История создания компьютерных игр. Обзор современных игровых жанров. Выбор используемых инструментов. Руководство пользователя. Разработка игры в жанре 3D шутера от первого лица. Конструктор игр Game Maker. Создание уровня с несколькими регионами.
курсовая работа [961,8 K], добавлен 22.06.2015Структура Android-приложений. Особенности игрового движка. Алгоритмизация и программирование. Список игровых состояний. Настройка, отладка и тестирование программы. Разработка руководства пользователя. Тестирование инсталляции и отображения элементов.
дипломная работа [4,5 M], добавлен 19.01.2017Особенности создания ряда игровых приложений, логической игры. Программное обеспечение простейшего калькулятора, генератора функций. Разработка элементов интерфейса простейшего графического редактора, электронной записной книжки, текстового редактора.
методичка [788,7 K], добавлен 24.10.2012Характеристика компьютерных игр и их влияние на формирование навыков Softskills. Геймификация как современный тренд в образовании. Обзор наиболее популярных языков программирования для создания игровых приложений. Техническое задание для приложения.
дипломная работа [928,4 K], добавлен 13.01.2023Принципы построения и программирования игр. Основы 2-3D графики. Особенности динамического изображения и искусственного интеллекта, их использование для создания игровых программ. Разработка логических игр "Бильярд", "Карточная игра - 50", "Морской бой".
отчет по практике [2,3 M], добавлен 21.05.2013Основания для разработки программы и ее назначение, внутренняя структура и компоненты, предъявляемые требования. Область применения и функциональное назначение, администрирование сайта. Разработка руководства пользователя. Работа с интернет-магазином.
дипломная работа [1,8 M], добавлен 02.11.2015Принципы визуального программирования. Создание программы, генерирующей звук через определенные промежутки времени. Visual Basic как средство разработки прототипов программы, для разработки приложений баз данных и компонентного способа создания программ.
лабораторная работа [1,1 M], добавлен 10.12.2014Анализ особенностей жанров и технологий видеоигр. Обзор средств разработки видеоигр. Требования к разрабатываемому программному обеспечению. Разработка архитектуры программы и пользовательского интерфейса. Бизнес-модель внедрения видеоигры на рынок.
дипломная работа [1,7 M], добавлен 25.06.2017Назначение компьютерной графики. Особенности трехмерной анимации. Технология создания реалистичных трехмерных изображений. Компьютерная графика для рисования на SGI: StudioPaint 3D. Пакет PowerAnimator как одна из программ трехмерной анимации на SGI.
реферат [25,7 K], добавлен 31.03.2014Исследование базовых концепций программирования приложений под операционную систему Windows. Изучение истории создания универсального языка программирования Си. Разработка графического пользовательского интерфейса. Обзор правил игры и алгоритма работы.
курсовая работа [58,2 K], добавлен 09.11.2012Назначение и область применения мультимедийных презентаций, их преимущества, правила создания и варианты использования. Назначение, основные возможности и группы инструментов среды Microsoft Power point. Процесс разработки базы данных "Деканат ВУЗа".
курсовая работа [348,3 K], добавлен 09.11.2010Особенности разработки модуля взаимодействия и приложений для мобильных устройств на базе Windows Mobile. Основные компоненты системы. Выбор протокола XMPP. Создание базы данных, тестирование и отладка системы. Программа, моделирующая аварийные ситуации.
курсовая работа [1,2 M], добавлен 05.11.2012Введение в Mutlimedia Fusion 2: понятие и общая характреистика, оценка возможностей и назначение, интерфейс, объекты и формы. Описание процесса и основные этапы создания компьютерной игры с помощью данного программного обеспечения, ее эффективность.
курсовая работа [1,6 M], добавлен 25.12.2011Пиковые нагрузки во время проведения турниров. Анализ существующих систем проведения соревнований роботов: Java Robocode, Pascal Robotwar, Snake Battle, Microsoft Robotics Developer Studio. Соревнования по программированию компьютерных игровых стратегий.
дипломная работа [3,7 M], добавлен 06.03.2013