* Sb    * Магазин Текущее время: 25 апр 2024, 13:07

Часовой пояс: UTC + 2 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 15 ]  На страницу 1, 2  След.
{ VISITS } Просмотры: 15796  Добавили в закладки Добавили в закладки: 0  Подписчиков Подписчиков: 0 
Автор Сообщение
 Заголовок сообщения: уроки по СДК
СообщениеДобавлено: 14 фев 2011, 14:34 
Не в сети
Сталкер
Сталкер
Продвижение:
27.8%

Зарегистрирован: 31 янв 2011, 20:27
В кошельке:
50.00

Сообщения: 367

Откуда: Бобруиск
Обращаемся за помощью


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: уроки по СДК
СообщениеДобавлено: 14 фев 2011, 14:39 
Не в сети
Мастер
Мастер
Продвижение:
29.3%
Аватара пользователя

Зарегистрирован: 05 май 2010, 14:48
В кошельке:
85.00

Сообщения: 2585

Откуда: Горки
Вообще-то есть раздел "Помощь новичкам"... :feel:
А так - всё, что есть, то и вылаживай, если оно полезно...

_________________
Хэдкраб-хэдкраб... Вот муж сидит, режется в сталкера. А я играю за аптечку - жмакаю вовремя кнопочку Ъ (С) http://bash.im/quote/397354


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: уроки по СДК
СообщениеДобавлено: 14 фев 2011, 14:42 
Не в сети
Сталкер
Сталкер
Продвижение:
27.8%

Зарегистрирован: 31 янв 2011, 20:27
В кошельке:
50.00

Сообщения: 367

Откуда: Бобруиск
Создание уровня, пошаговое руководство
В данном уроке попытаюсь рассказать об основах работы с Level Editor-ом пакета SDK, на примере создания простейшего уровня.
В пакете SDK уже довольно много готовой геометрии, которую можно размещать на своём уровне, но иногда хочется вставить что-то своё, это можно сделать, смоделировав объект в пакете 3D моделирования Maya или 3D Studio Max.
Создание геометрии
Научить работать в 3D редакторах я не смогу, поэтому подробно остановлюсь только на процессах установки и настройки плагина, текстурировании и назначении шейдеров геометрии.
Установка и настройка плагина
Установка для Maya
Установка плагина заключается в копировании:
• Всех файлов из папки scripts_plugins\scripts в папку C:\Documents and Settings\UserName\My Documents\maya\scripts
• Всех файлов из папки scripts_plugins\ver-ххх в папку C:\Program Files\Autodesk\Maya_ххх\bin
• Файла scripts_plugins\xray_path.ltx в папку C:\Program Files\Autodesk\Maya_ххх\bin

Установка для 3D Studio Max
Качаем плагин. Распаковываем архив, копируем содержимое папки plugin(именно plugin) в папку макса.
Настройка
Далее в официальном руководстве написано, что требуется диск Х, мы приложили батник для создания этого диска и т.д. Возможно кто-то согласится с таким вариантом, но я решил просто отредактировать файл xray_path.ltx и не мучатся с батником и диском.
Необходимо изменить только первые две строчки файла xray_path.ltx:
$server_root$ = false| false| e:\sdk\(это путь до папки в которой у вас находится SDK)
$local_root$ = false| false| e:\sdk\(это путь до папки в которой у вас находится SDK)
После некоторого шаманства заработало в таком виде:
$server_root$ = false| false| C:\Program Files\X-Ray SDK\level_editor\
$local_root$ = false| false| C:\Program Files\X-Ray SDK\level_editor\
Всё, можно пользоваться плагином.
Настройка единиц измерения
Для того, чтобы размеры объектов в редакторе совпадали с теми, что используются в X-Ray SDK, необходимо выполнить соответствующую настройку.
Настройка Maya
Для начала необходимо единицы измерения перевести в метры (по умолчанию в Maya 8.5 используются сантиметры). Делается это в 2 этапа:
• Заходим в меню Window -> Settings/Preferences -> Preferences. В открывшемся диалоге, в категории Settings, находим список Working Units -> Linear и выбираем Meter, как показано на скриншоте (шаг 1, шаг 2).
• Теперь, для удобства работы, в настройках камеры необходимо изменить дальность отображения с 10м на 1000м (смотри скриншот шаг 3)




Шаг 1: выбираем указанный пункт меню

Шаг 2: выбираем еденицы измерения - метры

Шаг 3: настраиваем камеру

Замечен глюк: после настройки камеры изображение может пропасть, в чём дело пока не разобрался, но ситуацию помогает победить выбор в меню камеры следующих двух пунктов:
• Panel -> Perspective -> New
• View -> Camera Settings -> View Compass
Настройка 3D Studio Max
Настройка заключается только в выборе в качестве единиц измерения метров.
• Заходим в меню Customize -> Units Setup... В группе Display Unit Scale ставим переключатель на Metric, в выпадающем списке ищем Meters.


Меняем единицы измерения

