СообщенияДата

Как заставить Hide Unselected работать от клавиши в 3ds max 2023 (windows 10)?

Проверь функцию "Keyboard Shortcut Override Toggle", она должна быть активна.[[link:image_uri:697142,]][[image:697142,sky_image_forum]][[/link]]Я сделал скрипт для операции Hide Unselected.Теперь эта операция работает, как изоляция для подобъектов.https://youtu.be/O7DFrMMKHyg?si=8PnARYfv7IP4FPpY&t=538
25.10.2023

Вопросы по maxScript

В общем, как выяснилось, этот баг макса обычным скриптом убрать нельзя, а жаль. Цитата Legion-236: Цитата AI-Idrey: Полезный скрипт! Здорово было бы, если из плана или вида сбоку при зажатом ALT+колесико происходило бы вращение в ПЕРСПЕКТИВЕ, а не в ортографической проекции. Эх, мечты... Я не пользуюсь орто проекцией в принципе. поэтому этот скрипт тупо меняет орто на перспективу принудительно. Скопируй нижний код в блокнот и сохрани с расширением *.ms в папку 3ds Max ... \scripts\Startup\ Хороший скрипт, можно добавить проверку на активную камеру или источник света и зажатый Alt.А то иногда нужно развернуть вид Top на 90 градусов, тогда он превращается в ортографию и нужно поработать именно в ней, а не в перспективе. Можно добавить в код:  fn sprawdz_TM=(local ViewTp = viewport.getType()if(ViewTp  == #view_iso_user or ViewTp ==#view_camera or ViewTp ==#view_spot ) and keyboard.altPressed then (viewport.setType #view_persp_user))
17.06.2023

Вопросы по maxScript

Вопрос к знатокам.Пишу скрипт для автоматического переключения вида из Camera или Light в Perspective при зажатом ALT+MMB, чтобы камера не сдвигалась и сразу произошло вращение вида в перспективе.Столкнулся с проблемой, что при зажатом колёсике, если срабатывает любой скрипт, который переключает вид из камеры в перспективу (MMB+P), то в максе перестаёт действовать отмена до тех пор, пока не создашь вручную новый объект в сцене.Если использовать функцию undo off на весь скрипт, то отмена всё же будет работать, но только до момента повторного использования скрипта, после чего она снова вырубается.Вопрос, как это можно обойти? Возможно ли запустить функцию отмены через скрипт, а не через создание объекта вручную?
17.06.2023

WIP | kolt_050

Представляю вам 3 новых инструмента MULTI Extrude, Chamfer и Outline.Скрипты позволяют активировать соответствующие инструменты и модификаторы для Edit Poly, Editable Poly, UVW Unwrap и Shape.Если курсор мыши наведен на правый край монитора, то активируются модификаторы Extrude, Chamfer, Inset или Outline.Если курсор наведен на любой другой край монитора, то активируется пресет с настройками, который вы можете прописать вручную в файле скрипта.Подробности смотрите в видео.Скрипт уже доступен для подписчиков на бусти:https://boosty.to/3dmaxturbo/posts/89be8bd5-8f2f-4ac8-a007-41277aa8f682?share=post_linkТакже прикрепляю ссылки на полезные модификаторы:Extrude/Inset/Outline Faces от Vojtech Cada: https://www.scriptspot.com/3ds-max/scripts/extrudeinsetoutline-faces-modifiers SplineOffset от IToo Software:https://www.itoosoft.com/ru/freeplugins/splineoffset Connect Edges от Grégoire Eymon: https://www.scriptspot.com/3ds-max/scripts/connect-edges __________________________________________________Продолжаем серию MULTI скриптов.Я создал ещё 3 отличных инструмента - это MULTI Cut, Cap и Relax.Их особенность в том, что теперь вы можете пользоваться многими крутыми инструментами, нажимая всего 1 горячую клавишу.Особое внимание заслуживает скрипт MULTI Cap, который поможет вам сделать правильную топологию у вашей модели. Также я обновил MULTI Extrude, Chamfer и Outline, исправил ошибки и добавил функцию Extrude для точек у сплайнов.Просто скачайте заново архив и установите скрипты, они автоматически обновятся.Скрипт уже доступен для подписчиков на бусти:https://boosty.to/3dmaxturbo/posts/249d84e5-9eae-4126-87dc-d6a319b666ed?share=post_linkТакже прикрепляю ссылки на те инструменты, которые я интегрировал в свои скрипты.Border Fill и Mesh-Surface от Vojtech Cada:https://www.scriptspot.com/3ds-max/scripts/border-fillhttps://www.scriptspot.com/3ds-max/scripts/mesh-surfaceRapid Tools:https://rapidmxs.com/product/rapidtools-v1-14/CopyTo Pro от Vasily Lukyanenko:https://3dground.net/ru/prod/copyto-pro-3201577Spline Fillet от Bayan Al Safadi:https://admon2nd.gumroad.com/l/DkUyq?layout=profile P.S. Выпустил важное обновление для MULTI Cut.Теперь появилась возможность использовать активные оси Transform Gizmo для настройки осей трансформации у модификаторов Lathe и Slice.Если курсор находится за пределами рабочего поля:- Для Lathe активируется функция Flip Normals.- Для Slice переключается плоскость Remove Positive/Negative.Если навести курсор вправо на панель Modify:- Активируется модификатор Slice.Также исправил ошибки у MULTI Relax. __________________________________________________________ Собрал библиотеку из 100 самых популярных MatCap материалов и написал скрипт MULTI Nitros View, который позволяет быстро переключаться с одного типа отображения вашего Viewport (High Quality, Performance, DX Mode, User Custom, Facets, Clay, Ink и т.д.) на Standard и обратно.Скачать тут: https://t.me/turbo3dmax/16 Ссылка на модель спорткара от Sebastian Carlozzi:https://grabcad.com/library/src-zz1-sport-car-project-1 Скрипт Super Clay от Changsoo:https://cganimator.com/superclaymode-v1-1/ __________________________________________________________Встречайте MULTI Connect.[[link:image_uri:672304,]][[image:672304,sky_image_forum]][[/link]] Возможности скрипта:- Переключает и активирует камеры.- Добавляет модификаторы Edit Poly или Edit Spline.- Переносит выбранные подобъекты с Unwrap UVW на Edit Poly.- Добавляет вершины с помощью Insert Vertex.- Соединяет вершины и делает триангуляцию с помощью Target Connect.- Делает Collapse вершин, если Connect невозможен и очищает изолированные вершины.- Для рёбер и полигонов применяет инструмент Connect или Bridge.- Соединяет точки у сплайнов и объединяет их.- Разбивает сегменты с помощью Divide.- Соединяет сплайны с помощью Cross Section.- Назначает единую группу сглаживания с помощью Smooth Selected.Дополнительные функции:- Если курсор наведен на левый край монитора, то активируется список камер в сцене.- Если зажать колесо мыши, то для вершин активируется инструмент Insert Vertex, а для рёбер или полигонов мини-панель с настройками для Connect или Bridge.- Если выбран только объект или курсор мыши наведен на панель Modify, то добавятся модификаторы Edit Poly или Edit Spline.Подробнее тут: YouTube Скачать тут: Boosty PSДля очень полигональных моделей перенос большого количества рёбер с Unwrap UVW на Edit Poly может занимать большое количество времени.Для быстрого переноса рекомендую установить скрипт UVTools3 от -NiK-, в котором также есть много полезных инструментов для работы с развёрткой.PSSОбновил скрипт, в 5 режиме вместо Retriangulate теперь Smooth Selected.Скрипт UVTools3 можно скачать тут: https://hqdetails.com/shop/uvtools ___________________________________________________________Выпустил скрипт MULTI Weld. [[link:image_uri:672778,]][[image:672778,sky_image_forum]][[/link]] Возможности скрипта: Для объектов:- Создаёт камеры или источники света (Free, Target, Vray, Coronа).- Сбрасывает трансформации в [0,0,0]- Выравнивает объекты и подгоняет габариты. Для геометрии:- Назначает модификатор Vertex Weld.- Активирует инструмент Create.- Объединяет вершины с помощью улучшенного Target Weld.- Для рёбер активируется улучшенный Insert Loop, Flow Connect или Swift Loop.- Для полигонов применяет инструмент Tessellate и находит наложенные друг на друга полигоны.Для сплайнов:- Назначает модификатор Normalize Spline.- Объединяет точки у сплайнов с помощью Weld.- Cоединяет сегменты с помощью Refine Connect.- Активирует Bind для точек.Скачать тут: BoostyПодробнее в видео. PSДобавил объединение для вершин и рёбер в режиме Constraint.Подробнее тут: Telegram PSS Выпустил небольшое обновление для MULTI-Weld. Теперь функция выравнивания доступна для опорных точек объекта.Просто перейдите в режим редактирования Pivot Point."Hierarchy" -- "Pivot" -- "Affect Pivot Only" или горячая клавиша "Insert". ___________________________________________________________ В ряду MULTI скриптов пополнение. Выпустил MULTI-Clear, Quadrify и Remove. MULTI Clear:- Очищает модель от лишних модификаторов, вершин и рёбер. - В режиме Unwrap UVW сшивает острова с помощью функции Reset Peel. - В дополнительном режиме полностью очищает развёртку UVW с помощью модификатора UVW Mapping Clear. MULTI Quadrify: - Применяет модификаторы Retopology и Garment Maker. - Достраивает правильную топологию с помощью операций Build Corner или Build End. - В дополнительном режиме для выбранных подобъектов применяет инструмент Quadrify. - В режиме Unwrap UVW активирует инструмент Point-to-Point Edge Selection. MULTI Remove: - Конвертирует объекты в Editable Poly или Editable Spline. - Грамотно удаляет вершины и рёбра, для полигонов применяет Auto Smooth. - Проверяет геометрию на наличие T-вершин, T-рёбер, NGon полигонов и треугольников. - Для сплайнов удаляет точки, сегменты и сплайны. В дополнительном режиме очищает привязки вершин к сегментам (UnBind), а для сплайнов активирует Boolean в режиме Substract.Скачать можно на Boosty. ______________________________________ Представляю вам единую сборку скриптов и инструментов для ускорения работы в 3ds Max. Скрипты и плагины совместимы с 3ds Max 2018 и выше. Поддержать проект и скачать сборку можно на Boosty.  Буду рад вашим отзывам и комментариям) Стрим по данной сборке можно посмотреть здесь. Установка сборки: YouTube Дополнительные программы:AutoHotPie - программа для создания радиального меню для Windows. StrokesPlus - программа для управления жестами. Помимо моих скриптов, я также включил в сборку бесплатные скрипты и плагины от авторов:Vojtech Cada Nikolay Litvinov3D GROUND  CHANGSOO EUNmiauu'sSpline DynamicsiToo SoftwarePolyHertzPixamoonJokerMartiniVladislav BodyulRapidMXS______________________________ AutoHotPie - позволяет создавать радиальные меню для любой программы в системе Windows. Теперь вы можете активировать нужные инструменты одним движением мыши с помощью отправки хоткеев в программу или использовать дополнительные команды. Ссылка на программу: https://github.com/dumbeau/AutoHotPie/releases Готовый пресет для 3Ds Max я включил в свою сборку скриптов, подробнее про неё можно прочитать выше.
22.05.2023

WIP | kolt_050

Цитата SpectrumZX: Спасибо за скрипты, очень крутые. Есть вопрос, они у вас все под макс 2021, планируется ли их обновлять для максов версий 2022, 2023? Все скрипты актуальны для версий 3Ds Max от 2014 и выше, тестировал в том числе и на 2024, всё отлично работает. Цитата SpectrumZX: Ещё было бы супер круто, если бы вы подписчикам бусти показали и рассказали как можно писать подобные скрипты, понятно, что подобного материала есть на ютубе, есть прекрасная справочная информация у автодеска по макскрипту, но скорее всего есть те, которые как я, всё хотят начать этим заняться изучить, но всё никак) Да, можем создать новую тему в закрытом чате, там можно будет задать вопросы по MaxScript.Но для полноценного обучения чат не подойдёт, тут нужно учить матчасть и знать программирование хотя бы на базовом уровне. Для этого есть хорошие книги и видео-уроки.
11.05.2023

WIP | kolt_050

Ладно, посмеялись и хватит) Большая просьба ко всем участникам форума: не флудите в данной ветке, мне действительно важно ваше мнение о моей работе, так как в скрипты вложено много сил и времени. В видео достаточно подробно показаны возможности скрипта и я буду очень рад вашей конструктивной критике. Благодарю всех за вашу поддержку!)
11.05.2023

