Jump to content

Статья 3


Recommended Posts

  • ED Team
Статья 3. Проблемы.

 

Так как общественность интуитивно определила мою потребность в написании третьей статьи:

«Стас привет! Напиши, пожалуйста, маленькую статейку, хотя бы в тезисах, какие технические недоработки встречаются в моделях от сторонних разработчиков и способы их избежать. Думаю, это будет полезно для всех нас. Заранее благодарен!

А Абрамс вы уже делаете? Посмотри интересную картинку:»

 

Пишу очередную нетленку.

 

...

 

… продолжение следует…

Cтас, а если например динамическая защита на Т-80, и танк камуфляжный. Как на текстуре рисовать камуфляж на ДЗ? Рисовать отдельно все блоки ДЗ с теми же линиями камуфляжа, что и на танке или верхние поверхности коробочек накладывать прямо на текстуру корпуса и башни? Или например я буду делать текстуру Т-72 Грузинского. Там некоторые коробочки ДЗ бордовые, а другие зеленые. Так вот на текстуре эти варианты нарисовать не проблема, и текстурные координаты изменить не проблема. Но как это будет вязаться с одной моделью в игре, с разными текстурами, и с разными текстурными координатами?

Вот пример Грузинского Т-72 (см. фото):

р.s. Стас какие конкретно замечания были к Т-72Б, если можно в приват.

Я принимаю модели, а вы мучаетесь, но у вас растет мастерство!!!:book:

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

  • Replies 126
  • Created
  • Last Reply

Top Posters In This Topic

Cтас, а если например динамическая защита на Т-80, и танк камуфляжный. Как на текстуре рисовать камуфляж на ДЗ? Рисовать отдельно все блоки ДЗ с теми же линиями камуфляжа, что и на танке или верхние поверхности коробочек накладывать прямо на текстуру корпуса и башни? Или например я буду делать текстуру Т-72 Грузинского. Там некоторые коробочки ДЗ бордовые, а другие зеленые. Так вот на текстуре эти варианты нарисовать не проблема, и текстурные координаты изменить не проблема. Но как это будет вязаться с одной моделью в игре, с разными текстурами, и с разными текстурными координатами?

Вот пример Грузинского Т-72 (см. фото):

р.s. Стас какие конкретно замечания были к Т-72Б, если можно в приват.

 

с коробочками мысль о нанесении их поверх текстуры корпуса имеет основания, но боковые поверхности тоже должны соответствовать - вариантов для этого несколко, если они не известны, могу описать.

Link to comment
Share on other sites

  • ED Team
с коробочками мысль о нанесении их поверх текстуры корпуса имеет основания, но боковые поверхности тоже должны соответствовать - вариантов для этого несколко, если они не известны, могу описать.

Ну Стас, насколько я могу себе представить процесс нанесения защитной раскраски краскапультом, то на боковые поверхности краска будет наносится почти сверху-вниз и не очень толстым слоем. Я думаю что в таком случае, независимо каким из двух способов, описанных мной выше, будут нарисованы верхнии поверхности коробочек, боковые поверхности привязать к краям верхней поверхности. Типа как на рисунке:

1. Текстура верхней поверхности

2. Привязываем текстурные координаты боковушек, к верхней поверхности

3. Получаем примерно такую развертку на коробочку ДЗ.

Какие Стас у тебя мысли? И что думаешь по моему вопросу, по Грузинскому скину?

Я принимаю модели, а вы мучаетесь, но у вас растет мастерство!!!:book:

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

Если бы никто не имел возражений, то по просшествии некоторого времени и собравши мысли в кулак, я, возможно, смог бы указать даже на те дизайнерские просчёты и ошибки, на которые не обращают внимание сами разработчики, думая, что так и надо... А, следовательно, и все остальные. :-) Взгляд изнутри, так-сказать, по прошествии времени... Разумееться не призыв к действию, а философские вопросы бытия. Очень уж часто мне приходилось слышать фразу "так исторически сложилось", причём от ЕД не первых и не последних. :-) Не в обиду будет сказано. Но Игорь (молодец) следует мадоксовской стратегии "у нас всё правильно" и, может быть, мои размышления на эту тему могут показаться лишними. Вобщем вкратце я устно уже всё изложил Андрею, не знаю насколько он понял меня и системно проанализировал, но могу и тезисно, решайте сами. :-) Просто иногда бывает забавно смотреть, как другие гуляют по граблям, которые ты смог обойти, но не в моём случае... Мне эти грабли рекошетят вот уже несколько месяцев, приходиться указывать на места их наибольшего скопления. (Элитный смайл означающий кряхтение и потирание поясницы)