Моделирование
Для нашего простейшего уровня нам понадобится создать просто бокс в качестве террейна.
Создадим box размеров 50м*50м*0,1м.
Замечания и правила
• Вся геометрия должна быть создана в реальных мировых размерах (если стол в реальной жизни высотой 1 метр, значит его надо и в Maya делать высотой 1 метр, всё предельно ясно и просто)
• Bounding box персонажа имеет три состояния: стоя (1.8х0.7х0.7 в метрах), сидя (1.5х0.7х0.7 в метрах) и очень сидя (1.2х0.7х0.7 в метрах).
• Весь уровень должен быть не больше 150 тысяч треугольников.
• Сцена должна состоять из групп. Название группы формируется по такому принципу: mp_имяуровня_назвгеометрии. Например, в нашей тестовой сцене такие группы: mp_atp_terrain, mp_atp_buildings. В группе может находится как и один объект, так и несколько. Имена объектов внутри группы никоем образом не должны совпадать с именем группы. В переделах одной группы все имена должны быть уникальны.
• Шейп объекта должен содержать правильное имя. Формируется по такому принципу: объект - имя_объекта, шейп - имя_объектаShape
Текстурирование и назначение шейдеров
3D Studio Max
Открываем Material Editor(M) выделив один из образцов материала, открываем диалог Material/Map Browser, щелчком на кнопке Standart. Создадим новый материал XRayMtl, дважды щёлкнув по нему в списке.
Займёмся настройкой параметров материала. X-ray материал, кроме текстуры использует надстройку состоящую из трёх шейдеров - Engine, Compiler, Material.
• Engine - отображение текстуры в движке игры.
• Compiler - используется при компиляции уровня.
• Material - игровой материал (wallmark, sound и др.).
Для начала настроим шейдеры. В Material Editor-e разворачиваем свиток XRay Params. В выпадающих списках представлены различные варианты шейдеров. Более подробно параметры шейдеров рассмотрены в статье «Описание шейдеров XrayMtl». Для нашего примера ограничимся установкой следующих значений:
• Engine - default
• Compiler - default
• Material - material/asphalt

Создание нового материала XrayMtl

Настройка XRay шейдеров материала


Текстурирование заключается в назначении текстуры процедурной карте Diffuse Color. Вообще, в редакторе материалов (В свитке Maps) много процедурных карт, но X-Ray mtl поддерживает (экспортирует) лишь одну, указанную выше.
Экспорт
3D Studio Max
Для начала выделяем все объекты, которые мы хотим экспортировать в виде единого объекта, т.е. всё, что мы выберем сейчас в редакторе будет представленно как одна модель. В нашем случае это один box.
Переходим на командную панель Utilities, нажимаем кнопку More... В появившемся списке в самом конце видим XRay Export, выбираем, жмём ОК. После запуска модуля на панели появится новый свиток XRay Export, в списке Selected можно проконтролировать какие объекты выбраны, нажимаем кнопку Export Editor Object... cохраняем файл в папку {SDK folder}\import.

Запускаем модуль экспорта

Экспорт объектов
Импорт геометрии и текстур в пакет
При экспорте из редактора(Maya && 3D Max) мы получим файлы *.object.
Запускаем Level Editor и добавим нашу геометрию в Objects Library, делается это так: Objects -> Library Editor, откроется диалог Object Library.

Редактор нашёл текстуру
Для удобства создадим новую группу для наших объектов, щёлкаем в левой части окна ПКМ и выбираем Create Folder, переименуем в my_first_level. Выделяем группу, и нажимаем кнопку Import Object, ищём наши *.object файлы, после того как объекты добавлены можно посмотреть, как они примерно будут выглядеть в игре, для этого ставим галочку Preview и любуемся нашим объектом. Теперь можно закрыть диалог Object Library.
Если использовали свою текстуру, то её также надо добавить в пакет, Images -> Check New Textures. Данная команда заставляет редактор просмотреть папку SDK/Import и добавить новые файлы в Texture List, файлы должны быть в формате Targa(*.tga). Не меняя ничего в диалоге импорта текстур нажимаем ОК. Всё теперь наша текстура есть в списке текстур редактора. Можно переходить к следующему шагу.

Диалог Object Library

Создание группы для объектов



Диалог импорта текстур
Создаём уровень
Приступим к созданию уровня, начнём с расстановки объектов.
Расстановка объектов :)
Тутор пока незакончен, так что о подробной работе в редакторе, сохранении и компиляции читаем по ссылке ниже с шага 6
• Maya. Глава 1: Hello World или первый кубик.
Подключение уровня к игре
Чтобы уровень можно было создавать прямо из игры, его необходимо добавить в список уровней. Существует четыре случая, рассмотрим каждый.
SDK объединён с игрой
В данном случае надо только отредактировать файл gamedata\config\mp\map_list.ltx, вписав в каждой из секции [deathmatch], [teamdeathmatch], [artefacthunt] название своего уровня.
SDK не объединён с игрой, игра распакована
В данном случае надо также отредактировать файл gamedata\config\mp\map_list.ltx, вписав в каждой из секции [deathmatch], [teamdeathmatch], [artefacthunt] название своего уровня + скопировать содержимое папки [SDK folder]\gamedata\levels\название уровня\ в папку [STALKER folder]\gamedata\levels\название уровня\.
SDK не объединён с игрой, игра не распакована
Повторяем действия предыдущего случая, только папки надо будет создавать самому, файл gamedata\config\mp\map_list.ltx можно взять из папки [SDK folder]\gamedata\config\mp\map_list.ltx
SDK не объединён с игрой + использовались свои текстуры
В данном случае необходимо скопировать:
• Текстуры из [SDK folder]\gamedata\textures\user\ в папку [STALKER folder]\gamedata\textures\user\
• Файл [SDK folder]\gamedata\textures\textures.ltx в папку [STALKER folder]\gamedata\textures\


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: уроки по СДК
СообщениеДобавлено: 14 фев 2011, 14:46 
Не в сети
Сталкер
Сталкер
Продвижение:
27.8%

Зарегистрирован: 31 янв 2011, 20:27
В кошельке:
50.00

Сообщения: 367

Откуда: Бобруиск
Создание модели персонажа
Создание модели, ограничения
Создание 3d-модели персонажа и текстуры к ней не является темой данного урока.
Информации по принципам создания персонажей в Интернете достаточно, мы лишь ознакомим вас с ограничениями нашего движка.
Ограничения
• Персонаж должен находится в центре системы координат (см. пример из SDK)
• Модель персонажа создаётся в метрической системе измерений, размеры полностью соответствуют естественным размерам человека (
1.6 – 2 метра
)

Ограничения 3d-модели персонажа
• В движке игры нет строгого ограничения на количество треугольников, но для получения стабильного и высокого FPS применяются модели порядка 3000-5000 треугольников, при необходимости можно использовать и большее количество если это обосновано необходимо.
• 3d-модели персонажа должна не содержать ошибок в геометрии, потяжек текстуры и тонких длинных треугольников (см. исправление ошибок).
• Движок поддерживает
отзеркаливание текстуры
.

