Возвращение сплайна

Предисловие.

Делал я заказчику ряд моделей мебели с веревочным плетением. Задача стояла только моделировать, развертку, текстурирование и рендер делал другой человек. Естественно веревочное плетение я делал сплайнами и сразу генерировал Mapping Coords

Чтобы при текстурировании веревки, текстуры ложились правильно. Стек не сворачивал, для удобства редактирования.

И вот мне от заказчика приходит письмо, что одна из моих моделей сделана "криво" и текстуры на веревку не ложатся. Я удивился и попросил показать файл. Как выяснилось, это была не моя модель. Её делал кто то другой. И Mapping Coords на сплайнах был не установлен а стек свернут.

Меня попросили переделать. Конечно в голове была одна мысль, придется заново строить сплайны плетения. А кроме этой атаманки есть еще и кресло и уйдет на переплетение время. Хотелось как то сделать всё на автомате. Лень двигатель прогресса ))

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

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

1. Сначала удаляем у шнура, так называемые "крышки" превращаем цилиндрический объект в трубу. Это важно, иначе будут проблемы. Накидываем на полигональный шнур модификатор Push и максимально ужимаем шнур.

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

2. Накидываем сверху модификатор Edit Poly переходим на ребра и выделяем необходимый нам луп

3. Переводим выделенный луп в сплайн, ПКМ на нем и

И получаем новый сплайн на 99% идентичный полигональному шнуру. Всё делается на автомате и очень быстро, я дольше писал эту статью ))) 

Надеюсь кому то помогу этим постом сэкономить кучу времени. Спасибо за прочтение.

P.S. Если знаете еще способы, как вернуть сплайн из полигонального объекта, пишите. Я думаю тема нужная

Комментарии (59)

+21
sander_alek
Можно выделить все поперечные ребра и отмасштабировать по всем осям в ноль http://prntscr.com/jugjoi 
+2
booka80
Вариант. А будет работать данный способ если шнур имеет изгибы по всем трем осям и не лежит в плоскости?
+3
sander_alek
Будет. Вотhttp://prntscr.com/jugmv5  восстановил из хеликс-сплайна, которому применил bend почти на 360. По двум или одной оси он не сплющит как надо, а по трем все нормально.
0
formmaster
Не в тему )) Но как настроить такой материал? Как в зибраш...
+2
sander_alek
нужно переключить режим отображения с shaded на clayhttp://prntscr.com/jw7t7t 
+1
formmaster
ай спасибо! Век живи, век учись!
0
Jähman'
Со скейлом отличная идея; осталось раскрыть вопрос конвертации получившегося в исходный сплайн.
На каждом элементе нужно как-то выделить одно ребро и сделать из него луп. Без скрипта такое возможно?
0
sander_alek
Есть один вариант, на вероятность успеха крайне мала.
Я выделил все border-ы и снял выделение с первого и последнего. Потом применил bridge. http://joxi.ru/brR1oRMTJONJ9A http://joxi.ru/eAOXoKJtxkdxYr 
А минусы такие: 1.http://joxi.ru/4Ak7RYJtykYyPA  но можно будет вручную почистить, после конвертации в сплайн.
2. Не факт что получится один элемент, возможно их общее количество просто уменьшится вдвое.
Если других вариантов нет, то можно попробовать этот, только скрестив перед этим пальцы
0
Predator84
команда ring если я правильно понял вопросhttp://prntscr.com/jurw14  а дальше луп
+1
booka80
А вот смотрите что получается у меня
выделилhttps://prnt.sc/jugo2k 
начал масштабироватьhttps://prnt.sc/jugoar 
провал (((
+3
sander_alek
Нужно выделить только поперечные ребраhttp://prntscr.com/jugpy4 
+2
booka80
фу ты )) Затупил я. Да это вариант. Он получится. Спасибо. Теперь есть два варианта, а то не было ни одного )))
+7
corstm
http://www.scriptspot.com/3ds-max/scripts/spline-in-middle
+1
KSABA
Способ имеет место быть) Минус - время на установку скрипта ) Имхо
+11
fartt
В 1. пункте, после удаления "крышек", я бы использовал Shell, который почти идеально позволит свести все ребра в центр сечения, затем удалить новые "крышки" и внешнюю оболочку (исходный меш).
0
booka80
да, это будет корректно.
+1
Jähman'
а если у шнура сечение не круглое?
+14
2600
Тот момент, когда обсуждение не хуже самого тутора)
0
booka80
согласен. Теперь имеем несколько способов в одном месте.
+3
GreenKvach
можно удалить ровно половину шнура и сделать бридж левой и правой части, потом коннект этого бриджа и снять сплайн. тут правда нужна геометрия которая делится по полам. а вообще проще всего было сделать развертку исходной геометрии, и заняло бы это примерно пару минут. UVW UNwarp есть функция unfold from loop.
0
dark_night
Спасибо! Полезная в вещь!
0
pogreblegik
Я бы на вашем месте послал куда подальше такого заказчика или послал искать вашу модель в том виде каком вы ее высылали ему.
Или как вариант просто выслать последнюю сохраненную версию кресла и не заниматься этой ерундой )
+1
booka80
Прочитайте внимательнее предисловие))) Модель оказалась не моя. Я переделывал чужую модель. Естественно за деньги. По этому посылать смысла не было.)))
0
pogreblegik
Да извините,не правильно понял! ))
+3
S.V.
Спасибо.Если урок получит денежный приз - надо делиться с соавтором))
+5
booka80
Создавая урок, совершенно не думал о выгоде. Я просто сам "помешан" на автоматизациях процесса моделирования и большинство информации почерпнул именно тут, на сайте. А сейчас столкнулся с тем, что информация была не найдена. Когда нашел решение, тут же им поделился. По этому с удовольствием буду делиться и вознаграждением с соавторами! Главное, что теперь есть информация на эту тему и она представлена различными способами. За, что спасибо соавторам!
sander_alek, corstm, fartt готовьтесь! Скоро будим "пилить" выигрыш )))
0
Jähman'
Вобщем рабочий алгоритм восстановления выглядит так.
Предполагается, что все прутья имеют стандарный сплайновый маппинг.