Link to comment
Share on other sites

Ау, это я к тому, что может быть я с дуру напишу здесь такие вещи, которые на мой взгляд кажуться очевидными и безобидными, а на самом деле ЕД не очень бы хотелось делать из них паблисити... Я имею в виду именно некоторые технологические моменты... В этом и засор. Как говориться, держи язык за зубами, с зубами и останешься. :-)

Link to comment
Share on other sites

  • ED Team
Ау, это я к тому, что может быть я с дуру напишу здесь такие вещи, которые на мой взгляд кажуться очевидными и безобидными, а на самом деле ЕД не очень бы хотелось делать из них паблисити... Я имею в виду именно некоторые технологические моменты... В этом и засор. Как говориться, держи язык за зубами, с зубами и останешься. :-)

Напиши! Попытка не пытка, да товарищ Берия! :)

Я принимаю модели, а вы мучаетесь, но у вас растет мастерство!!!:book:

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

Я бы тоже почитал. :)

Поскольку специально нигде не учился моделированию, да и знакомых профессионалов в этом деле нет, очень интересно знать, как работают зубры 3D моделирования. :)

Link to comment
Share on other sites

Если бы никто не имел возражений, то по просшествии некоторого времени и собравши мысли в кулак, я, возможно, смог бы указать даже на те дизайнерские просчёты и ошибки, на которые не обращают внимание сами разработчики, думая, что так и надо... А, следовательно, и все остальные. :-) Взгляд изнутри, так-сказать, по прошествии времени... Разумееться не призыв к действию, а философские вопросы бытия. Очень уж часто мне приходилось слышать фразу "так исторически сложилось", причём от ЕД не первых и не последних. :-) Не в обиду будет сказано. Но Игорь (молодец) следует мадоксовской стратегии "у нас всё правильно" и, может быть, мои размышления на эту тему могут показаться лишними. Вобщем вкратце я устно уже всё изложил Андрею, не знаю насколько он понял меня и системно проанализировал, но могу и тезисно, решайте сами. :-) Просто иногда бывает забавно смотреть, как другие гуляют по граблям, которые ты смог обойти, но не в моём случае... Мне эти грабли рекошетят вот уже несколько месяцев, приходиться указывать на места их наибольшего скопления. (Элитный смайл означающий кряхтение и потирание поясницы)

 

 

Да, справедливое замечание самому себе о паблисити... Может, эти вещи и не имеют тайного значения в одной из сущностей сора из избы, но бывет всякое.

 

"...я, возможно, смог бы указать даже на те дизайнерские просчёты и ошибки, на которые не обращают внимание сами разработчики, думая, что так и надо... А, следовательно, и все остальные. :-)..."

 

Принципиально, можно и указать все эти огрехи на форуме - общественности будет полезно, т.ч. лично я не против развития, если эти замечани приведут к таковому. И если это будет высказано как альтернативный вариант ведения разработки, а не субъктивное указание на чьи-либо ошибки, будет совсем здорово!

Link to comment
Share on other sites

На полный трактат у меня может и не хватить ни времени, ни желания, ни физической возможности, поэтому буду постить маленькими тезисами, которые потом легко можно будет объединить при желании в один трактат. Итак, если следовать по порядку, то начать можно с азов моделирования. Самые распространённые и типичнейшие ошибки:

1. Я люблю нурбсы, сюрфейсы и лофты. Мне очень удобно с ними работать.

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

Ошибка вторая, логически проистекающая из первой и не только.

2. Мне очень нравяться квадратные полигоны, с ними так прятно работать, всё хорошо видно что где, очень удобно и красиво. А ещё мне нравится регулярная сетка, точки так красиво стоят рядками, просто приятно работать.