Отзеркаливание текстуры
• Модель должна быть с UV координатами,
XRay Shader’ом
и группами сглаживания.
• Обнулить все
трансформации
модели и удалить
history
, перед привязкой её к скелету
• Модель должна содержать один или более XRay Shader с параметрами показанными ниже, допустимо использование прозрачности, блеска и самосвечения. Описание возможных шейдеров смотрите в разделе Docs:Создание сцены в Maya

Базовый XRay shader на 3d-модели персонажа
Создание и настройка скелета, скининг, ограничения
• Создание скелета персонажа игры производится в пакете Maya стандартными средствами 3D пакета.
• Сцена может содержать несколько различных скелетов или моделей, экспорт в подобных случаях производится выделением необходимой модели и экспортом выбранного.
• Для использования анимаций из библиотеки игры, необходимо использовать скелет из SDK без изменений

Скелет персонажа используемый в игре
• Joint’ы не должны содержать scale, rotate, transform. Перед финальным созданием скелета модели, проведите очистку всех перечисленных трансформаций.
• 3d-модели должна быть присоединена к скелету с использованием Smooth Bind

Smooth Bind
• На одну вершину не должно воздействовать более чем 4 joint’а. Общий вес суммарного влияния joint’ов на vertex при экспорте нормализуются до 1, при скининге будте внимательны при назначении весов.
• В движке игры нет строгого ограничения на количество используемых костей скелета в одной модели, но для получения стабильного и высокого FPS желательно использовать возможно меньшее количество костей, например стандартная модель персонажа игры использует 44 кости.

Стандартный скелет персонажа
Анимация
• Плагин экспорта поддерживает все доступные средства 3D пакета необходимые аниматору для создания качественной анимации: локаторы, инверсная кинематика, ограничители, применение физики во время анимирования, всё это и многое другое допустимо для создания анимаций и прекрасно понимается движком игры.
• Нет ограничений на способ хранения анимации модели, это может быть и внешний файл, и хранение всех анимаций в одной модели, всё зависит от предпочтений аниматора.
Экспорт модели
• При экспорте модели заранее проверьте саму модель и созданный скелет на наличие или отсутствие ошибок.
• Для экспорта модели выделяем объект, в нашем случае сталкер, затем идём в меню File -> Export Selection…

Экспорт персонажа
• Важно давать модели имя, аналогичное тому что и будет использоваться в игре, это в дальнейшем упростит работу с данной моделью у самого аниматора, нет необходимости вспоминать имя модели в редакторе, но и тех кто производит настройку конфигурационных файлов и установку модели в игру.

Имя экспортируемого объекта
Экспорт анимации
• Перед экспортом анимации необходимо внести изменения в настройки Maya, иначе анимация не будет экспортироваться.

Путь к настройкам Maya

Настраиваемые параметры
• Плагин экспорта использует текущие значения таймлайна 3D-пакета, при желании можно использовать возможности скриптового движка 3D пакета, и практически полностью автоматизировать процесс экспорта.

Текущий таймлайн Maya
• Для экспорта анимации выделяем анимированный объект, в нашем случае сталкер, затем идём в меню File -> Export Selection…

Экспорт анимации
• Для удобства введите читабельное имя анимации, это в дальнейшем облегчит работу с моделью в редакторе.

Имя анимации
Импорт модели персонажа в ActorEditor
Импорт анимации в ActorEditor
Редактирование анимации персонажа, экспорт в единый файл анимации
Настройка модели персонажа в ActorEditor’е, назначение анимаций
Экспорт модели персонажа в ActorEditor’е


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: уроки по СДК
СообщениеДобавлено: 14 фев 2011, 14:48 
Не в сети
Сталкер
Сталкер
Продвижение:
27.8%

Зарегистрирован: 31 янв 2011, 20:27
В кошельке:
50.00

Сообщения: 367

Откуда: Бобруиск
Добавление аномалий и костров
Добавление аномалий
Первый способ
• Edit Mode -> Group ->Select
• Выбираем необходимую аномалию.


Выбор группы из библиотеки
• Жмём Add и добавляем в сцену.

Добавление группы в сцену
Второй способ
• Добавляем Spawn элемент аномалии

Spawn элемент аномалии Gravi
• Переименовываем аномалию

Переименовываем аномалию на gravi_zone_average_1
• Для определения области поражения аномалии используются Shape элементы

Создания shape'а аномалии
• Выбираем нашу аномалию gravi_zone_average_1 в сцене и соединяем её с Shape элементом

Присоединяем аномалию к shape'у
Добавление костров
• Выбираем группу костра

Выбор группы из библиотеки
• Жмём Add и добавляем в сцену.

Добавление группы в сцену
Вносим костры и аномалии в список зон карты
• Открываем группы

Открываем группу костра
• Находим в Object List'е зону нашего костра

Зона нашего костра - zone_flame_small_0001
• Вносим аномалию gravi_zone_average_1 и зону костра zone_flame_small_0001 в список зон карты

Редактирование custom data карты
Список зон уникален для каждого типа сетевой игры
[deathmatch_game_anomaly_sets]
,
[teamdeathmatch_game_anomaly_sets]
и
[artefacthunt_game_anomaly_sets]
соответственно.
[deathmatch_game_anomaly_sets]
permanent = <имя_зоны_1>, <имя_зоны_2>, …
set0 = <имя_зоны_3>, …
set1 = <имя_зоны_4>, …
set2 = <имя_зоны_5>, …

setn = <имя_зоны_n>, …
В разделе permanent описываются зоны которые будут работать постоянно. Разделы set0, set1, set2, ..., setn включаются поочерёдно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: уроки по СДК
СообщениеДобавлено: 14 фев 2011, 14:51 
Не в сети
Сталкер
Сталкер
Продвижение:
27.8%

Зарегистрирован: 31 янв 2011, 20:27
В кошельке:
50.00

Сообщения: 367

