Перейти к содержимому

Как уменьшить полигоны в 3d max

  • автор:

Уменьшение количества полигонов 3D модели в Autodesk 3Ds Max

Уменьшение количества полигонов 3D модели в Autodesk 3Ds Max

Бывают ситуации, когда требуется уменьшить количество вершин у высокополигональной модели с сохранением геометрии. В этой статье будут рассмотрены некоторые способы решения данной задачи, с помощью специальных инструментов программы Autodesk 3Ds Max: стандартных модификаторов «MultiRes», «Optimize», «ProOptimize» и специального плагина «Polygon Cruncher».

Сразу необходимо сделать одно важное замечание. Если требуется уменьшать полигональную сетку у 3D модели, которая состоит из нескольких миллионов полигонов (а то и десятков миллионов), то для этого нужен мощный компьютер с большим объемом оперативной памяти. Если же ресурсов «железа» не достаточно, то целесообразно 3D модель разделить на несколько частей путем поочередного удаления некоторых групп полигонов и экспорта/импорта по частям.

Так же отметим, что 3D модели, состоящие из нескольких миллионов полигонов, хорошо открываются через Autodesk 3Ds Max. Многие 3D программы при аналогичных характеристиках компьютера обычно зависают, например, Blender, MODO, Sculptris.

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

1. Подготовка 3D модели

В качестве примера была взята стандартная модель из бесплатного 3D редактора Blender голова обезьяны «Сюзанна», которая состоит из 507 вершин, 1005 ребер и 500 граней.

К данной модели сделана развертка, а также наложена текстура для более наглядного результата изменения полигональной сетки. После этого был применен модификатор «Subdivision Surface», с количеством итераций равным 3. В итоге получили высокополигональную модель с 31 658 вершинами, 63 144 ребрами и 31 488 гранями.

Уменьшение количества полигонов 3D модели в Autodesk 3Ds Max

2. Уменьшение количества полигонов в программе Autodesk 3Ds Max

Итак, импортируем высокополигональную модель в Autodesk 3Ds Max. Правой кнопкой мыши через опцию «Convert To» переведем её из «Edit Mesh» в «Edit Poly». Отметим, что при этом количество вершин немного увеличится, в данном случае, с 31 488 до 31 658.

Для уменьшения количества полигонов в Autodesk 3Ds Max есть несколько как стандартных модификаторов, так и специальных плагинов. Рассмотрим некоторые их.

2.1 Модификатор «MultiRes»

Модификатор «MultiRes» (Множественное разрешение) относится к стандартным модификаторам 3Ds Max и находится во вкладке «Modify» (Модификаторы) в списке Modifier List (Список модификаторов). Он является наиболее эффективным для оптимизации полигональной сетки в этой программе, поэтому рассмотрим его более подробно.

2.1.1 Уменьшение количества вершин

Применяем модификатор «MultiRes» к модели и в самом низу нажимаем кнопку «Generate» (Генерировать). После этого станет активным раздел «Resolution» (Разрешение) со следующими задаваемыми параметрами:

  • «Vert Percent» (Процент Вершин) позволяет установить значение в процентах, до которого необходимо уменьшить модель;
  • «Vert Count» (Число Вершин) позволяет установить необходимое количество вершин, до которых необходимо уменьшить модель.

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

Уменьшение количества полигонов 3D модели в Autodesk 3Ds Max

Как видим, модель, более-менее сохранила форму, но текстура у левого виска лежит не так как нужно.

2.1.2 Сохранение расположения текстуры

Это исправляется путем увеличения количества вершин, например до 2%. Либо можно пойти другим путем, через закрепление координат выбранных вершин, которые при оптимизации сетки модификатор трогать не будет. Для этого предназначен параметр «Maintain Base Vertex» в разделе «Generation Parameters» (Задать Параметры).

Активируем его галочкой. Увеличиваем количество вершин до той геометрии, при которой текстура на модели ляжет как надо, например до 2%.

После этого нажимаем на «+» у модификатора «MultiRes» и выбираем «Vertex» (Вершины). Теперь мышью при зажатой клавише «Ctrl» нужно указать те вершины, расположение которых необходимо сохранить. В данном случае выбраны 5 вершин. Затем, нажимаем кнопку «Generate».

Уменьшение количества полигонов 3D модели в Autodesk 3Ds Max

После этого устанавливаем нужное количество вершин в «Vert Count», в данном случае 507. Таким образом, рисунок текстуры на модели будет расположен как нужно при прежнем количестве вершин.

Уменьшение количества полигонов 3D модели в Autodesk 3Ds Max