WIP | kolt_050

Цитата Makasharip: Аккаунты и комменты выше выглядят как на сайте с услугой удлинения пениса. Я для друга искал... Другу хоть помогло?))
10.05.2023

WIP | kolt_050

[[link:image_uri:658623,]][[image:658623,sky_image_forum]][[/link]] Всем привет! В этом W.I.P я буду показывать свои разработки для ускорения работы в 3Ds Max. Все мои новые скрипты уже доступны для моих подписчиков на boosty: https://boosty.to/3dmaxturbo Чтобы не пропустить выход новых скриптов и уроков, можете подписаться на мой YouTube и Telegram каналы. Буду рад вашей обратной связи) _____________________________________________________ Написал скрипт, который переключает ваш текущий вид на его ближайшую ортогональную проекцию, сохраняя ориентацию вида и дистанцию до объекта. Также скрипт может изменить ориентацию View Cube под новую систему координат "Grid". Чтобы активировать эту функцию необходимо выбрать или создать новую систему координат Helpers - Grid и активировать скрипт.
10.05.2023

Горячие клавиши

Есть скрипт но он отдельно работает от максовского вращения вокруг выбранного поинта и его можно на горячую кнопку назначить�https://www.youtube.com/watch?v=UQobEyu9ldA   Да, видел этот скрипт, но проще уже переключать руками)
20.05.2022