Откуда: Бобруиск
Создание ломающегося предмета(дневник исследования)
Структура статьи
Раз это дневник, а не полноценная статья, то структура несколько странная получилась. Если интересен сам процесс исследования, то можно читать по порядку, иначе можно сразу перейти к секции Создание модели.
Введение
Ну что, я пока тоже не знаю как это сделать, но на то это и дневник, чтобы записывать сюда ход исследований. Разбираться буду на каком-нибудь примере. Возьму для разбора деревянный ящик.
Поехали
Первым делом решил посмотреть, что из себя представляет модель деревянного ящика, нашёл две модели:
• gamedata\meshes\objects\dynamics\box\box_wood_01.ogf
• gamedata\meshes\physics\box\box_wood_01.ogf
Просмотрев модели в этих директориях, остановился на gamedata\meshes\physics\box\box_wood_01.ogf. Хотя в обоих случаях присутствует папка \prt\, из названия ясно, что это части объектов(part), т.е. их также необходимо отдельно моделить, жаль, что xray + ode не считают это в динамике. Хотя для стекла-то нет частей, через опыты понятно, что стекло ломается по полигонам. Ну да ладно разговор не об этом.
Есть целая модель, есть части, значит... Значит надо как-то указать эти части, правильно конфиг объекта. Иду искать. Нахожу:
• gamedata\config\models\objects\box_wood_01.ltx
Меня заинтересовала секция:
[destroyed]
physics\box\prt\box_wood_01_prt1
physics\box\prt\box_wood_01_prt2
physics\box\prt\box_wood_01_prt3
physics\box\prt\box_wood_01_prt4
physics\box\prt\box_wood_01_prt5
physics\box\prt\box_wood_01_prt6
physics\box\prt\box_wood_01_prt7

[autoremove_parts]
time = 15
Значит со структурой ломающихся объектов разобрались.
Создание модели
Теперь перенести бы это на процесс создания, первым делом попробуем подобрать необходимые шейдеры. Пошёл смотреть «Описание шейдеров XRayMtl.» Добавлю, что:
• Engine - отображение текстуры в движке игры.
• Compiler - используется при компиляции уровня.
• Material - игровой материал (wallmark, sound и др.).
Выбрал:
• Engine - models/model(Основной шейдер для динамических объектов)
• Compiler - def_vertex(Основной vertex shader, раз физический объект, вершинный шейдер значит по любому нужен)
• Material - objects/large_furnitura(Материал деревянных изделий)

Update
Так как объект не компилится стандартными средствами, то шейдеры Compiler и Material можно не указывать

Попробую повторить тот же самый ящик, запускаю макс, быстренько моделю подобие ящика и частей на которые он будет распадаться. Для всего ящика ставлю настройки шейдеров, которые написаны выше, для частей же просто как для деревянный досок(«Пресеты XRay материалов»).

Тестовый ящик
Экспортирую ящик и каждую из частей отдельно. Далее после экспорта в ogf с занесением в custom data модели почти копии файла gamedata\config\models\objects\box_wood_01.ltx и спавна в редакторе как destroyable_objects, натыкаюсь на кучу ошибок в редакторе, толи что-то неправильно, толи...

Update: При загрузке уровня получаю следующий лог:
stack trace:
001B:0049B5FF XR_3DA.exe, CCF_Skeleton::CCF_Skeleton()
001B:01CC39FF xrGame.dll
001B:01C8AA2B xrGame.dll
001B:01C82A34 xrGame.dll


Добавление костей
Хм, после раздумий делаю выводы, что надо делать также как и оружие или персов. Ну что ж будем делать.
Открываю сцену в максе, добавляю 2 кости: Create-> System -> Bones. Первую назову link, вторая может называться хоть как, без разницы.

Инициализация скелета
Теперь применю к мешу ящика модификатор Physique. Проинициализурем скелет, нажатием на кнопку Attach to Node и выбрав кость link.
Теперь небольшое отступление по поводу этого модификатора. Раскрыв свиток модификатора, мы видим там следующее:
• Envelope – Настройка веса вершин и привязке к кости с помощью огибающих
• Link – Настройка параметров костей
• Bulge – Редактор выпуклостей
• Tendons – Редактор сухожилий
• Vertex – Настройка типа вершин и привязка к кости.
Но меня интересует только Envelope и Vertex. Настрою привязку вершин к кости, учитывая, чтобы ни одна вершина не осталась непривязанной. Иду в Vertex.
Типы вершин:
+ Деформируемые вершины (мягкие)
+ Недеформируемые вершины (Твердые)
+ Пустые вершины без весa и привязки к кости
Сам ящик твердый, и поэтому мы используем для него rigid вершины. Счала надо очистить вершины от других костей, нажимаем select, выделяем вершины, переключаемся на синие вершины, нажимаем Assign to link и тыкаем на желтую полоску кости link. Вес и привязка сняты, теперь переключаемся на зеленые и опять тыкаем на линк, привязка назначена.
Теперь экспортируем модель нашего ящика через Export Skin, а части простым экспортом(Export Editor Objects). Я сохранил модель ящика под именем test_box, а частей как test_box_prt{номер части}.
Дальнейшая настройка и конвертирование в *.ogf