Рассмотрим другие важные параметры этого раздела данного модификатора.

Раздел «Generation Parameters» (Задать Параметры)

«Vertex Merging» (Слияние Вершин) – предназначен для соединения разных элементов одного объекта при оптимизации полигональной сетки. Например, в данном случае, Сюзанна состоит из трех элементов: головы и двух глаз. Оптимизация сетки у этих элементов происходит отдельно друг от друга. Вершины глаз находятся на различном расстоянии от вершин головы. Если диапазон этого расстояния указать в данном параметре, то они соединятся. Например, при значении 0,5 сантиметров, это будет выглядеть следующим образом.

Уменьшение количества полигонов 3D модели в Autodesk 3Ds Max

Как видим, вершины глаз, находящиеся на расстоянии до 0,5 сантиметров, соединились с вершинами головы.

Рассмотри другие важные параметры:

  • «Within Mesh» (Внутри Сетки) объединяет вершины не только между элементами, но и внутри каждого элемента общей сетки при заданном значении «Vertex Merging»;
  • «Boundary Metric» (Метрика Границ) старается сохранить форму на границе областей с разными материалами;
  • «Crease Angle» (Сгиб Угла) определяет угол между соседними гранями, который будет отображаться как сглаженный.

2.2 Модификатор «Optimize»

Изучим следующий модификатор. «Optimize» (оптимизация) – также является стандартным модификатором уменьшения граней объекта при сохранении её исходной формы.

Он более ранний, чем модификатор «MultiRes», поэтому он не такой функциональный. В частности, у него отсутствует такая полезная функция, как закрепление вершин, которая позволяет корректировать нужное отображение текстуры на объекте.

Некоторые специалисты по 3D моделированию вообще против его использования, так как, по их мнению, он очень сильно портит полигональную сетку. Но, все-таки списывать со счетов данный модификатор рано, так как, если «MultiRes» больше подходит для работы с вершинами 3D объекта, то модификатор «Optimize» больше рассчитан на работу с ребрами и гранями.

Поэтому, кратко рассмотрим его основные параметры, которые расположены в разделе «Optimize» (Оптимизация) во вкладке «Parameters» (Параметры):

«Face Thresh» (Разбиение Граней) – разбивает грани по заданному значению, чем оно больше, тем меньше полигонов:

Уменьшение количества полигонов 3D модели в Autodesk 3Ds Max

«Edge Thresh» (Разбиение Ребер) – разбивает ребра по заданному значению, чем оно больше, тем меньше полигонов:

Уменьшение количества полигонов 3D модели в Autodesk 3Ds Max

«Bias» (Срез) – отвечает за количество ребер и фасок, чем оно выше, тем больше полигонов:

Уменьшение количества полигонов 3D модели в Autodesk 3Ds Max

«Max Edge Len» (Максимальная Длина Ребра) – устанавливает максимальную длину ребёр объекта, чем больше это значение, тем меньше полигонов:

Уменьшение количества полигонов 3D модели в Autodesk 3Ds Max

2.3 Модификатор «ProOptimize»

Уменьшить количество полигонов 3D модели с сохранением её геометрии можно ещё одним стандартным модификатором «ProOptimize» (Профессиональная Оптимизация).

При применении данного модификатора, необходимо нажать на кнопку «Calculate» (Посчитать) во вкладке «Optimization Lever» (Уровень Оптимизации), тем самым произойдет подсчет вершин 3D объекта.

Аналогично модификатору «MultiRes», можно установить либо нужное количество вершин, либо их процентное соотношение. Установим значение равное 507.

Уменьшение количества полигонов 3D модели в Autodesk 3Ds Max

Как видим, исчезла текстура. Чтобы её вернуть, необходимо во вкладке «Optimization Options» (Параметры Оптимизации) в разделе «Materials and UVs» (Материалы и Развертки) активировать опцию «Keep Textures» (Сохранить Текстуры), а после снова пересчитать вершины кнопкой «Calculate».

Уменьшение количества полигонов 3D модели в Autodesk 3Ds Max

Теперь сравним полученный результат оптимизации полигональной сетки этого модификатора с результатом модификатора «MultiRes»:

Уменьшение количества полигонов 3D модели в Autodesk 3Ds Max

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

В данном модификаторе есть возможность оптимизировать сетку объекта симметрично по выбранным осям. Это делается через вкладку «Symmetry Options» (Опции Симметрии).

Уменьшение количества полигонов 3D модели в Autodesk 3Ds Max