Дорогие друзья, я хвалю вас за любовь к красивым постореним и чувство гармонии, но низкополигональное моделирование, к сожалению не для вас. Вы наверняка найдёте себе значительно лучшее применение в персонажной анимации, там где количество треугльников имеет значение "постольку-поскольку".

Дело в том, что в персонажной анимации есть такой термин MeshSmoothFriendlyObject. Это категория параметрических объектов типа Skin, которая позволяет производить автоматическую тессиляцию уже развешенного на кости скина. Представляете как это удобно при просчётах, когда, например, издалека на камеру бежит человек и по мере его приближения к камере? его детализация параметрически возрастает за счёт тессиляции? Представляете себе анимированный уже объект, который меняет свою геометрию, сбрасывая количество полигонов в разы? Это действительно круто, но как сказано в одном баяне: "Нахрена нам, папаша, весь этот тюнинг в Саратовском зоопарке?"

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

Но для начала наставление: Если вы всё-таки воспользовались параметрическими кративами, то постарайтесь всё же избавиться от регулярной сетки, даже если она вам не мешает.

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

3. Меня бесят видимые грани, жутко неудобно, мешают нормально воспринимать модель.

Эта весёлая особенность вытекает из предыдущего пункта. На пару фраз окунусь в историю... Дело в том, что идеология любой программы, реализующей трёхмерную графику основываеться на создании изначально параметрических объектов. И действительно посмотрите можно ли, например, в максе, или в майке создать треугольник? Ответ однозначный - нет нельзя! Почему? Потому что треугольник не являеться параметрическим объектом, у него просто нет переменных, которые мы могли бы использовать в качестве параметров. А вот у четырёхугольника уже таковые найдуться, например, длина и ширина. Поэтому для создания треугольника вам необходимо будет создать какой-нибудь параметрический объект, плоскость или бокс, и только после нескольких преобразований вы сможете получить такой объект, как треугольник. Это не потому что программисты дураки или лентяи, просто такова идеология программирования, необходимо для начала найти величину, которую мы будем изменять, то есть переменную, а уже потом на её основе городить весь огород. Отсюда и все проблемы связанные с нашим случаем. Моделлер видит как строятся прямоугольники и почемуто абстрагируеться от того, что первоосновой всего являеться триангл, то есть треугольник, и продолжает пользоваться параметрическими категориями.

На стадии нискополигонального моделирования моделлер просто должен дойти до самого низкого уровня, то есть до каждого треугольника, каждой грани, каждой точки. Поэтому мой совет: Во время работы всегда необходимо делать Edge Visible и визуально и мануально контролировать разворот граней.

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

4. Ну и что, что здесь чуточку накосячена геометрия, когда я назначу смусгруппы этого ничего видно не будет. Ошибка 4а. Меня всё время так парит назначать смусгруппы вручную я вообще не понимаю для чего это нужно.

С самого начала совет: Прежде чем моделить, убейте к чёртовой матери все смусгруппы своей геометрии и всегда убивайте их, пока не доведёте модель до финального вида!

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

Только после точно установленной геометрии имеет смысл расставить смусгруппы. Здесь есть одна тонкость, и если не знать её, то ошибка будет совершенно неизбежна. Ошибка 4б Я назначил смусгруппы только на те места где это необходимо, остальные места плоские и делать этого там не имеет смысла.

Да конечно, этим самым можно сэкономить время, но только в том случае, когда вы имеете совершенно чёткое представление о том в каком виде будет представлена ваша модель, то есть вы досконально знаеете особенности вашего энжина и вид внутренней записи вашего объекта внутри энжина. Если вы не имеете представления об этом, то лучше не рисковать, это раз, и всегда помнить о культуре моделирования, это два. Не буду течь мыслью по древу, но вкратце существуют такие виды внутренней записи объектов при которых точки не участвующие в общем списке атрибутов смуса (а именно списка координат суммарных нормалей в точках), имеют отдельную запись с отдельной индексацией как дефолтные, а это в свою очередь ведёт в большим объёмам занимаемым геометрией в вертекс буфере, как следствие малой оптимизации объекта и иногда ведёт к переполнениям. А это значит, что если вы возмёте один ваш объект на рендер и он будет выглядеть нормально, два, три, десять, и всё будет хорошо, а на одинадцатом весь ваш энжин просто встанет или будет показывать весьма неожиданный результат или приведёт к ещё более непредсказуемым последствиям. А вам оно надо?