Настройка Actor Editor-a
Запускаем Actor Editor, для удобства работы изменим некоторые настройки программы, а именно Preferences -> Objects -> Skeleton, поставим все галочки. Теперь загрузим наш объект(File-> Load...).
Настройка объекта
Первым делом настроим наш объект в целом, как я уже говорил в секции про исследование, что части объекта задаются конфигом. Для первого своего разрушаемого объекта я взял конфиг от ящика(gamedata\config\models\objects\box_wood_01.ltx), скопировал его, переименовал в test_box.ltx, далее немного изменил его в соответствии со своей задумкой.
Поменял только пути к частям:
Оригинал(box_wood_01.ltx) Наш конфиг(test_box.ltx)
[destroyed]
physics\box\prt\box_wood_01_prt1
physics\box\prt\box_wood_01_prt2
physics\box\prt\box_wood_01_prt3
physics\box\prt\box_wood_01_prt4
physics\box\prt\box_wood_01_prt5
physics\box\prt\box_wood_01_prt6
physics\box\prt\box_wood_01_prt7 [destroyed]
physics\test_box\prt\test_box_prt1
physics\test_box\prt\test_box_prt2
Остальное пока оставил без изменений. Загрузим получившийся конфиг в User Data объекта, т.е. в Object Item выбираем Object, в нижней части Item Properties, щёлкаем по полю User Data. Откроется диалог в котором нажимаем Load и ищем наш конфиг.
Всё с настройкой объекта закончили, перейдём к настройке геометрии.
Настройка геометрии
В Object Items развернём свиток Bones, в нашем случае будет одна кость с имненем link, выбираем её. В свойствах пункт Bones -> Global -> Generate Shape нажимае All. Идём ниже по списку:
• Bones -> Bone -> Game Material указываем материал для нашей кости. Материал выбирается только из папки objects\, в соответствии с тем, какой материал хотим для нашего объекта, смотри «Описание шейдеров XrayMtl». В нашем случае я выбрал objects/large_furnitura, что соответствует материалу деревянных изделий.
• Bones -> Bone -> Mass - масса нашего объекта, я поставил 2.
• Bones -> Bone -> Shape -> Type - форма геометрии, в нашем случае Box.
Далее нужно настроить геометрию так, как хотите, чтобы ваш объект коллизил с другими, т.е. после того, как type установлен в Box, должен появиться белый полупрозрачный шейп, это коллижен для пули и физики. Можно дополнительно редактировать шейп, например инструментом Scale.
Всё наш ящик готов к экспорту в ogf.
File -> Export -> Export OGF... сохраняем файл как: gamedata\meshes\physics\test_box\test_box.ogf
Теперь поочерёдно загружаем части нашего объекта, ничего не меняя экспортим их как: gamedata\meshes\physics\test_box\prt\test_box_prt{номер части в соотв. с конфигом}.ogf
Ставим наш ящик на карту
Наш ящик ставится, как энтити destroyable_object. Переводим редактор в режим Spawn Element и добавляем на карту энтити physics/destroyable_object.
Далее в свойствах энтити устанавливаем нашу модель в свойстве Model/Visual. Всё можно компилировать уровень и идти ломать её, вот как это примерно выглядит в игре.



Что дальше?
А дальше постараемся вспомнить все ролики, ФО и постараемся восстановить всё, что видели в них. Шкаф с отпадывающими дверками, "самодельные" бьющиеся лампы и т.д.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: уроки по СДК
СообщениеДобавлено: 14 фев 2011, 14:53 
Не в сети
Сталкер
Сталкер
Продвижение:
27.8%

Зарегистрирован: 31 янв 2011, 20:27
В кошельке:
50.00

Сообщения: 367

Откуда: Бобруиск
Учимся подвешивать объекты

Данный урок невозможно воспроизвести на пакете MP SDK версий 0.0.3 - 0.0.4.
Необходимо установить обновление: MP SDK Update v 0.1.
Введение
Сегодня мы научимся делать что-нибудь висящее. Итак, мы готовы что-нибудь повесить, для этого нужно: LevelEditor, какая-нибудь карта(я взял пример АТП), две не очень кривых руки, и обязательно голова с присутствующими внутри мозгами. Ну что-ж, сегодня мы будем вешать… нет, не нашего соседа (но если у вас есть его модель...), сегодня мы повесим лампу, да, обычную лампу на проводе.
Приступаем к работе
Легким движением руки, аккуратно запускаем наш Левел Едитор, и открываем карту. Если вы еще незнаете как перемещатся по едитору то говорю:
• Shift + mouse1 = влево, вправо, вперед, назад.
• Shift + mouse2 = вверх, вних
• Shift + mouse2 + mouse1 = вращение.
Находим укромный уголок или место куда мы в дальнейшем повесим нашу лампу или соседа :)


Ищем подходящее место



Выбор ентити
Теперь нам нужно добавить объект. Делается это так, В свитке Edit mode заходим в Spawn Elements-> Physics-> Hanging Lamp. А если хотите подвешать простой объект то юзайте Spawn Elements-> Physics-> Object Это и есть основа нашей будующей болтающейся безделушки. Спавним ентитию на землю, предварительно нажав кнопочку Add.

Добавить объект

Переместить объект
Теперь нам нужно переместить нерадивую лампу(или соседа) в место предполагаемого повешенья. Делается это так, на панели инструментов нажимается кнопка Move. Далее ентитию можно перемещать по трем осям:
1. X - лево, право
2. Y - вверх, вниз
3. Z - вперед, назад
4. ZX - лево, право, вперед, назад
На самом деле направление перемещения зависит от ориентации камеры, поэтому смотрим в левом нижнем углу на оси. Прим. редактора --Neo][ 10:52, 15 мая 2007 (MSD) Еще объекты можно вращать, по тем же пресловутым осям Вот, мы поставили нашу ентити примерно как нам нужно, почему примерно, да потому что окончательно мы поставим, когда будет выбрано тело. Вы спросите как его выбрать? Для этого откроем свойства объекта Hanging Lamp, чтобы это сделать щёлкаем по объекту ПКМ и выбираем Properties(Либо нажатием клавиши "Enter", прим. редактора).


Свойства объекта
Поля которые нас интересуют подчёркнуты на картинке. Первое поле Visual, щелчком по нему открываем диалог Select Visual, в котором выбирается модель, которая будет болтаться. Я выбрал lampa_galogen_4.


Диалог Select visual



Диалог Select Skeleton Bones


Свойства лампы
Следующее поле это Fixed, щелчком по нему открываем диалог Select Skeleton Bones, в котором выбираем зафиксированные кости. Т.е, эти кости стоят как вкопанные, а остальные свободно болтаются в пределах положенных лимитов. Соотвественно выбираем кости, представляют из себя места крепления для объекта.
Следующее поле, которое нас интересует, это Physics, ставим галочку напротив него, если этого не сделать, то наша лампа не дернется даже под дулом пистолета :) Еще можно поставить Cast Shadow, чтобы свет лампы отыгрывал тени.

