Не плачь - есть Quick Attach!

quick attach3ds maxурок

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

+8
Skap
а вот и царъ
+40
vk3d
Гони, лихачь - есть квик атач. Ты бородач? - есть квик атач. Не сдал курсач - есть квик атач. Нажал детач? - есть квик атач.
Пришел палачь - есть квик атач. Сожрал калач - есть квик атач! ))))))))))))
+1
DoCentttt
По факту
+11
Evilis
- Смотреть видос про квик атач?
- Не, лучше ждать в комментах "срач"
+3
suhiro
вот это талант! )))
+4
vladimir.drobzhev90
С квик аттачем я ловил проблемы, в том числе геометрия терялась (не в скрытый слой, а совсем). Для себя я нашел вариант гораздо лучше это аттачер от солбёрн, тем более он может аттачить сплайны помимо геометрии, единственный минус по сравнению с квик это то что он не аттачит сгруппированную геометрию, но это не существенный косяк.
+1
Sasha-GHOST
С квиком еще громадная проблема он просирает маты. Если несколько объектов с разными матами может срандомить id со всеми вытекающими
+1
vladimir.drobzhev90
Ого, я такого не ловил, но легко могу представить. Вообще макс это как очень хорошая короткая дорога, но есть один минус - она местами заминирована, так что нужно знать как проехать, иначе глюков поймаешь и нервов потратишь вагон)) Надо было в свое время учить блендер)
+2
Sasha-GHOST
Согласен, в максе все мы сталкеры в одной большой зоне. Нужно сначала гайку кинуть, прежде чем идти)
+1
Don_Elzare
Ух, вспомнил 4й макс)) такого шелла не видел давно.
+1
SteamPunk
Вроде все не плохо, но с точки зрения программирования объединение огромного количества объектов в один это одна строчка - несколько слов. Как всегда в максе все очень усложнено.
0
Predator84
Не понял, пришлось подождать несколько минут что бы 1000 чайников саттачить, а сравнения с максовским аттачем нет.
+2
D-d_Man
максовский аттач по списку работает быстрее любого подобного скрипта (пробовал штуки 3-4), другое дело что для простых аттачей такие варианты - это быстро, просто и удобно. Для больших массивов лучше и надёжней аттачить по списку.
+1
D-d_Man
кстати, проверил, Smart Attachhttp://www.scriptspot.com/3ds-max/scripts/smartscripts-attachdetach  в сравнении со стандартным аттачем по списку, итого оба инструмента объединили 1400 чайников примерно за 5 с половиной минут, оба одинаково.
В общем и квик аттач и смарт аттач и аттач по списку сработали одинаково по времени, погрешность в 5 секунд в пределах пяти с половиной минут учитывать нет смысла.
PS сделал доп. проверку - сконвертил чайник в меш и сделал в меше аттач по листу - в итоге тот же объём работы был выполнен за 1.мин.20 сек.
Так что если что через меш аттач гораздо быстрее.
Во всех описанных вариантах после выполнения действия делал Ctrl+Z - сцена возвращалась в исходное состояние, макс не падал, чайники были не инстансные.
+1
D-d_Man
Мне больше нравится Smart Attachhttp://www.scriptspot.com/3ds-max/scripts/smartscripts-attachdetach 
работает быстро, автоматом распознаёт и аттачит меж собой сплайны
+1
paz
попробую, потом напишу
+2
littleboy
Странно, никогда с этими ошибками ( памяти ) не сталкивался)) работал с Editable poly -> Attach [List], так же через терминал все делал при 10 - 20 лямах и все нормально))
интересно получается, почитал этот скрипт и угарнул, там тупо обычный цикл выполняющий добавления объекта в массив и ни каких взаимодействий с памятью, даже уже готовых функций SDK макса по чистки памяти не прописано.ахахах это уже не первый раз встречаю что говорят и пишут одно, а на деле под капотом обычный хомячок в колесе бегает)) походу на нем весь мир держится)))
0
paz
хорошо, да же если абстрагироваться от этого. скрипт удобней чем Attach [List]
+2
littleboy
удобней чем?
вам тяжело вызвать горячей клавишей Attach [List], потом нажать ctr + a и Attach, я быстрее чем за секунду это делаю, зачем засорять макс всякими ненужными скриптами, а потом удивляются "почему макс такой плохой, постоянно ошибки какие то по памяти прилетают"
+4
-NiK-
В 41 строке запускается сборщик мусора.
Но мало того, что автоматический сборщик мусора не стоит запускать внутри циклов, так еще и запускается он там без сохранения undo стэка. Это приводит к тому, что операцию аттача невозможно полностью откатить назад если количество объектов больше размера кучи (он и задаётся в интерфейсе).
___
Вообще все скриптовые решения для массового аттача, которые я пробовал работают в той или иной степени плохо. Да и максовский аттач по списку тоже однопоточный тормоз (хотя проблем с памятью и undo у него быть не должно).
Важно не количество полигонов, а количество объектов. Одно дело аттачить 10 объектов по миллиону поликов, и совсем другое дело аттачить миллион объектов по 10 поликов.
Реально ультимативное решение для таких странных тяжелых задач это бесплатная утилита FstormMeshMerge идущая бонусом к рендеру Fstorm, т.к. написана на плюсах и не программистами Autodesk.
0
paz
интересно. не знал про FstormMeshMerge
0
littleboy
напишите в личку где вы там нашли на 41 строке запуск "сборщик мусора", а то у меня на 41 идет определение общих габаритов объекта
0
littleboy
но если говорить о засорении памяти, то лучше самому контролировать очистку массивов и удаления, потому что были случаи когда писал плагин со своей кастомной UI, то тот "сборщик мусора" был просто тупо бесполезен, я даже специально тесты делал по памяти, и как раз макс ругался, так что не факт что этот сборщик справится и не стоит на него рассчитывать
+1
-NiK-
Комменты к блогу на 3ддд это не место для обсуждения работы с памятью в maxscript, но похоже я сам напросился.
___
Не знаю, что вы имели в виду под "готовой функции SDK макса по чистки памяти" если не GC и какой вы "писали плагин". Плагины и скрипты это разные вещи, и с памятью они работают по разному. Cкрипты на maxscript, плагины на C++. У вас же всё в кучу, и SDK для плагинов и сборщик мусора, который есть только в maxscript.
___
Размер кучи (heap) в которой работают максскрипты по дефолту до смешного мал, но может по необходимости увеличиваться автоматически. При переполнении кучи запускается автоматический сборщик мусора (garbage collect) и он очистит кучу от всего, что не нужно на текущий момент, в том числе массивы.
Ручная очистка массивов через free никогда не высвобождала память в куче, хоть и должна. Назначение массиву undefined тоже. Поможет только gc light:on, или ждать автоматического сборщика в какой-нибудь неудобный момент.
___
Утечки памяти это уже другое, они только раздувают размер кучи пока 3дмакс не свалится. Тут надо знать откуда они могут быть и избегать этих ошибок в коде.
___
Касательно всех этих скриптовых аттачеров, скорее всего главная проблема это undo. Это уже другой участок памяти и с undo нужно быть аккуратным. Если undo отключить, то вероятно и проблем там не останется. Но кому же это интересно аттачить без возможности откатиться.
0
littleboy
Пфффффффффффф, так я сразу написал что бы отписали в личку что бы как минимум разобраться с скриптом. подискутировать и не разводить здесь срач. я потому и писал все максимально сжато и не стал расписывать что макс скрипт а что с++ и как все работает, а вы тупо вывалили здесь.ахахах ещё выставили типа такой не грамотный и типа
ну ладно сам напросился.ахахахах
+1
-NiK-
Хм, пожалуй моё сообщение и правда выглядит немного высокомерно, виноват. Но неграмотным я вас точно не хотел выставить.
0
littleboy
Комментарий удален
0
littleboy
Комментарий удален
0
littleboy
Комментарий удален
0
littleboy
по поводу памяти, в смысле по другому? ахаххах типа через видеокарту ахахаха
напишите как именно по другому мне аж интересно стало)))
вот что написано в справке Autodesk " The function gc() invokes the garbage collector. " - что не понятного?)) у них же на сайте расписано как она работает эта ФУНКЦИЯ.ахахах весь макс работает на SDK 3ds max)))
так же я вам открою небольшой секрет что в макс скрипту можно обращаться к SDK библиотеке на прямую если вы не знаете как это делается это ваши проблемы)))
плюс ко всему если вы не умете контролировать оперативку вручную, отслеживать все те ячейки памяти которые занимаются переменными, массивами, объектами( ООП ) и т.д., неважно какой язык макс, с++, да хоть ява или пайтон - это так же ваши проблемы)))
+2
Slazzo
если не замечать неловкие хахатушки как-то не складывается что именно вы хотите донести, но у меня появился вопрос
что вы имеете ввиду "в макс скрипту можно обращаться к SDK библиотеке на прямую" ?

мне интересно если я что-то упустил но если нет function publishing вы к никакой функций в SDK или вне не сможете обращатся, если имеется ввиду c# библиотеки тогда ок.

но SDK написан на с/с++, а уже высокого уровня абстракций как вы пишете "3ds max и другие программы написаны с помощью скриптов" это относитмя к интерфэйсам как GUI так и публичные структуры API к которым как раз ссылаются макскрипт, питон, c#...

про GC вообще не понял, если ползуетесь SDK вы можете использывать максовский аллокатор или самотоятельно создовать/удалять собственный блок память из OS, минуя SDK
0
littleboy
Комментарий удален
0
-NiK-
"человечек" хотел сказать, что на maxscript можно контролировать память не так тщательно, как на плюсах. Ваше мнение на этот счет уже известно, можете лишний раз не повторяться.
+1
Slazzo
сдесь конечно не то место чтобы об этом расуждать но думаю это последний пост тут, не воспринимать как спор.

1. через c# вы достучитесь только до публичного API, корень и функционал SDK не доступен, вот вам маленкий пример попробуйте внедрить простой рендер плагин без с++.

2. никакие "структуры" в SDK не написаны скриптами, и скрипты не компилется, он просто парсится в байткод и вызывают за ранее подготовленые блоки кода.

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

Если хотите сами управлять алокациями и освобождение памяти добро пожаловать в с++, даже в c# это однозначно сделать не получится потому что там тоже GC.

"не зря же люди жалуются что в таком примитивном коде при этаче теряется некоторая геометрия, ну не утечки ли это?"
если честно тысячи раз аттачил и меш и поли и никогда не видел чтобы геометрия испарялась, да там код не тривиален но операция впринципе простая и назвать это отсутсвие полигонов утечкой памяти не стал бы, может так говорят про булеан.. там то и понятно алгоритм вполне способен на это.
0
littleboy
по поводу места рассуждения я с вами полностью согласен, опять таки из за этого я и писал что бы писали в личку))
так же я сразу сказал что я все в грубой форме пишу, если мы сейчас начнем рассуждать что и как работает в подробностях, то здесь просто образуется книжка и не с одной частью))
по поводу последнего поста я тоже с вами согласен, говорить не о чем можно вечно, я тоже уже выписывать больше не буду, я лучше это время в полезное русло инвестирую)))
по поводу рендера, я вам хоть рендер на OpenGL внедрю в макс, но какой смысл, так же я не говорю что я это сделаю с помощью макс скрипта.ахахха хотя можно было бы попробовать)) все то что было специально сокращено вы собираете все в кучу и принимаете как одно целое( грубые примеры на простых вещах и то с чего начался разговор )) надо же как то анализировать что вы собираетесь писать, если я буду писать рендер зачем мне все хардкодить в максскрипт если уже проще сразу в студии создать отдельно проект на с# или на с++ и писать все там не страдая этой лажой и думать постоянно о том как оно будет собираться.
может вы меня не так поняли, я не писал что можно и нужно писать все на макс скрипту целое API и прочие вещи, это же бред))
в самом верху ещё, я все писал и пишу максимально упрощено, я не собираюсь разбрасываться заумными терминами которыми на данном ресурсе люди вообще не поймут что и как, я даже более чем уверен что 99% людей здесь даже не знают что такое API. здесь CG артисты а не программисты, поэтому я пишу все максимально просто и тупо,
если СДК не написан скриптами, то расскажите как они написали все те коды и что это такое если не скрипты в начальном виде, по вашему типа dll файли небыли в виде с++ к примеру)
так же я не говорил что с# это идеальный вариант для контроля памяти, я говорил чисто исключительно за dll и прочую лабудень что связана с СДК)
плюс ко всему я не спрашивал у вас как мне управлять памятью, я разберусь без ваших умозаключений что как и где мне делать))
по поводу последнего, я не писал что здесь железобетонно в этом проблема, если бы я писал в чем проблема там бы было все однозначно и коротко, а не перечислены стебы то как макс работает))
в общем всем только Добра!)))
0
littleboy
все, нашел, открыл другую версию, скрипта))
странно почему с первой версии не вызвать чисто для вида эту функцию))
0
-NiK-
Комментарий удален
0
Uraken
а в ютубе есть скорость 5х?
А самый крутой скрипт для детача/аттача http://www.scriptspot.com/3ds-max/scripts/uniattach-detacher 
Велдит вершины в сплайнах (кроме всего прочего)
+3
romsik
Да такая кнопка есть:
создаете закладку в хроме Название можете любое
Url: javascript:document.getElementsByClassName("video-stream html5-main-video")[0].playbackRate = 4.6;
4.6 меняете на 5 или 3 или чего Вам нужно. Во время проигрывания видео на ютубе нажимаете эту закладку и скорость будет которую Вы указали, обратно ставите как обычно.
0
Uraken
фига себе! спасибо
+2
Rigart
It works! Сегодня буду пробовать это в сцене с кучей стен, перекрытий окон и т.д.
+1
Rigart
Проверил- есть проблемы. Как писал выше vladimir.drobzhev90 может потеряться геометрия. Надо тестить, короче
0
paz
Под видео на ютубе автор скрипта написал. Можно его спросить
+2
dedora
Уважаю труды Паза, Но какой смысл его предназначения скрипта, когда это придает прилично веса на сцену , нежели если таскать по сцене сгруппированные объекты.
Паз, у тебя в примере выделено 824 объекта. Ты не пробовал назначить не 1000, а 824 ? И заодно проверить точность скрипта
:-)
+1
paz
А вот это молодец! )
по поводу точности попробую. про присоединение объектов, ну разные задачи бывают.
мне удобно, ибо быстрей.
+1
dedora
Я ж студент. Учусь
:-)
+2
coden
Не плачу - квик атачу
+3
bysochi
Скрипт реально рабочий, постоянно выручает особенно две кнопки внизу скрипта, которые восстанавливают нормалки, группы сглаживания самых всратых моделек. И да, он быстрее максовского как не крути. На чайниках тестить не стоит. Возьмите ревитовское здание с кучей матералов и все наглядно становится на свои места:)
Из косяков, не вздумайте аттачить геометрию с группами, макс тут же давай до свидания делает..))
+1
vitkor
5 еще до просмотра только за собачью морду)
+2
Outgun
довольно бестолковый скрипт, гораздо полезнее скрипт из серии солборн скриптов, на массовый детач разных элементов модели, на отдельные объекты.