Бывает, что при просчете сетки модели, появляется облако вершин, представляющее собой лишь точки без ребер и граней. Чтобы это исправить, необходимо перед просчетом, во вкладке «Optimization Options» в разделе «Merge Tool» (Инструмент Соединения) активировать опцию «Merge Vertices» (Соединение Вершин).

2.3 Плагин «Polygon Cruncher»

Помимо стандартных модификаторов Autodesk 3Ds Max для оптимизации полигональной сетки можно использовать специальный плагин «Polygon Cruncher» (Полигональное Сжатие). Он платный, но бесплатно его можно использовать в течение трех дней.

Модель загружается стандартно через вкладку «File» => «Open». Отображение текстуры включается активацией опции «Keep UV Textures» (Сохранить Текстуры).

Уменьшение количества полигонов 3D модели в Autodesk 3Ds Max

После нажатия внизу на кнопку «Compute Optimization» (Вычисление Оптимизации) откроется дополнительное меню, в котором можно указать количество нужных вершин или граней. Ниже автоматически будет показана информация оптимизации в процентном соотношении. Установим количество вершин равное 507.

Уменьшение количества полигонов 3D модели в Autodesk 3Ds Max

Для сравнения полученную модель экспортируем в формат .OBJ и импортируем в 3Ds Max.

Уменьшение количества полигонов 3D модели в Autodesk 3Ds Max

Результат получился, почти такой же, как и при использовании стандартного модификатора «MultiRes» с той же самой проблемой исчезновения части текстуры.

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

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

Напомним, что на сайте постоянно обновляются уроки по 3D-графике для новичков и профессионалов. Например, вы можете почитать урок по моделированию спичечного коробка в программе 3ds Max.

Перепечатка и использования данного материала без прямой обратной ссылки категорически запрещена!

Как сократить количество полигонов

Всем доброго дня. Очень нужен совет как уменьшить количество полигов
на лепнине. Узоры на карнизах очень увеличили количество полигонов и
и вес всей сцены. Как можно решить эту проблему.
P.S. Очень нужна помощь, заранее спасибо

На сайте c 03.04.2008
Сообщений: 704
Москва
Модификаторы Optimize и ProOptimizer
На сайте c 12.07.2007
Сообщений: 655
Саранск

Обычно я уменьшаю MultiRes. Но нужно аккуратно, иначе сильно поломает Генерируешь и уменьшаешь значение

На сайте c 16.04.2010
Сообщений: 2
Спасибо, сейчас буду пробовать
На сайте c 14.05.2008
Сообщений: 804
Но только смотри, на супер огромный (face. овые) моделей MultiRes зависает.
На сайте c 22.11.2006
Сообщений: 2040
Откуда ни возьмись.
есть еще вроде polygon cruncher плаг, только сам не пробовал, просто как вариант.
На сайте c 27.02.2008
Сообщений: 105
Алмата

По моему опыту самый лучший способ — polygon cruncher . Только у меня он работал 1 месяц, потом потребовал ключ.
теперь использую Prooptimaise. Если есть возможность купи polygon cruncher.

На сайте c 31.10.2008
Сообщений: 3872

Сама программа Portable Mootools 3D Photo Browser for 3D, бестолковая и даже вредная(т.к. все 3Д файлы собой ассоциирует), НО, с ней идет Polygon Cruncher. с ключиком!
Polygon Cruncher действительно сильная вещь!
Вес прим: 25Мб
http://depositfiles.com/ru/files/f36tyvua7
http://rapidshare.com/files/257467823/Mootools.3D.Photo.Browser.rar
http://uploading.com/files/1E111HO0/Mootools.3D.Photo.Browser.rar.html

На сайте c 04.12.2007
Сообщений: 1512
гастарбайтер в Москве, а так я из Жопинска

чота мне подумалось — чисто не там, где подметают, а там где не мусорят. Изначально надо моделить так, чтобы полигоны не получались в огромном-неподъёмном количестве.

Ну а если модель скачана(не тобой смоделена) — никакие полигоны не уменьшать, а перекинуть куда-то в прокси или иксреф или куда там перекидывать модно щас.

На сайте c 31.10.2008
Сообщений: 3872

voverrr, ты когда нибудь с реалфло сетку експортил? Или ты фонтаны моделишь сразу «подъемными» полигонами? После Браша модель тоже не балерина! А прокси создается только после редактирования (в т.ч. оптимизации).

Я свои модели сам делаю, так вот я сначала сетку разглажу смусом, а потом оптимизирую «Polygon Cruncher»ом, результат: легкая и гладкая моделька.
Попробуй сначала Нормальный оптимизатор, или научи моделить так «чтобы полигоны не получались в огромном-неподъёмном количестве».
Может тогда действительно «подметать» не придется.