В свитке Lights > Main щёлкаем по полю Bone, откроется уже известный нам диалог Select Skeleton Bones, в котором выбираем кость, к которой прикрепится свет. Выбираем bone_lamp.
Завершение работы
Теперь когда мы видим модель лампы, свет будет светить оттуда, откуда надо, а не из провода, и наша лампа не упадет на землю, потому что мы зафиксировали кости, можно перенести лампу туда где она будет преспокойно болтаться. Главное чтобы лампа не залазила в игровую геометрию, чтобы это сделать можно отключить Moving Snap Toggle, это уберёт привязку и лампу можно будет деликатно пододвинуть туда, где ей будет удобнее болтаться. Если же оставить лампу в геометрии то при выстреле вашу карту наполнят звуки трепыхающегося мяса. Дело в том что лампы по своей природе очень умные, они знают что нахождение любого физического объекта в геометрии может привести к Penetration Error а потом и к крэшу, поэтому лампа начинает отчаянно высвобождаться из полигонального капкана.
Вот все расставлено, настроено, ничто нигде не торчит и издавать мясные звуки потом не будет Выглядеть это должно примерно так


Всё готово
Теперь нужно отбилдить и откомпилить нашу карту:
• Лезем в Scene > Options, свиток Build options, поле level path, в столбце value пишем имя нашей карты.
• Далее лезем в Compile > Build. Сборка карты завершена.
• Далее делаем батник, содержание:
@start bins\compiler\xrLC.exe –f “имя которое вы вписали в level path”
Карта откомпилирована. Пришло время глянуть на наши труды. Делаем батник:
bin\xr_3da.exe -start server(<имя уровня>/deathmatch) client(localhost)
УРАААА! Свет горит, лампа висит, и если в нее стрельнуть то соответственно тухнет А все-таки сосед смотрелся бы тут лучше : )


Результат в игре


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: уроки по СДК
СообщениеДобавлено: 14 фев 2011, 14:54 
Не в сети
Сталкер
Сталкер
Продвижение:
27.8%

Зарегистрирован: 31 янв 2011, 20:27
В кошельке:
50.00

Сообщения: 367

Откуда: Бобруиск
Освещение игрового окружения – как и почему
Теория о том, как осветить ваш уровень. Как интересно настроить и на что обратить внимание. Вольный перевод и дополнения к статье book.hourences.com/booklighting.htm рекламирующей книгу
Введение
Освещение – это один из наиболее важных и влиятельных элементов в игровом окружении. Он имеет силу создать или разрушить стиль и атмосферу. Освещение часто забывается или недооценивается. Дизайнеры часто дабавляют его для галочки, без особой любви. В прошлом это было отчасти обусловлено слабым игровым железом и отсутствием надлежащей поддержки в игровых движках, но эти оправдания уже не проходят. Освещение также важно, как и геометрия. Без освещения всё созданное всего лишь набор трёхмерных объектов. Освещение имеет свойство вдыхать жизнь в группу объектов и поднимать их на новый уровень качества. Цель этого лежит дальше, чем просто дать игрокам возможность видеть, где они идут. Это создаёт атмосферу это делает места смотрящимися страшно/уютно или тепло/холодно. Это добавляет трём измерениям чувство объектов и это создаёт композицию и баланс для глаз. До сих пор понимания этого нету у многих игр и уровней, они до сих пор используют белое освещение везде.
Источники света
Самое базовое правило освещения – освещение всегда требует наличие источника освещения. Намного важнее, и это следующее правило: свет должен создаваться источником. Не возможно иметь света на локации без источника его появления, как в этом плохом примере:


Пример плохого тона (не повторяйте!).
На данный момент в коридоре достаточно света, но невозможно определить, откуда он берётся. Всё это не правильно и смотрится фальшиво.
Также необходимо избегать дисбаланса степени освещения и размерами его источника. Например, небольшого источника освещающего целую комнаты или коридор, как в этом плохом примере:


Пример плохого освещения: источник слишком мал для такой интенсивности света.
Сохраняйте это в пропорции!
Освещать может что угодно: маленькие или большие лампы, висящие на стенах или с потолка, луна или солнце, кристаллы, лазеры и другие типы хайтек лучей, огонь, зеркала, магические эффекты, водные поверхности отражающие свет, лава или радиоактивные отходы и тп. Всё что может светить – это достойный внимания источник света, со своими характеристиками.
Тоже самое и с яркостью самого источника. Если свет очень яркий, то источник не должен быть тусклым. Он должен быть ярким и, если возможно, иметь эффекты подобные свечению (glow) чтобы подчеркнуть яркость.


Слева плохое дизайнерское решение, справа – хорошее.
С лева плохой пример, потому что лампа смотрится отключенной, в то время как окружение продолжает принимать её освещение. Яркость источника света и яркость освещения окружения должны быть сбалансированы и равны. С этим связан следующий важный момент. Показывайте игрокам – откуда идёт свет. Область возле источника должна смотреться ярче:


Примеры плохого (слева) и правильного (справа) оформления освещённости областей возле источников.
Первый пример – плохой, второй – хороший. Первый плохой потому, что вся локация имеет равное освещение, что странно. Это не ощущается как освещение действительно идущее из лампы. Освещение должно быть значительно ярче возле источника, чем в десяти метрах дальше в углу. Оно должно спадать с отдалением от источника. Это свойство поможет сделать уровень не только более реалистичней, но и помочь со световой композицией. Показывай непосредственное влияние одного элемента на другой!
Цвета
Наиболее сложное правило освещения – это оцветнёное освещение – обязательное и абсолютное требование в практически всех ситуациях. Цвета могут сделать или разрушить композицию; они выражают атмосферу и эмоции ассоциирующиеся с локациями и они легко делают окружение более интересным и приятным для взгляда.
Подавляющее большинство световых источников в мире, освещающих его, так или иначе имеют цвет. Поэтому не очень реалистично помещать белый источник в окружение. Например лампа может излучать жёлтый цвет, потому что её окружает жёлтое стекло. Или, возможно, это старая лампа и стекло начинает изменять цвет на соответствующий окружающей её мокрой среде. Или, возможно, свет падает на жёлтую стену и отражаясь от неё приобретает такой же жёлтый оттенок.
Такое распространение носит диффузный характер и, к сведению, до сих пор нету игр которые могли бы похвастаться коррекцией на получение диффузного распространения света.
И поэтому, до тех пор пока технология не станет доступна, приходится работать лишь с одним цветом, который освещает лишь собой вместо того, чтоб получить итоговые оттенки после того как он провзаимодействует с окружающей атмосферой и материалами. Пока это не реализовано из-за технологических ограничений. Отсюда следует, что если не добавить цвета, то результат будет весьма пресным и фальшивым.
Другой аспект освещения, это температурные оттенки. Эта теория говорит о том, что свет – энергия и более сильный свет несёт в себе больше энергии, что и есть большее тепло. Сила темпиратурного воздействия:


Оттенки темпиратур.
1600K – это заря и восход солнца 1800K – свеча. 2800K – это обычный свет, 5000K – полдень и так далее. Таким образом шанс того, что свет в игровом окружении будет чисто белым очень мал.
Также стоит заметить что красный на самом деле холоднее голубого. Дуга сварки – голубая потому что она горячее, чем, например, обычный оранжевый огонь.
Тёплый – голубой и холодный – красный – это противоречие тому, что вы будите читать о теплоте цветов. Помните, что голубой только с научной точки зрения горячее, чем красный. Эмоционально красный, вероятно, ощущается теплее голубого. Базовые цветовые ассоциации – это основа чувств. Когда что-то горячо это будет светиться красным в то время, как холодные вещи, такие как вода и лёд – будут голубые. Это определяет перспективу нашего использования этих цветов. Это очень влиятельные клише.
Ещё причина для использования цветов – это композиция. Факт: в большинстве случаев одного цвета не достаточно, необходимо минимум два цвета, иначе создание контраста будет не возможно. Если используется только один цвет освещения, то очень важный цветовой контраст будет потерян и результат может быть весьма пресным.


Пример использования удачного (справа) и неудачного (слева) контраста в освещении.
Переходы очень важны для формы композиции и один цвет не может дать необходимых переходов. Использование цветов необходимо для того, чтобы придать правильный контраст к всё ещё сливающимся объектам. Гармония – легко запоминающийся мир, когда её частью является освещение. Перед тем как быть готовым к работе с цветом, вам необходимо понять – как они работают. Здесь большая разница между обычного использования цветов для текстур и освещения ими локации.
Освещение – это результат RGB, расшифровываемое как Красный (Red), Зелёный (Green) и Голубой (Blue) цвета.
С другой стороны живопись, карандаши, принтеры и тп – это CMY. Они оперируют тремя полностью отличающимися основными цветами: Голубым (Cyan), Пурпурным (Magenta) и Жёлтым (Yellow). Или, просто говоря, голубой красный и жёлтый.
Настоящее отличие в двух системах заключается в принципе создания ими других цветов (то как они смешиваются). Конечный (если смешать все три цвета) CMY цвет будет тёмно чёрный. Думаю объяснения того, что происходит со всеми цветами когда примешать к ним ещё какой-нибудь возвращают нас в школу, поэтому останавливаться на этом не будем.
Другая система RGB является частями белого цвета. Смешивание этих цветов в одной точке, приводит к тому, что эта точка становится белой.
Важнейшая разница для нас в этих системах то, что какая-то точная цветовая комбинация которая хорошо работает в рисовании никогда не сработает в освещении! И наоборот. Использование цветовых комбинаций работающих в CMY для освещения не возможно по двум причинам.
Во-первых, любой цвет — это смесь из трёх базовых цветов. RGB смешивает цвета иначе чем CMY, поэтому и результирующие цвета в этих системах будут отличаться. Например, если голубой и красный в RGB, то мы получим фиолетовый цвет, а в CMY это будет уже немного другой оттенок.
Во-вторых, освещение RGB просто не имеет всех цветов, которые есть в CMY. Конвертирование цветов в этих системах не всегда доступно. В RGB системе нет тёмно жёлтого, тёмно красного и тп. Вы не можете создавать тёмных цветов так как освещение всегда — светлое. Конечно не зависимо от системы смешивания цветов можно уменьшить насыщенность или интенсивность, но ни как не добавить тёмность цвета. Чёрного света не бывает.
Это может говорить о том, что освещение использует более простые цвета и имеет больше ограничений и вся эта ограниченность в цвете и блее грубые переходы из-за недостатка тёмных цветов.
Что делает это даже более тяжелее — это то, что половина всех этих доступных цветов практически никогда не получаются хорошо в большинстве тем и небольшые переходы в тоне или насыщенности едва ли достойны внимания. Цвета по типу фиолетового или розового практически не пригодны к использованию в большинстве тем и стилях, потому что они либо не нужны, либо не смотрятся натурально. Результат их использования даст скорее несколько причудливый и нереальный диско стиль нежеле чем чтото ещё. Палитра цветов пригодных к использованию очень мала и главным образом состоит из жёлтого, оранжевого, синего, голубого, красного и очень немногой доли зелёного.
Таким образом ни когда в освещении не используйте логическое смешивание цветов, полагая получить из яркого и тёмного цветов нечто среднее между ними по тёмности на освещаемой области (получим лишь эффект сложения яркости этих двух источников). Темных светов не создать! Эффект смешивания двух источников света можно заметить при излучении ими разных цветов или если они имеют разную насыщенность.Попытки создать контраст используя тёмный и яркий источник одного цвета также не будут успешными, они дадут скорее странный эффект, когда один источник светит сильнее, другой слабее, чем он мог бы.
И так теория цвето была объяснена, и пришло время применить эти знания на практике.
Цвета продолжение: композиция и отбор вариантов
Использование цвета предлагают различные способы контраста и ощущения. Это необходимо понять и использовать их корректно в создании интересного и уместного освещения уровня.
Практически всегда необходимо использовать больше чем один цвет света на уровне. Забегая вперёд, можно сказать что ключ к интересному освещению и его композиции — создание хорошо сбалансированного контраста. Плохо как избыток, так и недостаток контраста.


Неудачные варианты контраста.
Никакой из примеров не смотрится хорошо. Первая картинка слишком однообразна и скучна, так как всё кругом одного цвета. На другой же наоборот переизбыток цветов — что не смотриться гармонично, скорее как случайный набор цветов. Это не желательно.


Сканлайны.
Избегайте слабой или очень грубой композиции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: уроки по СДК
СообщениеДобавлено: 14 фев 2011, 14:56 
Не в сети
Сталкер
Сталкер
Продвижение:
27.8%

Зарегистрирован: 31 янв 2011, 20:27
В кошельке:
50.00

Сообщения: 367

Откуда: Бобруиск
Создание terrain плоскости (асфальт, земля и трава).
Внимание
Данный тутор не является правильным. Этот вариант создания terrain поверхности удобен только при создании карт с качеством сборки - draft. При изменении качества, могут появится проблемы:
-Долгое компилирование
-Слишком детализированная поверхность
В ближайшее время исправлю эту статью. Приношу свои извинения.
Инвентарь
— Adobe Photoshop
— 3d редактор
— SDK
Создание Текстур
В Photoshop’е создаем новый холст размером 1024x1024 пикс. (также возможны и другие размеры, в зависимости от геометрии создаваемой плоскости). Здесь можно отобразить такие детали ландшафта, как асфальтовая дорога, овраг, яму, лужу и др. Для рисования terrain’а очень удобно использовать уже готовые рисунки из игры + применять небольшие навыки пользования Photoshop’ом . А именно использовать такой инструмент, как «печать» (печать узором); кто не умеет — может нарисовать что-нибудь и попроще.
Сохраняем этот файл в трех экземплярах, задавая разные имена, в формате .tga (32 bin). Так как нам необходимо отразить три типа поверхности (асфальт, землю и траву), сохраняем их с пометками, чтобы далее не запутаться. (Пример: terrain_test_asph, terrain_test_earth, terrain_test_grass).
P.S. При рисовании текстур необходимо учитывать масштаб создаваемой поверхности, иначе могу возникнуть проблемы с размерами. «Создавали 4 полосную дорогу, а получилась тропинка».

Нарисованная текстура (справа)
Моделирование
В 3d редакторе создаем три одинаковые (в моем случае квадратные) плоскости. Далее начинаем разбираться с материалами. Нам необходимо создать 3 материала, к каждому из которых будет присвоен один из наших рисунков, а эти материалы к нашим плоскостям. Теперь настраивая Xray материал, сверяемся с нашими пометками, то есть: плоскость с текстурой terrain_test_asph – материал асфальта, плоскость с текстурой terrain_test_ earth – материал земли, а плоскость с текстурой terrain_test_grass – материал травы.(Пресеты XRay материалов)

Создание трех плоскостей.


Асфальт
Берем ту плоскость, к которой применены настройки и текстура асфальта(asph), вырезаем и выделяем нужные нам полигоны и с помощью инструмента Extrude (выдавливание) поднимаем их на несколько сантиметров. Лишние полигоны можно удалить.

Вырезание полигонов

Выдавливание асфальта

Удаление полигонов
Яма
Теперь выбираем плоскость с текстурой и настройками земли(earth) и создаем из нее в нужном нам участке небольшое углубление, а края ямки необходимо слегка приспустить, чтобы не было наложения. И также лишние полигоны удаляются. Но так как наша яма уходит ниже уровня «земли» - в плоскости с текстурой и настройками травы(grass) вырезаем ненужные полигоны.

Вырезание полигонов.

Моделирование ямы

Вырез
Сборка
Осталось только совместить наши детали так, что бы не было никаких дыр, и экспортировать в формат .object.


Совмещение

Работа с SDK
Первое, что надо сделать - это импортировать наши текстуры, но при этом задавая им определенные свойства.

Импорт текстур
У всех трех в поле Type присваиваем значение Terrain и в поле Details\Use as Diffuse – ставим галку. Далее в поле Texture для terrain_test_asph я выбрал текстуру detail\detail_grnd_asphalt, для terrain_test_grass - detail\detail_grnd_grass, а для terrain_test_earth - detail\detail_grnd_earth.
В поле Scale задается степень детализации текстуры. Чем больше число – тем будет меньше детальный рисунок и более детализированной основная текстура (тут уж как с солью – на глаз). Выберем для примера значение на каждой текстуре «20».

Теперь осталось импортировать нашу плоскость, добавить нужные нам объекты на карту и скомпилировать уровень.

Итог




P.S.
С помощью нашей текстуры terrain’а очень удобно создавать текстуру для детальных объектов.(Подробнее здесь>>Глобальное озеленение, добавляем траву на уровень)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: уроки по СДК
СообщениеДобавлено: 14 фев 2011, 15:56 
Не в сети
Билдоман
Билдоман
Аватара пользователя

Зарегистрирован: 04 апр 2010, 08:18
В кошельке:
50.00

Сообщения: 351
Плять,если взялся пиз**ить уроки с вики,то хоть скрины вылаживай!А то голый текст...
И еще,насколько я помню,на вики статья "Создание уровня,пошаговое руководство" не дописана еще с 2007.


Последний раз редактировалось Chester 14 фев 2011, 15:58, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 2 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
cron

[Мобильная версия]

Создано на основе phpBB® Forum Software © phpBB Group
[ Time : 0.388s | 34 Queries | GZIP : On ]

PlayStation style by HighDefGeek