Milkshape 3d отвязать кости


Опубликовано: 20.02.2018, 06:53/ Просмотров: 1439

  • Работа с нормалями треугольников

    Для работы с нормалям треугольников есть две функции.

    1. Model->Triangles->Invert normals - переворачивает нормали выбранных треугольников в обратную сторону.
    2. Model->Triangles->Rotate normals to camera - поворачивает нормали выбранных треугольников на камеру.
    При использовании опции Model->Points->Create triangles from selected points нормаль всегда поворачивается на камеру. Тоже самое происходит при использовании некоторых других опций.
  • Работа с группами сглаживания ( Smoothing Groups )

    Чтобы видеть группы сглаживание освещение должно быть включено в меню Edit->Lighting, а опция Options->Flat shaded должна быть отключена.

    Показать панель с группами сглаживания можно кликнув на кнопку Model->Trianlges->Smoothing groups panel ....

    Вверху панели можно выбрать одно из четырёх действий которое можно осуществить над группами сглаживания. Это Select - помечать треугольники ассоциированные с группой сглаживания. Deselect - снять пометки с треугольников ассоциированных с группами сглаживания. Assign - ассоциировать выбранные треугольники с группой сглаживания. Unassign - отключить ассоциирование выбранных треугольников с группой сглаживания.

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

    Ещё ниже находится кнопка Empty - означает отключение группы сглаживания. Все биты устанавливаются в ноль.

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

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

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

    Благодаря этому модель получается со сглаженными краями.

    Чтобы проассоциировать выбранные треугольники с какой-либо группой сглаживания, нужно выбрать действие Assign, и нажать на кнопку соответствующую этой группе сглаживания. Чтобы отключить ассоциирование выбранных треугольников с группой надо выбрать действия Unassign, и нажать на кнопку соответствующую этой группе сглаживания.

    Если проассоциировать Assign треугольники с группой Empty ( то есть отключить сглаживание ), то для каждого такого треугольника будет вычисляться индивидуальная нормаль. Это аналогично включению опции меню Options->Flat shaded.

    Для примеру, создадим цилиндр Primitives->Cylinder->Create. Откроем панель работы с группами сглаживания Model->Trianlges->Smoothing groups panel. И нажмём на кнопку Select used. При этом кнопки с цифрами 1, 2 и 3 станут помеченными звёздочкой. Это означает, что у нас задействовано три группы сглаживания. По одной для верхней боковой и нижней поверхностей. Благодаря этому боковая поверхность выглядит сглаженной ( без углов ), а между ней, верхней и нижней поверхностью видна жёсткая грань.

    А теперь попробуем отключить группы сглаживания. Для этого выделяем все треугольники. Выбираем в панели групп сглаживания действие Assign и нажимаем на кнопку Empty. Боковая поверхность из гладкой стала гранёной.

    Далее можно попробовать проассоциировать все треугольники с какой-нибудь одной группой сглаживания. Для этого кликаем скажем на кнопку 1. В результате боковая поверхность опять стала гладкой, но теперь между ней и верхней и нижней поверхностями нет жёсткой грани. Так как верхняя и нижняя поверхности теперь сглаживаются не индивидуально, а сообща с боковой поверхностью.

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

    Для примеру опять создадим цилиндр Primitives->Cylinder->Create. Выберем на его вершине один из треугольников. И проассоциируем его со второй ( то есть боковой ), группой сглаживания. Model->Trianlges->Smoothing groups panel, Assign, 2. При этом треугольник станет участвовать сразу в двух группах сглаживания, верхней ( первой ) и боковой ( второй ). А грань между боковой поверхностью и верхней в этом месте сотрётся.

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

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

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

    Для примера, куб состоит из 12 треугольников лежащих парами в 6 плоскостях. В принципе это можно считать как 6 групп сглаживания по два треугольника в каждой. Но поскольку каждая пара треугольников лежит в одной плоскости, то есть имеет одну общую нормаль, то им можно определить нулевую Empty группу сглаживания. И внешне это будет выглядеть точно также.

  • Сглаживание модели или отключение сглаживания

    За отключение сглаживания отвечает пункт меню Options->Flat shaded. Если его включить, то группы сглаживания не будут учитываться, и для всех треугольников будут вычислены индивидуальные нормали.

    При сохранении модели, при включённой опции File->Save options->LOD Save normals нормали сохраняются в том виде, в котором они в данный момент времени видны. Если нормали не сохранялись, то при загрузке в GLScene они будут сгенерированы без сглаживания ( так, что будут видны отдельные треугольники ).

    Если нормали сохраняются, то размер файла получается больше , а если не сохраняются, а генерируются на лету, то это немного замедляет загрузку.

  • Чистка модели от лишних точек/текстурных координат

    Иногда координаты некоторых точек практически совпадают, и тогда их можно объединить в одну. Это делается опцией : Model->Points->Combine nearest points. Программа спросит, на каком расстоянии друг от друга должны находиться точки, чтобы их считать совпадающими. С этой опцией надо быть осторожным, чтобы не слить случайно те точки, которые реально должны быть на небольшом расстоянии друг от друга.

    После объединения точек, программа не удаляет лишние точки, для этого служит опция Model->Points->Delete unused points. Она удаляет все незадействованные точки.

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

  • Вырезание из модели дырок ( отрезание кусков ) примитивами

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

    Режимов работы этой опции три. Окошко с ними находится под кнопкой Cut, они значат:

    1. cut in - отрезать то, что находится внутри примитива.
    2. cut out - отрезать то, что находится снаружи примитива, и оставить то, что внутри.
    3. cut in - только разрезать модель поверхностью примитива, ничего при этом не удаляя.

    При работе опции отекстуренность модели сохраняется. Применяется резательный инструмент только к выбранной фэйс-группе.

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

    Также некоторые треугольники иногда или не разрезаются или разрезаются с ошибками. Это недоработка.

    В качестве примера использования опции можно создать куб с настройками по-умолчанию ( кнопочка Default, которая находится над Cut ). Нажимаем на Primitive->Create. Появляется куб. Далее ставим примитиву позицию в (0.5, 0.5, 0.5), выбираем режим обрезания cut in, и нажимаем на кнопку Cut. В результате из куба вырезается восьмушка, маленький уголок. Так эта опция и работает.

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

    После работы опции часто образуется много треугольников, которые можно объединить воедино. Для этого, сначала объединяем совпадающие точки через опцию Model->Points->Combine nearest points ( в случае с кубом, объединяются 6 точек ), потом выделяем все треугольники и нажимаем на кнопку Model->Triangles->Joint triangles, удерживая клавишу Shift, объединяются 3 треугольника. Лишние точки можно удалить через опцию Model->Points->Delete unused points. В результате 13 точек удалено.

  • Примитивы Текст ( Primitives->Text )

    Внимание ! Эта очень полезная опция зависит от вашей видеокарты и драйверов, поэтому может функционировать не правильно. Работает конкретно через функцию glFeedbackBuffer OpenGL'я. Когда данных слишком много, то при её вызове программа может просто закрыться, то есть это так сказать вне моей юрисдикции, и я не знаю как это можно исправить. Также с этой же функцией связано возможное обрезание текста по краям. Если кто-нибудь знает, как это поправить - пишите.

    Если показывается сообщение, что шрифт не может быть сгенерирован, то значит так оно и есть. По разным причинам.

    Ответ на вопрос почему я не исключу эту не стабильно работающую функцию из программы прост. Потому, что она позволяет создавать целую кучу примитивов, используя разные таблицы символов. Например, выберите шрифт Primitives->Options-Text->Font->Wingdings, и нажмите Primitives->Create. Появятся, всякие знаки зодиака, стрелки, звёздочки, картёжные символы, религиозные символы, смайлики и т. д. и т. п.

    Функция работает с русскими буквами, ( в отличии от MilkShape ) и вообще со всем тем, что только поддерживается OpenGL'ем.

    Алгоритм сильно "сорит", поэтому после создания примитива этой опцией, точки меша нужно чистить, совмещая близлежащие точки Model->Points->Combine nearest points и удаляя лишние Model->Points-Delete unused points.

    Интересных эффектов можно добиться опцией Smooth Primitives-Options->Smooth. Чем больше её значения, тем сильнее некоторые точки совмещаются, уменьшая количество полигонов в модели. Это эффект OpenGL, и повлиять на него я никак не могу. Учтите также, что эта опция количество "сора" не уменьшает.

    Если Primitives-Options->Scale->Y равно нулю, то будет сформирована, не объёмная фигура, а плоская надпись.

  • Примитивы Геосферы ( Primitives->Geosphere )

    Для того, чтобы можно было генерировать геосферы нужно загрузить файл LODdata1.dll ( ссылка на главной странице ), и поместить его в папку программы. Геосфера отличается от сферы тем, что её точки равномерно расположены по поверхности шара. ( а у сферы на полюсах концентрация точек выше, а на экваторе ниже ).

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

  • Примитивы Автоматическое создание LOD'а модели ( Primitives->LOD )

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

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

    Грузим или создаём какую-нибудь модель. Создаём пустую Фэйс-Группу и выбираем её. Это нужно потому, что фэйс-группе будет присвоен новый материал, и если в ней будут какие либо ещё треугольники, то все они будут отображены с новой текстурой.

    Далее идём на закладку Primitives и выбираем Type->LOD. Появляются окошки позволяющие задать качество текстуры, и что создавать, куб или взаимно перпендикулярные плоскости. Также можно задать цвет фона текстуры кликнув на кнопку Color. Нажимаем на Create.

    Параметр качества текстуры определяет размер скриншотов снимаемых с модели. Увеличение параметра на единицу соответствует увеличению размера текстуры вдвое. Далее при упаковки скриншотов в одну текстуру, её размер может измениться.

    Что именно делать, куб или взаимно перпендикулярные плоскости, зависит от формы модели. Для прямоугольных домов или машин лучше делать куб. Для шаров, листвы, моделей людей или каких-нибудь корявых объектов лучше подойдут плоскости.

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

    Далее после нажатия кнопки Create программа выполняет следующие действия : Формирует куб или плоскости по размеру соответствующие видимой модели. Переключает камеру в ортогональную проекцию и поочерёдно ставя её по разные стороны от сформированного куба или плоскостей снимает скриншоты. Всего их получается шесть. Далее они запихиваются в одну текстуру. Создаётся новый материал в списке Materials в который и запихивается созданная текстура, а сам материал ассоциируется с видимой Фэйс-Группой. Весь этот процесс может занять немного времени особенно в первый раз, поэтому возможно придётся подождать.

    Созданную текстуру надо сохранить Materials->Save to .... По-умолчанию созданный LOD непрозрачный, но это легко исправить выбрав ему Blending mode -> BmTransparentcy и TextureImageAlpha скажем tiaTopLeftPointColor.

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

    Из-за того, что Undo на материалы не распространяется, лишние материалы созданные в результате экспериментов с этой опцией предлагается удалять вручную. Быстро удалить все неиспользуемые материалы можно нажатием на кнопку Material->Delete, удерживая при этом нажатой клавишу Ctrl.

    При изготовлении LOD'а возможно стоит обратить внимание на следующие моменты :

    1. Скриншоты снимаются в таком виде, в каком модель отображена на экране, поэтому возможно стоит включить освещение, чтобы не возникало непредусмотренных теней, либо возможно именно это и стоит использовать, когда тени как раз и нужны. Тоже самое относится и к сглаживанию нормалей.
    2. Если в созданном LOD'е почему то оказывается много пустот, то возможно это из-за наличия в модели лишних, неудалённых точек. Это можно подправить воспользовавшись кнопкой Model->Points->Delete unused points и создав LOD заново.

  • Уменьшение числа полигонов модели через опцию Combine nearest points

    Создадим текст, и попытаемся уменьшить количество его полигонов.

    Primitives->Type->Text. Выбираем шрифт Arial ( потому, что он должен быть установлен на всех компьютерах ). Установим ему размер, скажем в 20. Напишем текст LODka3D, и нажмём на Primitives->Create.

    Появится трёхмерный текст. А внизу в строке состояния появится надпись Добавлено точек: 8760 и треугольников: 2920. Может быть цифры будут не точно такими, а похожими в зависимости от параметров шрифта.

    Выделяем все точки мышкой, и кликаем на кнопку Model->Points->Combine nearest poitns. Здесь попросят ввести минимальное расстояние между точками, чтобы они считались подлежащими объединению.Укажем 0.05 и нажмём OK.

    Внизу появилась надпись Joint 8234, это значит, что точки объединились и можно удалить лишние. Чтобы это сделать жмём на кнопку Model->Points->Delete unused points

    Внизу появилась надпись, что 8234 точки были удалены. А в окне редактора становится видно, что точки сильно поредели.

    Но это ещё не вся очистка. В результате объединения точек, вершины некоторых треугольников объединились, и треугольники визуально исчезли, но тем не менее они продолжают формально существовать в списке. Чтобы их удалить нужно воспользоваться кнопкой Model->Triangles->Clean. И в появившемся меню выбрать пункт Delete invisible triangles.

    Внизу появится надпись 1874 невидимых треугольника было удалено.

    Таким образом мы уменьшили число точек модели с 8760 до 526, а число треугольников с 2920 до 1046. Хотя, думаю варьируя параметры можно добиться и лучших результатов, но не следует перебарщивать, так как с водой можно выплеснуть и ребёнка.

  • Удаление всех невидимых треугольников

    Чтобы удалить все невидимые треугольники, можно выделить все видимые, крутя модель и обводя её рамкой выделения. Потом нажать на кнопку Model->Triangles->Inverse selection, чтобы инвертировать выделение ( сделать выделенные не выделенными и наоборот ). И нажать на Model->Triangles->Delete selected удалив выделенные треугольники.

    Также можно воспользоваться опцией Model->Triangles->Clean. Выбрав пункт Delete invisible triangles ( удалить невидимые треугольники. Невидимыми считаются те, у которых площадь равна нулю.

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

  • Масштабирование, смещение, поворот всех мешей одновременно ( всей модели )

    Для этого можно воспользоваться пунктами меню Menu->Edit->Model. Вращение задаётся в градусах на которые надо повернуть модель относительно осей X, Y и Z. Масштабирование - это во сколько раз надо умножить размер модели. 2 - значит увеличить вдвое. 0.5 - значит уменьшить вдвое и т. д.
    Отцентрировать все меши одновременно можно нажав на кнопку Model->Mesh->Centrate удерживая при этом клавишу Shift.

  • Уменьшение числа мешей в модели

    Для этого можно воспользоваться пунктами меню Menu->Edit->Model->All meshes to one. Эта опция собирает все меши модели в первый, при этом треугольники группирует по материалам.

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

  • Работа со второй текстурой ( текстурой лайтмепа )

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

    По-умолчанию вторая текстура не используется. Чтобы она начала использоваться надо выбрать для неё материал Model->Face->Change material .... Второй список.

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

    Чтобы переключиться на работу с текстурными координатами второй текстуры, нужно выбрать Model->Textrue coord->Textrue 2. Все действия, которые над ней производятся аналогичны действиям над первой текстурой.

  • Использование Цел-шейдеров ( CelShaders )

    Чтобы из использовать видеокарта должна поддерживать шейдеры.

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

    CelShader'ы в программе сделаны на компоненте TGLCelShader из состава GLScene. Сделаны специально для GLScene, чтобы можно было посмотреть как модель будет там выглядеть. Но поскольку разные CelShader'ы обычно делают одно и тоже, то это может пригодиться и пользователям других движков.

    Чтобы посмотреть как это работает, можно, например, создав геосферу на 100 точек Primitives->Geosphere->Points = 100->Create. Создать текстуру Materials->Textrue effects->Random texture. И включить шейдеры Materials->CelShader.

    Появляются две галочки Outlines и Textured. Первая - это включить показ контура. Вторая - включить текстуру. Кроме них появляется окошко выбора ширины контура, и кнопка выбора цвета контура. Если текстура отключена, то можно изменяя цвет материала через Materials->Diffuse можно получать различные расцветки.

    Играясь со всеми этими опциями можно понять как это выглядит.


Источник: http://lodka3d.narod.ru/help.html


Поделись с друзьями



Рекомендуем посмотреть ещё:


Закрыть ... [X]

Ещё статьи по теме: Кости в MilkShape 3d / Форум / Графический Дизайн /
Плетение из газет круглого дна
Украшение комнаты к рождению ребенка
Бисероплетение жираф
Связать прихватку символ 2018 года крючком
Как плести саржевое переплетение из бумаги

Milkshape 3d отвязать кости Milkshape 3d отвязать кости Milkshape 3d отвязать кости Milkshape 3d отвязать кости Milkshape 3d отвязать кости Milkshape 3d отвязать кости Milkshape 3d отвязать кости Milkshape 3d отвязать кости

ШОКИРУЮЩИЕ НОВОСТИ