1. Сперва выделяем фейсы прутьев с помощью By Angle таким образом, чтобы невыделенными остались только cap'ы
2 .Интвертируем выделение
3. Удаляем cap'ы
4. Добавляем push модификатор и уменьшаем толщину прутьев в ноль
5. Вешаем на модель unwrap модификатор (только чтобы убедиться что дальнейшее имеет смысл)
6. Если с маппингом никаких манипуляций не производилось то правый вертикальный ряд еджей будет соответствовать шву.
7. Вешаем VolSelect модификатор в режиме Vertex. Выбираем по текстуре.
8. В слот текстуры добавляем gradient_ramp. В режиме solid. Настраиваем его так чтобы справа была белая полоса, процентов 10 от ширины рампа.
9. Вешаем Edit_Poly, переходим в режим вертексов. Convert_to_edge либо Ctrl + клик по иконке Edge
10. Create Shape

Написал бы урок с картинками, но в отеле такой трешовый интернет что прям беда.
0
booka80
ну, как бы те же яйца, только в профиль и с бОльшим, количеством итераций.
0
Jähman'
тогда и вам аналогичный вопрос.
"На каждом элементе нужно как-то выделить одно ребро и сделать из него луп. Без скрипта такое возможно?"
В вашем случае элементов раз два и обчелся и можно это сделать руками. А в случае в тысячей веревок?
+1
booka80
Возможно, в случае тысячи веревок... Но, данный урок написан именно для возвращения правильного мапинга. В вашем случае мапинг должен быть уже правильным иначе чуда не произойдет. А если мапинг правильный, то и возвращать полигоналку в сплайн нет нужды. Естественно в моем случае и в рамках этого урока. Ваш вариант отличный, но вот его задача, просто вернуть сплайн, а нужно (в моем случае) вернуть возможность наложения текстур по правильному мапингу. Если бы они ложились на полигоналку, то и возвращать сплайн не было бы нужды.
+1
Jähman'
Согласен. Прочитал название урока и как-то мимо глаз пролетело что его цель именно восстановление маппинга.
0
nicoolin
а если выделить луп ребер на всю длину шнура, сделать екструде с значением, равным радиусу шнура со знаком минус, ребро пойдет по центру шнура, и из него катать сплайн... не проканает?
0
booka80
Пробовал ))) Не работает. Екструд ребра идет винтом по всей длине шнура.
+13
Rendom
Выделить ребра по одной стороне командой Loop
Create Shape
Назначить Sweep
Указываем Радиус и смещение(равное радиусу) по оси x или y
Вкл. Gen Mapping Coords.
https://cloud.mail.ru/public/AeXK/7vF5CbHNV 
+1
booka80
Отличный вариант!
0
2garyn
думал все в курсе про Gen Mapping Coords
0
booka80
я тоже
+4
sorter
народ пока ищет пропавшие стрелочки за которые чайник таскается по сцене. Ген мапс корд это другая ступень.
0
Graphicus
Рассмешил )
+1
2garyn
Всё таки не зря в свое время прочитал книгу Верстака на коленках перед монитором за 3д максом 9. Мелочи вроде, а какие важные.
0
booka80
Да, вы молодец.
+2
2garyn
Всем советую это издание. Даже пусть и старой версии.
0
eldarik
Если модель не ваша, а требовали с вас исправить, я так понимаю заказчик тот еще....
А лень да) двигатель 5+
0
booka80
Ну, не требовали, а просили и при этом хорошо платили )))
+1
booka80
sander_alek, corstm, fartt отписал вам в ЛС, пишите мне кошельки, будем пилить приз )))
0
egor98
Как по мне это запарно,легче перемоделить.
0
egor98
Я про запарно думать)))
+2
sander_alek
За дополнение блога в комментариях автор поделился выигрышем! Большое спасибо)

Делитесь знаниями, опытом. Дополняйте блоги своими вариантами решения задачи
0
SHAXZOD AZIMOVICH
+5
0
rareman
Технически правильнее скрипт использовать. Но смекалку нужно развивать, 5+
-1
shinodem
Зачем вообще фиксить модель если о на не ваша?
+2
booka80
Чтобы получить денюжку за работу, поехать на море и лежа на пляже забывать про странные вопросы )))) Я уже выше отвечал на подобный вопрос. Никак не могу понять, от куда у вас появляется мысль в голове, что можно что то делать бесплатно? Это же работа, за неё платят деньги, по этому я её делаю. Надеюсь развернуто ответил.
0
shinodem
теперь ясно, наверное это стоило упомнить в статье =)
0
booka80
Я просто не подозревал, что могут возникнуть сомнения в том, что работа оплачивается.
0
shinodem
Возникает другой вопрос почему заказчик не нашел создателя модели и не попросил включить мапинг в сплайнах ведь наверняка исходник у него был, а он за доп расходы нанял другого человека
+2
booka80
Исходник мне передали, сплайны были переведены в поле. Ну а где создатель модели, одному создателю, создателя модели известно )))
0
Michiko89
Извините за глупый вопрос, но не могу понять, для чего нужен Push? Почему нельзя выделить ребра сразу у Edit Poly?
0
booka80
можно. И этот вариант описан в комментариях.
0
Michiko89
Ясно, спасибо )