Поэтому сделаю вам следующий совет: После того как вы убедились в том, что ни один из треугольников не имеет никаких смусгрупп назначьте всему объекту одну 1-ю, после чего, присваивайте поочерёдно ручками те смусгруппы, которые вам необходимы, последовательно отменяя 1-ю на необходимых треугольниках. Помните о культуре моделирования.

На сегодня достаточно, продолжение в следующий раз.

Link to comment
Share on other sites

Ну, что же, я согласен с автором. :)

В принципе, на все эти грабли сначала наступил сам.

Только, мне хотелось бы узнать две вещи (если, конечно, сочтут необходимым прокоментировать):

Первое. Сюрфейсы не рекомендуется использовать вообще (поскольку моя модель вся была построена с их помощью), или не рекомендуется использовать в топологии поверхности количество шагов большее 0, либо говорится не про модификатор Surface?

Где можно прочитать про культуру моделирования?

Link to comment
Share on other sites

Отвечаю на вопрос Andrew Tikhonovsky.

Surface чрезвычайно полезный и удобный инструмент моделинга. Делать им людей, животных, одежду, ткани и другие природные объекты чрезвычайно удобно. Скажу даже более того, я не встречал более удобного интрумента для высокополигонального моделинга природных объектов в максе. Ну постольку-поскольку, например, в ксюхе или люфтваффе есть ещё более простые и удобные, а, скажем майский SubDivisionSurface произвёл на меня впечатление весьма тяжёлой и не вполне логичной штуковины, как собственно и всё, что касается майки в целом. :-) Поэтому максовый Surface попрежнему остаётся зебест и намбаван. Но! Повторяю, что заточен он под часто-встречающиеся, но от этого отнюдь не менее специфические вещи. Чем, скажите мне, будет отличаться друг от друга инструментарий - тот же лофт, нурбсы, сюрфейсы, если установить уровень дискретизации 0? Да ничем... Зачем в таком случае усложнять себе жизнь, если на выходе нам необходимо получить меш, не легче ли и работать напрямую прямо с этим мешем непосредственно? Хотя в сущности это уже вопрос о том, кто к чему больше привык и кто с каким инструментом работает быстрее, то есть опять же вопрос заточенности ручёнок под конкретную лопату.

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

Link to comment
Share on other sites

  • 2 weeks later...
Статья 3. Проблемы.

 

но больших моделей, которые приняты, или в стадии принятия на вооружение симулятора, всего – Т-72, Як-40, Мираж Ф-1, УАЗ-469, Предатор и, вроде, все.

 

 

 

А СуперВасину "Кобру" разве не взяли? Мне помнится, ее вроде как точно включали куда-то. Как бы между прочим, меня интересует Hawkeye в списке вакантных моделей, хочется попробовать завоять :)

Link to comment
Share on other sites

Супервася теперь на стороннего разработчика не тянет: в штате ЕД он. :)

Коричневые очки никогда не поранят мозг. Они небьющиеся.

Brown-coloured spectacles will never harm a brain. They are unbreakable. (с) Me

сфсвсг

I'm the future of the Russian government.

According to Scott Lofgren,

Bentley Systems global director.

Link to comment
Share on other sites

  • ED Team
А СуперВасину "Кобру" разве не взяли?

Взяли вместе с СуперВасей. :)

Мне помнится, ее вроде как точно включали куда-то. Как бы между прочим, меня интересует Hawkeye в списке вакантных моделей, хочется попробовать завоять :)

Попробуй.

Вроде никто не претендовал, а по страшности наш локоновский точно приз возьмет среди всех симуляторов. :D

Единственный урок, который можно извлечь из истории, состоит в том, что люди не извлекают из истории никаких уроков. (С) Джордж Бернард Шоу

Link to comment
Share on other sites

  • 1 year later...
  • ED Team
Значит так... У дизайнера нет ошибок и недочетов... есть только неясность того или иного, что можно поправить (это касается профи).

 

А у не-профи ошибки и недочеты есть, по определению. Следовательно, априори, всех делим на профи и не-профи. А на каком этапе не-профи становится профи ? Парадоксик намечается ... :music_whistling: (На правах бреда.)

 

Не понял, зачем такие утверждения. Ошибки бывают у всех, чем дизайнеры такие особенные ?

Link to comment
Share on other sites

  • 2 weeks later...
А у не-профи ошибки и недочеты есть, по определению. Следовательно, априори, всех делим на профи и не-профи. А на каком этапе не-профи становится профи ? Парадоксик намечается ... :music_whistling: (На правах бреда.)

 

Не понял, зачем такие утверждения. Ошибки бывают у всех, чем дизайнеры такие особенные ?

 

Тут, Женя, тоже всё будет зависеть от того как вопрос поставить и что считать за ошибку. Делетант от профессионала отличается только одним - он ставит перед собой только вопрос: "Как решить поставленную задачу?". А профессионал всегда конкретизирует этот вопрос: "Как решить поставленную задачу, первым, вторым или катым способами?"

 

Да, добавлю ещё, что мне приходилось работать с очень большим количеством людей и опытных и не очень и совсем начинающих. Так вот тенденция в моей личной практике была всегда одна - с начинающими, людьми постигающими самые азы работать как раз довольно просто, не проще, конечно, чем с опытными супербизонами, но тоже особых проблем никогда не возникало. Сложнее было всегда с теми, кто уже в чём-то поднатарел, но самых глубин не осознал. Скажешь такому: "Вот так надо делать, потому что я лучше знаю как надо." А он тебе отвечает, что так как он делает ему быстрее, удобнее, спортивнее, интереснее и прочее, прочее, прочее, и переучиваться он ни за что не собирается. Вот с этим всегда приходилось сложнее. Как правило, только не принятые модели остужали экcплорерский дух великого изобретателя велосипедов.

Link to comment
Share on other sites

Итак, по просьбам трудящихся модельпрома, я продолжаю цикл статей, посвящённых формализованному моделированию. В прошлый раз Андрей Тихоновский из Сочи задал вполне корректный и своевременный вопрос: «А в чём же заключается культура моделирования?» Вкратце я уже ответил на этот вопрос, сейчас же хочу конкретизировать некоторые детали. Начинающим моделистам советую обратить на них особое внимание, поскольку физический смысл вы, возможно, поймёте сразу, а вот понимание того, для чего необходим тот или иной приём, придёт к вам уже с опытом хождения по завалам граблей. Начинающим важно усвоить нехитрые приёмы, так, чтобы они вошли в привычку, а потом они будут казаться уже само собой разумеющимися. Кстати, опытным моделлерам тоже не мешало бы почитать и сверить всё нижедекларированное с особенностями своего понимания.

Итак, принцип первый и основной: Принцип рационального моделирования и его методы. Что же такое принцип рационального моделирования? Коротко его можно охарактеризовать следующими словами: принцип рационального моделирования – это такой подход к моделированию, при котором любые геометрические модели, расположенные на равном удалении от точки зрения, видятся одинаково детализированными.

Сразу же постараюсь проиллюстрировать этот тезис картинкой, чтобы было понятно, о чём идёт речь.

pis1ai9.jpg

На Рис 1. Мы имеем две сферы, расположенные равноудалено от точки зрения и созданные с одинаковой детализацией. Разница только в размере этих сфер. Здесь присутствует нестыковка, то есть расхождение с принципом рационального моделирования. Обе сферы равноудалены, следовательно, либо одна из них имеет слишком высокую детализацию, либо вторая слишком низкую.

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

Таким образом, мы принимаем в рассмотрение два варианта развития событий: сферы приближаются к нам или остаются на месте и сферы удаляются от нас или также остаются на месте.

ris2eh9.jpg

 