Горячие клавиши

Цитата Borka82: А просто выбрать и альт и средняя кнопка мышки не подходит или Вы между режимами переключаться хотите? В том то и дело, что нужно переключаться, т.к. не всегда нужно вокруг этого поинта вращаться. Был бы хотя бы Cycle какой-нибудь для них...
20.05.2022

Горячие клавиши

В новых версиях Макса появилась такая крутая функция "Orbit point of interest" для вращения вида вокруг курсора мыши с привязкой к поверхности. Как узнать команду для этой функции, чтобы назначить её на горячую клавишу? Или можно это сделать с помощью скрипта? [[image:569154,]]
20.05.2022

Полный контроль над клонированием

Вот такой вопрос возник, какой командой в Maxscript можно скопировать выбранные сплайны в 3 режиме подобъектов (Spline), не сдвигая их с места, как обычно с Shift. Во втором режиме(Segment) можно сделать Detach с вкл. Clone, а в 3 режиме такого нет.
19.05.2022

Maxscript. Быстрый Mirror относительно выбранного Center Point.

Цитата -NiK-: Обучение это святое. У подобъектов нет ориентации в пространстве (если под ориентацией подразумевается поворот, масштаб и тд). Подобъекта "элемент" не существует. Полигоны элемента можно получить через getElementsUsingFace. Советую сразу идти в polyop и meshop и изучать все эти методы. Центры полигонов/фейсов - getFaceCenter. Далеко не все методы, которые приходят вам в голову будут в готовом виде, как getFaceCenter. Центр эджа, конечно это центроид двух его точек, а центр элемента это центроид всех его точек. snapshotAsMesh "конвертирует" editablePoly в mesh, поэтому про индексацию всего кроме вертексов можно будет забыть. И всегда делайте delete smesh для этого снапшота по окончанию функции, сам он не удаляется и будет забивать память. Благодарю за помощь! Буду дальше разбираться)
14.05.2022

