Airbus A350-900
3d award

Простенький аналог HardMesh, Mesh Fusion или Flux (Houdini) в Blender - Страница 1

Online|Offline iluska 0.0 9.6 14 июля в 19:38 #2

Аватар iluska
Всем привет. Недавно увидел HardMesh для Maya, а до этого Mesh Fusion в Modo. Всё ждал пока, кто-нибудь сделает аналог в Blender, но не дождался. Также недавно появилось желание поизучать Blender Api. В итоге немного помучавшись, сделал примерный алгоритм и набросал пару скриптов (просто последовательный перечень команд). Пока не удалось автоматизировать его до конца (только вчера начал изучать Blender Api), но результаты уже есть. Ими с вами и делюсь.

Картинки

Если кого заинтересовало, то могу выкладывать прогресс разроботки сюда. Навряд ли выйдет, что-то такое же масштабное, как HardMesh, Mesh Fusion или Flux (Houdini), но хотя бы базовый функционал попробую реализовать.

P.S. Извиняюсь за возможные пунктуационные и орфографические ошибки.
P.P.S. Сам скрипт выложу, когда он приобретет хоть какую-то похожесть на Add-on.

Online|Offline Martiner 28.5 189.5 14 июля в 21:04 #0

Аватар Martiner
Ну наконец-то! Очень интересно, буду следить! Уже хочу попробовать!

Рекомендую запостить на blenderartist.org, там стопудов помогут, и советом, и с кодом (только на ENG).

Online|Offline iluska 0.0 9.6 14 июля в 23:06 #1

Аватар iluska
Martiner, к сожалению мой английский очень плох. Я пока не знаю, как поведет себя мой алгоритм на сложных объектах, потому что он очень примитивен. Все это можно повторить вручную, только времени больше займет. Если хочешь могу расписать последовательность действий, что бы сделать это вручную. Правда присутствуют вот такие искажения на отражении (на красном matcap';е видно).

Спойлер

Online|Offline Martiner 28.5 189.5 15 июля в 10:43 #0

Аватар Martiner
iluska, да, распиши последовательность действий, протестирую :)
к сожалению мой английский очень плох.
если изъясняться простыми фразами, то достаточно гугл переводчика.

Online|Offline iluska 0.0 9.6 15 июля в 22:20 #1

Аватар iluska
Martiner, извиняюсь что долго не писал.

Последовательность действий (для тех кто хочет попробывать)


1. Применяем модификатор Boolean или Booltool.
2. Выделяем острые ребра и отделяем от объекта (separate).
3. Делаем relax (looptools делает лучше стандартного).
4. Конвертируем получившееся в кривую со следующими параметрами.

5. Ставим Mean Tilt на 45 и делаем небольшую фаску (без неё не всегда корректно проходит Boolean).
6. Делаем Union с параметром BMesh.
7. Выделяем выступающие ребра и создаем новую группу вершин.
8. Добавляем модификатор Shrinkwrap со следующими параметрами.
9. Применяем его и удаляем дубли вершин.
10. Добавляем модификатор Bevel (с Vertex Group) и CorrectiveSmooth
Ну и небольшой прогресс за сегодня.
Все выше перечисленные операции по нажатию одной кнопки.
Пока правда присутствует множество ошибок и недоработок.
Если кто-то думал, что будет что-то серьезнее, то извиняюсь, что разочаровал. Додумался, пока только до такой реализации.

Online|Offline Martiner 28.5 189.5 16 июля в 00:59 #0

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

Online|Offline iluska 0.0 9.6 16 июля в 11:30 #1

Аватар iluska
На данный момент автоматизировал последовательность действий. Но накосячил с выделением и ,при одинаковых настройках, скрипт выдает разный результат.

Результат выполнения скрипта


Online|Offline Martiner 28.5 189.5 16 июля в 13:42 #0

Аватар Martiner
Если я правильно понимаю, то скрипт в конце сглаживает всю модель, а не только фаски?
Можно ли применять такой метод (скрипт или вручную) для геометрии с меньшей плотностью сетки, чтоб сделать скругления только на нужных гранях?

Online|Offline iluska 0.0 9.6 16 июля в 15:06 #0

Аватар iluska
Martiner, Сглаживать можно все, фаску или небольшую область вокруг (Vertex Group). По поводу меньшей плотности сетки я пока не пробовал. Сейчас у меня не корректно отрабатывают некоторые этапы. Поэтому пока работает, только с объектами без острых граней. Уже есть идеи как исправить некоторые моменты. И еще больше идей, что попробовать реализовать. Сейчас у меня в коде каша, как и в голове. Сейчас пробую разгрести эту кашу и протестировать каждый этап по отдельности.

Online|Offline iluska 0.0 9.6 16 июля в 15:21 #1

Аватар iluska
для геометрии с меньшей плотностью сетки
Фаску он сделал, но она кривовата.

Спойлер


Online|Offline Martiner 28.5 189.5 16 июля в 18:53 #0

Аватар Martiner
Все выше перечисленные операции по нажатию одной кнопки.
Пока правда присутствует множество ошибок и недоработок.
В принципе, можно в работу скрипта вставить еще один параметр. На этапе создания кривой, добавить ей вершин W > Subdivide. Возможно это поможет справится с участками, где не достаточно вершин, для более плавной фаски (если такие проблемы есть).
Martiner, Сглаживать можно все, фаску или небольшую область вокруг (Vertex Group). По поводу меньшей плотности сетки я пока не пробовал. Сейчас у меня не корректно отрабатывают некоторые этапы. Поэтому пока работает, только с объектами без острых граней. Уже есть идеи как исправить некоторые моменты. И еще больше идей, что попробовать реализовать.
Однозначно продолжай!

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

Online|Offline iluska 0.0 9.6 16 июля в 19:19 #0

Аватар iluska
В принципе, можно в работу скрипта вставить еще один параметр. На этапе создания кривой, добавить ей вершин W > Subdivide. Возможно это поможет справится с участками, где не достаточно вершин, для более плавной фаски (если такие проблемы есть).
Хорошая идея. Попробую.

Online|Offline Martiner 28.5 189.5 18 июля в 12:50 #0

Аватар Martiner
Что-то я пытаюсь воспроизвести порядок действий и у меня ничего не получается, не получается сглаженный результат в конце

Online|Offline iluska 0.0 9.6 18 июля в 16:55 #1

Аватар iluska
Martiner,С острыми углами такой метод не работает. Добавь небольшой скос (на двух объектах).


Online|Offline Martiner 28.5 189.5 18 июля в 17:39 #0

Аватар Martiner
С острыми углами такой метод не работает. Добавь небольшой скос (на двух объектах).
Блин, это наверное совсем наглость, но не мог бы ты запилить видео? :) просто видео, без звука и объяснений будет достаточно.
Мне кажется, что я упускаю какой-нибудь важный момент.

Online|Offline iluska 0.0 9.6 18 июля в 19:57 #0

Аватар iluska
Martiner, сейчас многое доработал, переделал полностью способ выделения нужных вершин. Теперь скрипт работает с плоскостями. Объект которым режут, может быть обычным plane'ом, модификатор bevel после применения остается, и можно менять параметры, правда в меньшую сторону. На каждую фаску, свой bevel. Но, если фаски должны пересекаться, то нужно применить bevel пересекающейся фаски до создание фаски, которая будет её пересекать.

Спойлер

Из ошибок, пока не понял, как бороться с треугольниками на пути bevel'а. Из-за них возникают такие артефакты.

Спойлер

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

P.S. Так и не понял, куда писать в blenderartists. Там есть ветка Released Scripts and Themes, где вроде выкладывают готовые скрипты и ветка Python Support, где вроде ищут помощи в написании.
P.P.S Записывать процесс немножко влом. Надеюсь не обидишься.

Спойлер

Online|Offline iluska 0.0 9.6 18 июля в 21:43 #0

Аватар iluska
Выложил небольшую демонстрацию.

Online|Offline Martiner 28.5 189.5 18 июля в 23:13 #0

Аватар Martiner
Из ошибок, пока не понял, как бороться с треугольниками на пути bevel';;;а. Из-за них возникают такие артефакты.
Подозреваю ,что с ними не получится бороться, так как бевел в блендере не доработан, даже на простой геометрии иногда творит "чудеса". Но попытаться стоит.

P.S. Так и не понял, куда писать в blenderartists. Там есть ветка Released Scripts and Themes, где вроде выкладывают готовые скрипты и ветка Python Support, где вроде ищут помощи в написании.
Скорее всего в Released Scripts and Themes, ты же планируешь опубликовать скрипт, и уже демонстрируешь результаты его работы, если ошибся веткой, то тему просто перенесут в нужную, просто предупреди в теме, что планируешь там опубликовать скрипт и тд.
На видео работа скрипта выглядит интересно :) Побыстрей бы потестить :)
п.с. на видео, последний булеан, там получилась маленькая фаска. Я так понимаю, чтобы сделать ее больше, нужно делать большее значение выдавливания кривой, тогда и бевелу будет место куда увеличиваться?
P.P.S Записывать процесс немножко влом. Надеюсь не обидишься.
Спасибо за картинки, процесс стал более понятен, буду пробовать :)

п.п.с кстати, а почему релакс, а не space? релакс немного деформирует кривую, а спейс не деформируе, только распределяет вершины на одинаковое расстояние.

Online|Offline Sarko83 0.0 0.0 19 июля в 08:43 #0

Аватар Sarko83
создай тут тему. Есть русскоязычные ребята, которые по инглишу шпрехают хорошо. Если помогут общаться им зачтется )) https://blenderartists.org/forum/forumdisplay.php?48-Released-Scripts-and-Themes

Online|Offline iluska 0.0 9.6 19 июля в 13:29 #0

Аватар iluska
Martiner,
п.с. на видео, последний булеан, там получилась маленькая фаска. Я так понимаю, чтобы сделать ее больше, нужно делать большее значение выдавливания кривой, тогда и бевелу будет место куда увеличиваться?
Там пересекаются эти грани и стоит Clamp Overlap.

Спойлер

Без него выглядит так.

Спойлер


п.п.с кстати, а почему релакс, а не space? релакс немного деформирует кривую, а спейс не деформируе, только распределяет вершины на одинаковое расстояние.
Не знаю почему. Но при использовании Space. Результаты всегда разные.
Что бы оставить сообщение вам необходимо войти или зарегистрироваться!

Форумещё

Блогиещё

Популярные урокиещё

Реклама

3dmir.ru - Вся компьютерная графика
      www.megastock.ru