В первом варианте большая сфера имеет слишком низкую детализацию, поэтому для соблюдения принципа рационального моделирования мы должны увеличить её детализацию. Рис 2. Во втором варианте маленькая сфера слишком детальна, поэтому мы должны её детализацию уменьшить. Рис 3. Надеюсь, что всем понятно, почему.

Link to comment
Share on other sites

Но, это скажем так, голая теория. Теперь же, что касается методов. Их не так уж и много, некоторые из них я уже перечислял в этой ветке, но постараюсь конкретизировать основные детали.

Для того чтобы соблюсти принцип рационального моделирования, постарайтесь сделать так, чтобы относительные размеры всех, повторяю, всех треугольников одного меша не отличались друг от друга более чем в разы. Если отличия уходят в следующий значимый разряд, то необходимо задуматься, что-то неладно в Датском королевстве. Нужно либо тессилировать (разбивать на более мелкие треугольники) крупные элементы, либо оптимизировать (сокращать количество треугольников, упрощать геометрию) мелкие элементы модели. Приведу простейший, но при этом характернейший пример: быстренько спроектируем модель нефтяного танка с лесенкой для доступа к горловине, как изображено на Рис 4. От него затем, будет проще перейти к следующим основополагающим методикам.

ris4if5.jpg

Что мы видим? Общий вид весьма пристойный, но стоит всего лишь приблизиться к верхней части лесенки, и мы тут же почувствуем дисбаланс, некоторую нестыковку с рациональным распределением треугольников. Почему? Потому, что если присмотреться к верхней загибающейся части лесенки мы увидим всё те же пресловутые сферы, взятые мною за основу принципа рационального моделирования. Я, конечно, выразился фигурально. Если говорить формально, это не сферы, а всего лишь части окружностей, но между ними есть немало общего. Эту общность можно отыскать, если взглянуть на Рис 5.

ris5my5.jpg

Теперь, я надеюсь, всем понятно, что необходимо изменить, для того, чтобы следовать принципу рационального моделирования.

У нас также как и в случае со сферами два пути: первый – закругление верхней дуги лесенки за счёт добавления дополнительных сочленений, как показано слева, и второй – уменьшение количества сочленений в поперечном сечении опоры, как показано на рисунке справа.

ris6gr9.jpg

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

Многим может показаться, что, всё описанное выше и так очевидно. Так вот, (как сказала бы одна из известных телевизионных ведущих) дорогие мои (С), я описал сейчас ошибку, встречающуюся в моделировании в 95 случаях из 100 даже у опытных моделистов, и не всё очевидное мы замечаем сразу.

Link to comment
Share on other sites

На рисунке 6 видно, что общий вид модели нисколько не изменился от того, что я уменьшил количество сочленений в поперечном сечении опоры лестницы втрое, тем самым уменьшив полигонаж с 1144 до 888 треугольников, то есть практически на 29%.

ris7zo0.jpg

При этом увеличение детализации, как показано на предыдущем рисунке ведёт к увеличению общего полигонажа до 2488 треугольников, то есть более чем вдвое!!! Очевидно, что применение этого пути будет оправдано лишь в том случае, если мы вплотную приблизимся к закруглениям опор лестницы. НО! Тут есть ещё одна загвоздка. Опора опорой, но у нас же есть ещё и сам танк с горловиной. Мы приблизились вплотную к опоре настолько же, насколько и к горловине танка. А что гласит принцип рационального моделирования? Смотрим, читаем, понимаем, что детализацию танка тоже придётся увеличивать, её не хватает.

Link to comment
Share on other sites

:) Тихоновский Я.

Блин, и умный же я (и скромный)! :)

Можно я опишу, как я делаю, если я где-то неправ - поправте.

В общем, я прикидываю насколько близко в сцене будет видна деталь, а потом подбираю так количество граней, чтобы она выглядела "достаточно гладенько". Вначале беру с избытком граней, а потом уменьшаю их количество, до тех пор пока углы в кривых ("гладких") не будут слишком явными, и возвращаюсь приблизительно на один шаг назад, но тут опять же все зависит от начальных условий на количество полигонов в модели. :) То есть если окружность на определенном расстоянии от камеры выглядит достаточно гладко (без явных углов) с 12 гранями, то нет смысла увеличивать количество граней до 13 (но я стараюсь выбирать количество граней в окружности кратное 4, чтобы раскладки текстур было легче делать). Кажется, так.

Link to comment
Share on other sites

В итоге мы получим нечто, изображённое на рисунке 7 и общее увеличение полигонажа модели до 4984 треугольников, то есть фактически в 4 раза по сравнению с исходной моделью и в 5,6 раза по сравнению с моделью оптимизированной.

ris8dw1.jpg

Ещё раз задумаемся, ещё раз сверимся с принципом рационального моделирования и принципом разумной достаточности. Ещё раз взвесим, насколько оправдана такая детализация, то есть такой полигонаж. Ещё раз прикинем, каким образом будет показываться модель, сколько времени она будет находиться в кадре, какие её детали мы будем видеть статистически чаще всего, какие детали будем видеть крайне редко, а какие вообще никогда не увидим и, исходя из этих критериев и принципа рационального моделирования, выбираем уровень детализации.

 

Есть эмпирическая методика, разработанная мной в соавторстве с другими деятелями, которая позволяет достаточно чётко определять критерии детализации, согласно с принципом рационального моделирования.

1. Необходимо принять в качестве отправного критерия общее максимальное физическое разрешение экрана, ну например 1280х1024 (наверное, сейчас это наиболее распространённое разрешение мониторов).

2. Вторым критерием будет минимально возможное расстояние приближения точки зрения к объекту, при котором ещё не начинается клипинг, на наиболее часто встречающихся углах зрения, лучше при стандартном угле зрения, а точнее отношение минимально возможного расстояния к физическим размерам объекта.

Если не понятно, поясняю этот пункт: клипинг начинается тогда, когда точка зрения проникает внутрь объекта или находится очень близко к нему, при этом всё что находится вне угла зрения, отсекается. Так вот для того, чтобы наблюдатель не увидел всего того, что он не должен видеть, существует простой метод - это ограничение минимального расстояния на которое к конкретному объекту можно приблизить точку зрения. Обычно это минимальное расстояние ограничивается половиной максимальной хорды объекта, если точка зрения имеет привязку к объекту и квадратному корню из хорды, если точка зрения свободна, либо выбирается из каких-либо других соображений, если точка зрения привязана к баундинг-примитивам. Что такое баундинг-примитивы пока нет смысла забивать голову, но вкратце скажу, что это те самые упрощённые объекты, которые повторяют геометрию модели, но в то же время не дают точке зрения попасть внутрь своего объёма, и следят за общей отрисовкой модели при рендере. При этом клипинг будет сильно зависеть от угла зрения. Но это так просто к слову, переходим к следующему критерию.

3. Нормальный угол зрения одного глаза человека порядка 54 градусов, то есть соответствует линзе с фокусным расстоянием 35 мм. Поскольку у человека 2 глаза и за счёт панорамного и периферического зрения мы ощущаем, что видим шире, чем 54 градуса, то мы привыкли, что в играх разработчики используют более широкие углы зрения. Опять же эмпирически, была достигнута оптимальная ширина, которая позволяла бы иметь и достаточно широкий обзор, имитирующий человеческое зрение и при этом не производить сильных оптических искажений геометрии. Эта величина равняется приблизительно 70 градусам или эквивалентна 25 мм оптической линзе. Таким образом, у нас готов третий и последний критерий детализации, от которого мы будем отталкиваться.

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

Если максимальная общая площадь одного треугольника менее трёх физических пикселей, то он не обязателен к отрисовке при рендере. Из чего следует методика: любые треугольники, имеющие при всех возможных углах зрения максимальную площадь менее четырёх физических пикселей, подлежат немедленному упрощению, поскольку визуально никоим образом не влияют на общую геометрию модели.

Поясняю, что такое "упрощение". Упрощение - это ликвидация в случае, если треугольник представляет собой отдельный подобъект, и объединение этого треугольника с ближайшим более крупным треугольником в общую геометрию (один треугольник) исходя из принципа сохранения общих геометрических форм, если треугольник является неотъемлемой частью некоего объекта.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...