А принцип «сначала искусственно нагнать количество полигонов, а потом оптимизировать их» — к чему?
Для «легкая и гладкая моделька» Не на боксы же «нагоняют» полигоны.
Polygon Cruncher в сложных местах оставляет сетку плотнее и вообще хорошо сохраняет форму.
Вообще оптимизация — дело личное. Я оптимизирую для быстрого просчета сложных сеток. Ты изначально делаешь правильную сетку. (видимо тебе так быстрее). А у кого то рендер-ферма есть и чихать ему на кол-во полигонов.
Вопрос стоял как оптимизировать а не зачем оптимизировать.

На сайте c 04.12.2007
Сообщений: 1512
гастарбайтер в Москве, а так я из Жопинска

Ну, фонтаны может и не моделю(даже и не представляю — как это делать).
Для проверки плотности сетки есть такая штука как лоу-поли модель с накинутым модификатором турбосмуз или мешмуз, кому что нравится. И при нажатии кнопочки 7 в углу появляется информация по количеству поликов-вертексов-граней.

Вот и славно, что ты это и так знаешь. Без моей подсказки.

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

По личным наблюдения — все операции с вертексами сделанные не руками, а разными приспособлениями, типа полигонкранчера или полибуста или скрипта типа Badvertexselect(каждый пусть вспомнит свои любимые плагины) — требуют ручной доработки, соразмерной по времени с основной работой.

Исходя из этого я и сделал для себя вывод — использовать минимальные средства: лоу-поли+турбосмуз. Зачастую даже и Збраш не нужен.

А принцип «сначала искусственно нагнать количество полигонов, а потом оптимизировать их» — к чему?

Нужна помощь с упрощением сетки и количества полигонов.

Всем привет! Есть такая проблема. Модель не приняли за большое количество полигонов примерно 1.6 млн. Написали уменьшить количество итераций. Пионы моделировал впервые, поэтому сделал несколько ошибок. Был наложен турбосмус и применен коллапс. как можно на данном этапе уменьшить количество полигонов? Если применить модификатор ProOptimizer, могут модель после этого приять? Сетка после модификатора уже будет EditMesh

На сайте c 21.04.2010
Сообщений: 80
Попробуйте quad remesher
На сайте c 23.09.2019
Сообщений: 170
Цитата ChDenis:

Всем привет! Есть такая проблема. Модель не приняли за большое количество полигонов примерно 1.6 млн. Написали уменьшить количество итераций. Пионы моделировал впервые, поэтому сделал несколько ошибок. Был наложен турбосмус и применен коллапс. как можно на данном этапе уменьшить количество полигонов? Если применить модификатор ProOptimizer, могут модель после этого приять? Сетка после модификатора уже будет EditMesh

TurboReverse. Я им ещё не пользовался, на видео только видел. Попробуй, может поможет.

На сайте c 06.05.2014
Сообщений: 3034
Краснодар
На сайте c 05.11.2017
Сообщений: 8

Всем спасибо за советы! При ретопологии столкнулся с такими проблемами. quad remesher после ретопологии взлетают текстурные координаты на лепестках, а в ПроОптимайзер текстуры остаются но при уменьшении точек на половину, геометрия становится более редкой, однако количество полигонов остается та же. Мешер подходит идеально, но перетекстуреваты каждый лепесток не вариант. кто что может посоветовать?

На сайте c 06.05.2014
Сообщений: 3034
Краснодар

ChDenis

вам же написали, инструменты ретопологии удаляют развертку, придется повторно ее создавать

На сайте c 06.08.2013
Сообщений: 1916
Москва

ChDenis, в браше децемейшен мастером оптимайзь, с зажатой кнопкой кип ювис. будут не квады, но думаю не беда.

На сайте c 06.05.2014
Сообщений: 3034
Краснодар

Так в чем проблема то? Скрипты что подсказали убирают итерации турбосмуфа и оставляет развертку, на персии найдите и попробуйте, квад ремешер это ретоплогия — машинная обводка модели там нет развертки так как новая сетка строится. Лучше заморочится и сделать нормально, треугольники могут во фри модераторы пульнуть не надо их злить))

На сайте c 28.02.2017
Сообщений: 2163
Omsk

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

На сайте c 05.11.2017
Сообщений: 8

Хочу выразить всем огромную благодарность за советы! У меня все получилось! Модельку приняли как лайт! Помог TurboReverse. им сократил количество полигонов с 1.6млн до 650 тыс. без потери текстур, но и плагин QuadRemesher был для меня реальным открытием, которым я точно буду пользоваться! Еще раз всем спасибо! Всем хорошего дня!

