Автор: Martini
Источник
Устройство трехмерного объекта
Презрев системный подход, в этот раз мы начнем с конца. То есть сначала рассмотрим то, что мы хотим получить в итоге, а потом пойдем назад и выясним, как добиться желаемого результата.
Итак, из чего состоит готовый трехмерный объект? В первую очередь, это каркасная модель (mesh), по сути — объемный многогранник. Тут самое время освежить в памяти школьный курс стереометрии, вспомнив такие понятия, как вершина (vertex), ребро (edge) и грань (face). Именно с помощью этих примитивов сейчас строятся трехмерные модели в компьютерной графике, если не принимать в расчет экзотику вроде поверхностей Безье.
Каркасная модель состоит из определенного числа граней. Грань образуется тремя вершинами (да-да, та самая школьная стереометрия — три точки, задающие плоскость), то есть представляет собой треугольник. Логично, что много мелких граней позволяют построить более гладкий объект, чем несколько крупных. Кроме того, в природе существуют специальные алгоритмы, сглаживающие острые углы, не увеличивая число граней, но работают они на стадии просчета изображения, и на самом процессе моделирования не отражаются.
Далее, объекту назначается материал. Это не то же самое, что текстура, хотя понятия в чем-то близки. Представьте себе, что мы взяли нашу каркасную модель и принялись раскрашивать ее. Но у «краски» есть не только цвет, но и степень прозрачности, коэффициент отражения света, шероховатость — иначе говоря, еще какое-то число параметров, влияющих на итоговый внешний вид объекта. При этом для раскрашивания мы не пользуемся кистью, а натягиваем на каркасную модель уже готовую «шкурку», обладающую всеми этими разнообразные свойствами. Представили? Тогда продолжим. Помимо свойств, присущих отдельным точкам поверхности, есть и глобальные, влияющие на весь объект целиком. В частности — поведение света внутри него, блики, способ сглаживания поверхности и т.п. Есть? Тогда самое время подвести итог. Проделав все вышеозначенные манипуляции, мы сделали ничто иное, как назначили объекту материал, превративший его из геометрической абстракции во что-то более близкое человеческому глазу.
А что же такое текстура? Сейчас и с ней разберемся. Как я уже упоминал, свойства материала в каждой точке могут быть совершенно разными. К примеру, цвет. Берем какую-нибудь картинку (самую обычную плоскую картинку — bmp, jpg) и указываем, что именно она-то и «раскрасит» наш материал. Иначе говоря, станет текстурой цвета. Аналогично поступают и с другими поверхностными характеристиками материала, но там уже вступают в силу некоторые условности. Допустим, чтобы назначить текстуру для степени зеркальности, мы берем некую растровую картинку, считая более яркий цвет более отражающим, и наоборот. А синий это цвет, или оливковый — уже не важно. Итак, текстура — это двумерное изображение, накладываемое на объект и задающее какое-либо его поверхностное свойство. А материал состоит из набора текстур, а также серии параметров, одинаковых для всего объекта целиком. В этом и состоит разница между ними.
Это важно: путаница с материалами и текстурами возникла неспроста. Цветовая текстура — самая важная, и уж точно наиболее заметная составляющая материала. Во многих играх разработчики только ею и ограничиваются.
Чего же не хватает, чтобы закончить трехмерный объект, для которого уже задана каркасная модель и назначен материал? Естественно, пока ни слова не было сказано о способе, которым мы наложили текстуры. Ведь текстура может огибать объект с разных сторон, или растягиваться, как бы проецируясь на него с плоского экрана. Иначе говоря, осталось указать, по какому принципу точки текстур «улягутся» на грани каркасной модели. Этот процесс называется заданием текстурных координат (Mapping).
Часто используется такой прием: модель разворачивается на плоскость, совмещается с картинкой текстуры, а потом снова сворачивается. Если вы хоть раз в жизни делали выкройки одежды, или клеили из картона объемные фигурки, то с легкостью представите, как выглядит развернутый на плоскость объект.
Объекты в The Sims 2
Пора нам понемногу переходить от «трехмерной графики вообще» к объектам The Sims 2. По своему устройству они гораздо сложнее, чем просто 3D-модели. Казалось бы, почему так? Ведь из всего богатства современной графики любая игра использует лишь какую-то часть? Верно. Но также верно и то, что игровые объекты — это не только модели.
Помимо каркасов, материалов и текстур, объект «пианино» хранит проигрываемые мелодии, пункты меню пользователя, сценарии поведения симов и еще уйму других, чисто игровых характеристик. И ни в какой 3D Studio мы не сможем задать, какие именно блюда готовятся в духовке или сколько стоит шкаф. Модель — важная часть объекта, но не весь объект. Важно об этом помнить.
Создание или изменение?
Знаете, а ведь мы не будем создавать новые объекты. Только не пугайтесь — сейчас мы договоримся о терминах, и все встанет на свои места. Как я уже упоминал, любой предмет в игре — штука настолько комплексная, что создавать его с нуля — задача малореальная, или уж, по крайней мере, чрезвычайно трудоемкая. Но это и не нужно. В 99% случаев нас устроит компромиссный вариант: взять уже готовый предмет и подменить какие-то его части, знать не желая обо всем остальном, что в него входит.
Допустим, вы хотите сделать своим подопечным... диван. Ну, так в чем проблема? Берем уже готовый диван, делаем копию и просто заменяем в ней исходную 3d-модель на свою. Затем назначаем ему собственное название, описание и цену для каталога — что еще нужно? Фактически, мы создали новый предмет. И нам не потребовалось прописывать для него длинные алгоритмы поведенческих функций (BHAV), или изыскивать способ объяснить симам, что на него можно сесть или лечь. Эта информация досталась новому дивану в наследство от предшественника, а мы лишь изменили внешний вид.
Итак, давайте договоримся. Даже когда речь заходит о создании объекта, не имеется в виду его разработка «с чистого листа». Вместо этого выбирается самый подходящий аналог из игры, копируется и изменяется в соответствии с личным пониманием прекрасного.
Клонирование или перекраска?
В отличие от первой части игры, The Sims 2 предлагает два варианта создания новых объектов. А все потому, что при выборе предмета из каталога мы часто видим не одну позицию, а длинную линейку вещей, отличающихся только цветом. У них — одна каркасная модель, но разные текстуры.
У нас есть два способа создать предмет:
Перекраска (Recolor). Новый объект при таком способе — даже не совсем объект, а комплект текстур, изменяющих вид поверхности, не меняя формы. Он не добавит даже новой позиции в каталог, став просто еще одним из вариантов раскраски существующего предмета.
Дублирование (Cloning). А вот здесь новый объект будет абсолютно полноценным и самостоятельным. Вы можете переименовать его, установить другую цену, переделать форму: словом, все, что придет в голову.
Какой из вариантов лучше? Зависит от задачи. Если вы хотите сделать кресло с клетчатой обивкой вместо однотонной красной — подойдет перекраска. Действительно, зачем дублировать 99% информации, которую вы все равно не будете менять? А вот если душа просит журнальный столик в форме шестеренки, придется сделать полную копию и всласть надругаться над каркасной моделью.
Если говорить о распространенности вышеозначенных способов, лидером несомненно будет перекраска. Хотя бы потому, что файлы получаются компактнее, да и возни меньше. Но мы не будем отдавать предпочтение какому-либо из вариантов, а рассмотрим оба.
Копия или замена?
Если мы создаем клон предмета и больше ничего не меняем, при установке такого пакета он заменит в игре своего предшественника. Это связано с тем, что каждый объект в игре имеет уникальный GUID (Group Identifier), а у наших «близнецов» он будет совпадать. При этом, естественно, установленный в игру пакет оказывается приоритетнее оригинального. Впрочем, в этом нет ничего необратимого — как только мы удалим его, все вернется на круги своя.
Чтобы сделать полноценный дубль, придется назначить нашему предмету новый GUID, тем самым, отделив его от изначального прототипа. Чуть дальше я в двух словах напомню, как это сделать.
А пока — извечный вопрос: что лучше? Создать отдельную копию, или же замещать оригинальный предмет? Отвечу, как и прежде: смотря, что вы хотите получить в итоге. Но не стоит злоупотреблять заменами — в большинстве случаев лучше просто расширить выбор, нежели лишать пользователя вещей, которые были у него ранее.
Пожалуй, единственный разумный случай, когда может быть верно обратное — предметы из общественных заведений (Community Lots). В одном из первых экспериментов я решил поменять ассортимент журнальной продукции на книжных полках магазинов, заполнив их свежими номерами ЛКИ. Не перестраивая все магазины в игре, я просто сделал Recolor-пакет для полки с журналами, оставив прежний GUID. Теперь, куда бы я ни зашел, глаз радуют знакомые обложки.
Отредактировано .fay (2011-06-25 09:44:25)