Maxscript. Быстрый Mirror относительно выбранного Center Point.

Цитата -NiK-: Не зря я вам модификатор Mirror предлагал. Я и сам его использовал в подобном макросе. Чем глубже вы лезете в эти дебри, тем менее надежным будет ваш скрипт. Единственная разумная причина решать такую простую задачу таким сложным образом - самообучение. Много разной интересной информации, а я как раз сейчас учусь делать что-то посложнее обычных макросов.  Положение подобъектов в пространстве и их ориентация - это очень нужная вещь. Например, благодаря знаниям о положении вершин, я написал простенький скрипт для создания цилиндра, бокса и сферы сразу в выбранной вершине объекта, но чтобы они создавались в центре выбранного ребра или полигона, нужно уже рассчитать положение нескольких точек.
14.05.2022

Maxscript. Быстрый Mirror относительно выбранного Center Point.

Цитата -NiK-: Метод этого господина хоть и выглядит топорно, но он будет гораздо надёжней. http://www.scriptspot.com/3ds-max/scripts/unimirror  Спасибо, посмотрю) ___________________________ Посмотрел я скрипт выше, так выворачивать полигоны, не отделяя их от сетки это конечно сильно) Чаще всего мне нужно просто зеркалить элемент или уже кусок элемента, так что стандартный <<macros.run "PolyTools" "MirrorElementX">> мне вполне подходит, осталось только придумать, как перемещать отзеркаленные куски на то-же расстояние только в "минус", относительно опорной точки. В RappaTools тоже так сделано. [[image:566812,]] Но там только относительно локальной и мировой опорной точки, и всё на разных командах.Зачем нужно 24 клавиши, если можно обойтись только 5-ю? 1 кнопка на цикл для Center Point 2 клавиши на Copy и Instance 2 клавиши на Mirror по горизонту и вертикали _________________________________ Появился вопрос, как рассчитать положение подъобъекта в пространстве и переместить его относительно локального центра объекта? Есть функция snapshotAsMesh $ , с ней можно получить информацию о положении всех вершин объекта в пространстве (с рёбрами и полигонами почему-то не выходит, видимо из-за того, что она записывает триангулированный Mesh). Итак, сначала нам нужно получить координаты элемента в пространстве. Конвертируем его в вершины и записываем их в массив: VertSel = (SelMod.GetSelection #Vertex) as array Затем необходимо узнать их общее положение (Как ???) Можно ли записать через среднее значение координат выбранных точек? MeshObj = snapshotAsMesh $ local SelMod = Filters.GetModOrObj() local VertSel = (SelMod.GetSelection #Vertex) as array local N = #{} local Nv = VertSel.count for i=1 to Nv do N=N+(getVert MeshObj VertSel[i])) T = N/Nv -- Координаты элемента move $.selectedVerts [0, -T.y ,0] -- Перемещение вдоль оси Y относительно [0,0,0] TLp = $.transform p3 -- Координаты Local Point Будет ли это работать? move $.selectedVerts [0, TLp.y-T.y ,0]) -- Переместит ли он зеркально относительно Local Point?
12.05.2022

Maxscript. Быстрый Mirror относительно выбранного Center Point.

Цитата -NiK-: https://pastebin.com/fqwmJm3j  Добро пожаловать в матрицы трансформаций и удачи в понимании манипуляций с ними :D Я в своё время намучился. Написанные выше методы не единственно возможные. Осталось ещё разобраться, как несколько выбранных объектов зеркалить. local objA =if classof obj == objectSet or classof obj == array then obj else #(obj) Если добавить массив, то в локальных координатах и относительно центра объекты не зеркалятся, тут уже либо перебором каждого объекта, либо есть проще способ. Цитата -NiK-: С подобъектами советую остановиться на модификаторе mirror и не морочить голову. Согласен, я с с него начал, но тоже запутался с этими матрицами, сейчас думаю уже разберусь)
12.05.2022

Maxscript. Быстрый Mirror относительно выбранного Center Point.

Цитата -NiK-: https://pastebin.com/fqwmJm3j  Добро пожаловать в матрицы трансформаций и удачи в понимании манипуляций с ними :D Я в своё время намучился. Написанные выше методы не единственно возможные. У меня просто нет слов... ОГРОМНОЕ СПАСИБО -NIK- !!! Твой опыт бесценен! Скрипт получился просто Шикарный! Осталось только всё соединить и выложить готовую версию! Буду дальше разбираться с подобъектами) https://pastebin.com/n5ujkmqM
12.05.2022

Maxscript. Проверка по куску имени из переменной.

Цитата -NiK-: modPanel.getCurrentObject() == $.baseobject Логично) Спасибо! Если #local, то там у каждого объекта своя точка ($.position или $.pivot). Если #selection, то там не $.center, а усредненный центр выделенных объектов. Если #System, то всё посложнее, но возможно вам хватит мирового центра [0,0,0]. https://pastebin.com/fbXwhhUs  Раз вам нужны мировые координаты, то вы можете просто создать матрицу из этой точки через transMatrix. Создал отдельную тему, т.к. уже сам миррор не пойму, как запустить через transMatrix. Мне просто очень трудно разобраться в правилах написания таких команд, синтаксис для меня пока как в тумане. Цитата -NiK-: Цитата kolt_050: Всем привет! Есть ли функция для проверки выбора базового объекта в стеке модификаторов? Индекса то у него нет, по логике должен быть = 0, но нет) modPanel.getCurrentObject() == $.baseobject Есть идея сделать на 2 горячие клавиши перебор модификаторов снизу вверх и обратно. Столкнулся с проблемой, как посчитать все модификаторы, чтобы на последнем он перешёл на базовый модификатор, а не выдавал ошибку. И наоборот, чтобы с базового перешёл вверх на последний по нумерации модификатор, т.е. который прямо над ним. Вот пример кода: https://pastebin.com/adEVxGpY _____________________________ Либо начинать выполнение скрипта, только когда выбран последний модификатор из списка, чтобы записать его номер. Есть ли возможность создать условие для проверки на ошибку? Чтобы вместо окна с ошибкой сработал например return()? [[image:566811,]] Или это через try и catch можно как-то сделать? _____________________________________ В общем, чтобы не перебирать и не считать количество модификаторов в сцене, сделал такой цикл: https://pastebin.com/WiJmgYdb Больше 20-ти модификаторов, думаю редко кто добавляет, или 100 поставить?))
12.05.2022

Maxscript. Быстрый Mirror относительно выбранного Center Point.

Подскажите пожалуйста, как можно отзеркалить объект в мировых осях, относительно выбранной опорной точки? Не могу разобраться каким образом вообще в максе происходит отзеркаливание. Нашёл инфу, что это делается через обычное масштабирование с отрицательными значениями по осям. Вариант для локальных осей: $.transform  = prescale $.transform [1,-1,1] А нужно использовать мировые оси и опорную точку. Определить активный Center Point достаточно просто.  getCoordCenter() -- #local -- #selection -- #System Необходимо сделать обычный Mirror для каждой мировой оси X Y Z и выбранной опорной точки, используя функцию выше. Также интересно, как можно отзеркалить таким же образом полигоны в режиме подобъектов. Вот пример для оси Y. Но там используется переменная для координатных осей, а не опорной точки. https://pastebin.com/86YsVHN5
12.05.2022

Maxscript. Создание надписи с таймером отображения поверх рабочего окна.

Благодарю за ответ! Да, я видел код, мне интересно, есть ли ещё проще варианты. В Майе это вообще в 1 строчку можно сделать. Проще действительно без таймера, просто добавить команду закрытия этого уведомления на горячую клавишу своего скрипта инструмента Select или Move например. Или на все сразу, но это уже перебор)) __________________________ Спасибо ещё раз за код!) Иногда случайно на клаве по горячей клавише попадёшь и даже не знаешь, что у тебя на модели уже притаились дублированные оверлапы) https://pastebin.com/w5Jn0wp5
11.05.2022

Maxscript. Создание надписи с таймером отображения поверх рабочего окна.

Всем привет!  Есть такой вопрос. Есть функция для отображения надписи на экране (например статистика вершин в сцене). Нужно, чтобы она не висела на экране постоянно, а появлялась только на 3 секунды после срабатывания скрипта. [[link:image_uri:566320,]][[image:566320,sky_image_forum]][[/link]] Пример кода с уведомлением  https://pastebin.com/13HCUjNB [[link:image_uri:566326,]][[image:566326,sky_image_forum]][[/link]] Пример для таймера из хэлпа https://help.autodesk.com/view/3DSMAX/2017/ENU/?guid=__files_GUID_9A4F0A09_BB42_4EED_95CC_6B3D06939640_htm [[image:566321,]]
11.05.2022

Maxscript. Проверка по куску имени из переменной.

Цитата -NiK-: Этот форум плохо предназначен для пересылки кода. Используйте pastebin. Вообще зря вы оккупировали чужую тему вопросами с ней не связанными :) лучше бы создали свою. Цитата kolt_050: Сделал такую надпись, но она не пропадает почему-то после таймера. https://pastebin.com/w5Jn0wp5  Окно создается за пределами монитора, чтобы сделать вид, что его нету. Спасибо) Буду им теперь пользоваться. [[link:image_uri:566310,]][[image:566310,sky_image_forum]][[/link]] Отдельно функция надписи работает нормально.Но стоит добавить таймер и она даже не появляется. Вообще зря вы оккупировали чужую тему вопросами с ней не связанными :) лучше бы создали свою. Согласен, тут уже другая тема пошла. ________________________________ Всем привет! Есть ли функция для проверки выбора базового объекта в стеке модификаторов? Индекса то у него нет, по логике должен быть = 0, но нет) А то приходится проверку делать, выбирая базовый модификатор и сравнивая с выбранным ранее в стеке. local SelMod = Filters.GetModOrObj() modPanel.setCurrentObject $.baseObject local CurObj = Filters.GetModOrObj() modPanel.setCurrentObject SelMod
11.05.2022

Maxscript. Проверка по куску имени из переменной.

Цитата Evilis: Вы бы на чем то одном сконцентрировались ))) if (valUp==3) then (destroyDialog ::test) Есть такое) но в голове идей море) Сделал такую надпись, но она не пропадает почему-то после таймера. ( global GW_displayText try(unregisterRedrawViewsCallbackGW_displayText)catch() ( fn GW_displayText = ( wPos = GW.GetWinSizeX()*0.5  hPos = GW.GetWinSizeY()*0.2 gw.htext [wPos,hPos,0] "DUPLICATE COMPLETE" color:red gw.updateScreen() ) registerRedrawViewsCallback GW_displayText ( timer clock "testClock" interval:1000 --tick once a second on clock tick do ( N = K+1 K=N if (N==3) do (unregisterRedrawViewsCallback GW_displayText) ) ) )
11.05.2022

Maxscript. Проверка по куску имени из переменной.

Цитата TheNMax: Цитата kolt_050: Кто-нибудь знает, как проверить номер выбранного модификатора и записать в переменную? Везде инфа только по проверке названия модификатора либо класса. Просто названия модификаторов могут совпадать, а нужно найти именно выделенный модификатор. curObj = modPanel.getCurrentObject() indexMod = modPanel.getModifierIndex $ (curObj) Супер! То что надо было! Сделал условие для колапса стека для выбранного модификатора. local curObj = modPanel.getCurrentObject() local indexMod = modPanel.getModifierIndex $ (curObj) if subObjectLevel == 0 then maxOps.CollapseNodeTo $ indexMod off_____________________ Пытаюсь сейчас ещё разобраться с таймерами. Например мне нужно на 3 секунды вывести сообщение на экран, но не в меседже, а просто текстом поверх экрана. timer <name> [interval:<number>] [active:<boolean>] Вот пример со всплывающим окном. rollout test "Test Timer" ( timer clock "testClock" interval:1000 --tick once a second label test"1" on clock tick do ( valUp = (test.text as integer)+1 test.text = valUp as string ) ) createDialog test
11.05.2022

Maxscript. Проверка по куску имени из переменной.

Цитата -NiK-: Цитата kolt_050: Нет, не относительно вида из камера. А именно относительно обычных осей X Y Z. Я и не писал про миррор относительно вида :) Обычные оси это мировые координаты или координаты объекта? Какая часть у вас не работает (не реализована)? Я видел гифку, что-то уже явно готово. Определить доминантную ось вьюпорта несложно. Ориентация готова, сделал по аналогии с вот этим скриптомhttps://www.scriptspot.com/3ds-max/scripts/rotation-axis-snap Мирор нужен именно относительно Мировых осей, иначе запутаешься, если объект повёрнут в своих локальных координатах.
11.05.2022

Maxscript. Проверка по куску имени из переменной.

Цитата In-design: Граждане, кто в курсе как это сделать? Есть, допустим переменная name="Box" И есть куча объектов, в именах которых содержится или не содержится этот "Box". Нужно устроить всем объектам в сцене (или в выделении) проверку на содержание в их именах этого Box'а, и объекты содержащие в имени Box уложить в другую переменную-массив. Есть такое https://docs.google.com/document/d/1cDxNIXZ3OeqmbWOtzxwjIVHL6MElaGXph5fwm5pvOzs/mobilebasic#h.lcfrvhh0ecci Если в сцене есть куча объектов, разнесённых по разным слоям, имеющих одинаковый элемент в имени, то легко выделяем их посредством MaxScriptarCollision=For i in $*Coll collect i; unhide arCollision; select arCollision;  max hide inv /*В переменную arCollision передаётся результат цикла, в котором  каждый элемент i из объектов, содержащих слово “Coll” заполняется в массив (collect i). То есть: [ $-- указатель на объект *-- знак указывающий на то что вместо звёздочки может стоять сколько угодно, каких угодно символов Coll--имя, по которому ищем объекты] */  -- unhide arCollision; select arCollision;  max hide inv раскрыть объекты; выделить -- объекты; скрыть невыделенные Развил тему :) Вот готовый скрипт macroScript naneHUnH  category:"Niklit Scripts"   toolTip:"Name obj Hide Unhide"   icon:#("TrackViewTools",114) ( StuffName=#() try DestroyDialog naneHUnH catch() rollout naneHUnH "Name obj Hide Unhide" width:235 height:47 (         editText edt1 "" pos:[-2,2] width:235 height:14         checkbox chk1 "Hide inv" pos:[170,26] width:77 height:16         button btn_UnHide "Unhide" pos:[2,22] width:80 height:23         button btn_Hide "Hide" pos:[84,22] width:80 height:23         on chk1 changed hInv_State do hInv_State=off         on edt1 entered txt do         (                 if txt != "" do        NameForFind=execute ("$*"+txt+"*")                 global arO=For i in NameForFind collect i         )         on btn_UnHide pressed do        with undo on (                 select arO; unhide arO                 if chk1.checked then (max hide inv) else ()         )                 on btn_Hide pressed do with undo on  (hide arO) ) CreateDialog naneHUnH ) Цитата -NiK-: Камера это типа наш вьюпорт. Тогда вертикальный миррор выбирает ось (1), а горизонтальный (2)? Это если выбраны локальные координаты объекта. Если выбраны мировые координаты, то соответственно выбирать нужно из них? Поправьте меня. Нет, не относительно вида из камера. А именно относительно обычных осей X Y Z. Положения камеры только даёт нам информацию к какой оси мы сейчас повёрнуты, т.е. вокруг объекта всего 4 сектора, которые как-бы перпендикулярны плоскостям XZ и YZ. Скрипт это распознаёт и зеркалит относительно нужной оси, по горизонту это X или Y, а по вертикали это Z. Если же смотрим на объект сверху или снизу, то тут только оси X и Y нужны. Вертикальной осью будет либо X, либо Y, в зависимости от поворота камеры. Но зеркалить объект нужно ещё относительно активной опорной точки, которую мы выбрали в меню выше. ____________________________ Кто-нибудь знает, как проверить номер выбранного модификатора и записать в переменную? Везде инфа только по проверке названия модификатора либо класса. Просто названия модификаторов могут совпадать, а нужно найти именно выделенный модификатор.
11.05.2022