На сайте c 19.10.2010
Сообщений: 679
Peace

Еще можно было переделать через Pro optimizer. галочка KeepTextures сохранила бы текстуры, а smooth — autosmooth сгладил бы неровности. Там можно выбрать, какой %оставить. Сколько бы ни выбрали (до 10%), получилось бы годно. Это первый, так скажем, неотложный, скоростной способ резко уменьшить кол-во поликов, без потери вкач-ве рендера. Сетка станет треугольной, но кач-во рендера не упадет. Ну и оригинал у вас останется, сетка станет почти не способной к изменению, что не позволит скомкнистить вашу геометрию, тк такая сетка никому не нужна, кроме рендер движка)

На сайте c 25.05.2015
Сообщений: 1053
крск

Почему нет очевидного ответа — сделать еще раз и на этот раз правильно, следить за поликаунтом, не коллапсить стек. 56мб всё еще многовасто, следующую попытку попробуйте уместить в 6мб. И в превью модели все равно фигурирует сетка с миллиардом полигонов.

На сайте c 05.11.2017
Сообщений: 8
Цитата giglen:

Еще можно было переделать через Pro optimizer. галочка KeepTextures сохранила бы текстуры, а smooth — autosmooth сгладил бы неровности. Там можно выбрать, какой %оставить. Сколько бы ни выбрали (до 10%), получилось бы годно. Это первый, так скажем, неотложный, скоростной способ резко уменьшить кол-во поликов, без потери вкач-ве рендера. Сетка станет треугольной, но кач-во рендера не упадет. Ну и оригинал у вас останется, сетка станет почти не способной к изменению, что не позволит скомкнистить вашу геометрию, тк такая сетка никому не нужна, кроме рендер движка)

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

Цитата ViTcore:

Почему нет очевидного ответа — сделать еще раз и на этот раз правильно, следить за поликаунтом, не коллапсить стек. 56мб всё еще многовасто, следующую попытку попробуйте уместить в 6мб. И в превью модели все равно фигурирует сетка с миллиардом полигонов.

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

Уменьшаем количество полигонов модели в 3d max

Бывает так, что нам нужно упростить модель. Делается это, например, чтобы облегчить сцену, оптимизировать работу с объектом, или же модель изначально была создана в сторонних программах, или автор модельки при экспорте задал наивысшее число полигонов. В уроке рассмотрим 3 модификатора: Optimize, ProOptimizer, Multires.

Совет: нажмите клавишу «7», чтобы во вьюпорте отображалась информация о количестве полигонов и вершин объекта.

Модификатор Optimize

poly1

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

  • Fase Thresh — отвечает за разбиение граней;
  • Edge Thresh — разбивает ребра;
  • Max Edge Len — задает максимальную длину ребра;
  • Auto Edge — включает режим автоматической оптимизации;
  • Bias — задает количество полигонов.

Играя со значениями этих параметров мы уменьшаем количество полигонов. В режиме Realistic (Shift+F3) визуально оцениваем нужную гладкость модели.
Конвертируем модель в Editable Poly (ПКМ по вьюпорту — Convert to. ), переходим в Object Properties и смотрим параметр Faces (вкладка General). Он показывает количество полигонов модели. С помощью Optimaze можно сократить число полигонов на несколько тысяч без потери качества модели.

poly2

Модификатор ProOptimizer

Там же в Modifier List находим модификатор ProOptimizer. Рассмотрим на примере любимого чайника с намеренно завышенным числом сегментов. Применяем к объекту модификатор. Жмем рассчитать (Сalculate). Указываем на сколько в процентах мы хотим упростить объект (Vertex %) или задаем определенное количество вершин (Vertex Count). Чуть ниже мы видим статистику, где указано количество полигонов до и после модификации.

poly3

poly4

Конвертируем чайник в Editable Poly. Модификатор применился. Сравним два чайника: исходный и с примененным модификатором. Видим, что визуально модель не изменилась, но число полигонов на втором объекте в разы ниже.

Модификатор Multires

Также применяем модификатор через Modifier List. Жмем Generate. Задаем параметры нашего чайника.

  • Vert Percent — процентная доля вершин;
  • Vert Count определяет количество вершин;
  • Fase Count показывает нам число вершин после оптимизации;
  • Max Fase — до оптимизации.

poly5

Это три простых способа оптимизировать модель без потери качества с помощью стандартных модификаторов 3д макс. Пробуйте и у вас обязательно все получится!
Делитесь с друзьями статьей и ищите остальные ну ооочень полезные советы в нашей группе Вконтакте.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *