четверг, 12 июня 2014 г.

А можно ли из stl перевести файл в 3dm? Может есть какие-то специальные плагины?


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

Итак, STL и 3DM... начнем.

В мире 3D графики, как и в природе, существует две ипостаси - аналоговое и цифровое, натуральное и искусственное, уравнение и его решение. Среди 3D файлов выделяют просто Mesh или "сетку" и NURBS или "вектор". (подробности читайте по ссылкам на википедию).



А если выражаться образно, то можно эти понятия описать примерно так:

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

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


Теперь о том, как же из вектора получается сетка...



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

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

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

Какие же есть способы перевода сетки в NURBS поверхности?


Способ первый - правильный.
Мы берем сетку (желательно чтобы у нас сетка была очень мелкая) и выбираем на ней точки, которые будут узлами для нашего каркаса из резинок. Делаем это таким образом, чтобы нам не пришлось резать наши резиновые лоскуты по диагонали. Режем только по долевой (стараемся). Затем натягиваем резинки на образовавшийся каркас.

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



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

Теперь давайте разберемся с понятиями.


STL файл - это как раз и есть та треугольная сетка, которую мы получаем после разбиения векторной модели из 3DM файла.

Однако, 3DM файл - это контейнер, и может содержать в себе не только векторный формат, но также и сетку. Подробнее также читайте на википедии.

А так ли нужно переводить файл из сетки в векторный формат?


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


Всем успешного моделирования...