Maxscript. Проверка по куску имени из переменной.

Цитата QuixelMega: для мирор под камеру, если нужно выбрать обсолютную ось достатончо просто сдеьать крос вектор камеры и вверх, потом выбрать самую длиную ось, если не обсолютную ось а прям под камеру все тоже самое только перпендикулярный вектор камеры и верх переводим в угол поворота относительно поворота обьекта, скармливаем в mod.Mirror_Center.rotation Нашёл ещё такой вот приём, но как использовать не совсем понятно. Нормализованные XYZ векторы камеры въюпорта Их можно использовать для рассчёта положений, трансформаций и перемещений относительно камеры въюпорта VectViewX=(inverse(getViewTM())).row1 VectViewY=(inverse(getViewTM())).row2 VectViewZ=inverse(getViewTM())).row3 point wirecolor:red        size: 1        pos: VectViewX point wirecolor:green        size: 1        pos: VectViewY point wirecolor:blue        size: 1        pos: VectViewZ
10.05.2022

Maxscript. Проверка по куску имени из переменной.

Цитата Evilis: по второму, мне немного сложно вас понять :) возможно это Mirror, и это coordsys вам поможет Скрипт нужен для того, чтобы не париться на счёт выбора осей по которым нужно отзеркалить объект и не тратить время на диалоговое окно стандартного инструмента Mirror в максе. Мне гораздо быстрее просто повернуть камеру вокруг объекта, выбрав нужный ракурс для отображения объекта по горизонту или по вертикали. Вот пример:https://gifyu.com/image/SsW3q Пока я сделал его только для локальной опорной точки самого объекта. Осталось только в скрипте прописать ноду координат [in] coordsys <matrix3> которую он должен считывать с выбранной опорной точки вида. Вот в этом и загвоздка, не понимаю, как можно считать её координаты в пространстве. [[link:image_uri:565426,]][[image:565426,sky_image_forum]][[/link]]
07.05.2022

Maxscript. Проверка по куску имени из переменной.

Цитата dontpiter: А чего все до сих пор на макскрипте пишут? Макс вроде Пайтон поддерживает давно.. Давно уже хочу на нём научиться программировать, но руки всё не доходят)
06.05.2022

Maxscript. Проверка по куску имени из переменной.

Цитата -NiK-: Цитата kolt_050: А где можно посмотреть список всех супер-классов? superclasses :) Спасибо! Сейчас ещё пишу скрипт для Mirror по горизонту или вертикали, в зависимости от того, как расположен объект относительно вида или камеры.Пока готова первая часть скрипта с проверкой на ориентацию вида. [[link:image_uri:565332,]][[image:565332,sky_image_forum]][[/link]] Но вот с Mirror относительно опорной точки объекта или вида, которая может меняться в панели меню, у меня проблемы. Нигде не могу найти информацию по этому поводу. Как учитывать именно отображаемую опорную точку, а не локальную или центра координат.
06.05.2022