
Новости • Форум • Помощь • Поиск • Участники • Календарь • База |
Гость ( Вход | Регистрация ) | Выслать повторно письмо для активации |
Страницы: (16) « Первая ... 2 3 [4] 5 6 ... Последняя » ( Перейти к первому непрочитанному сообщению ) | ![]() ![]() |
Gescort Профиль Статус: слон Группа: Заслуженные артисты Рейтинг: 3 ![]() |
Пока что гоню инструментарий чисто под свои задачи. Сейчас это моделинг/текстуринг, дальше пойдет работа с объектами в сцене, так что скорее всего буду смотреть в организацию сцены и библиотеки ресурсов. Хотелось бы еще инструментарий по удобному управлению нормалями, но там работы много будет, так что пока отложил в сторону.
А на сегодня скриптик позволяющий создать выделение в наложении кластеров. Может очень помочь в чистке импортированных моделей (да и своих тоже :) ), если имеющиеся кластеры удалять не желательно, а вручную определить пересечения трудоемко или неудобно. Алгоритм работы немного паршивый — на сравнении массивов индексов полигонов выделенных кластеров, поэтому на тяжелых моделях с большим количеством задействованных в кластерах поликов будет изрядно подвисать. Есть мысли по доработке, но пока не уверен, даст ли это существенной производительности. Для работы скрипта необходимо выделить 2 или более кластера и запустить скрипт. Если наложения есть, то будут выделены полики, в которых эти наложения присутствуют, если наложения нет, то соответствующее сообщение, что все в порядке. Установка: забросить скрипт по пути c:\Users\Admin\Autodesk\Softimage_2015\Application\Plugins\ либо по своему усмотрению. Скачать findOverlapPlugin.py: https://www.dropbox.com/s/b5srdqkg1if7qu4/f...verlapPlugin.py ![]() |
Gescort Профиль Статус: слон Группа: Заслуженные артисты Рейтинг: 3 ![]() |
Обновление для QuickMerge, теперь позиция смердженного объекта сохраняется и для Partitions по позиции первого объекта (смерженный объект не будет переноситься в Background_Objects_Partition по умолчанию).
И окончательно исправил косяк с настройками Preferences. Удаление старой версии: Просто удалить аддон через unInstallAddon и перезагрузиться. Установка новой версии: Закинуть аддон во вьюпорт и перезагрузиться. Скачать QuickMerge_v1.2: https://www.dropbox.com/s/qq1d7ureah6t0rs/Q...kMerge_v1.2.zip |
Gescort Профиль Статус: слон Группа: Заслуженные артисты Рейтинг: 3 ![]() |
Совсем мелочевка, но по мне довольно неплохо экономит время — при создании новой модели если в выделении присутствует только один объект, то новая модель имеет имя этого объекта, во всех остальных случаях по умолчанию "Model". Команду повесить на хоткей или на кнопку.
Установка: забросить скрипт по пути c:\Users\Admin\Autodesk\Softimage_2015\Application\Plugins\ либо по своему усмотрению. Скачать createNewModelPlugin.py: https://www.dropbox.com/s/hrrncbcq5mull6z/c...wModelPlugin.py |
Gescort Профиль Статус: слон Группа: Заслуженные артисты Рейтинг: 3 ![]() |
createNewModel более корректнее, теперь если в сцене имеются например cube, cube1, cube2, cube3 и модель создается для cube1 она и будет иметь имя cube1, а не cube4. Т.е. раньше в имени перескакивал числовой порядок. Теперь все ОК.
Установка: забросить скрипт по пути c:\Users\Admin\Autodesk\Softimage_2015\Application\Plugins\ либо по своему усмотрению. Скачать createNewModelPlugin.py: https://www.dropbox.com/s/hrrncbcq5mull6z/c...wModelPlugin.py |
мюф Профиль Статус: слон Группа: Артисты Рейтинг: 2 ![]() |
Gescort
напишу тут у тебя ибо кстати, заодно и помощи попрошу) Тему я уже эту поднимал - "перенос оператора с объекта на объект". Макс сказал, что это скриптами не реализовать. Тогда хоть обрывки этой идеи попробовать). Сейчас пользуюсь 2мя кнопками Выделяю нужный оператор и давлю SavePreset ".", "\temp3.Preset", , 4, True, False Выделяю ОПЕРАТОР куда переносить и LoadPreset "\temp3.Preset", "." Знаю, что можно сохранить при первом нажатии заодно и имя Оператора "Х" (в Ивент или Лог файл, ибо он в выделении), чтобы пользовать во втором скрипте. Второй скрипт уже чтоб делал: - Если это ОБЪЕКТ, то искать "Х" и применять пресет. (тут сразу можно будет применять к нескольким объектам) - Если ОПЕРАТОР, то сразу применять пресет(а вдруг несколько похожих) Ну или не усложнять с если, а просто искать в объекте. В идеале конечно было "вычеслять оператор" и его применять к объекту, потом грузить пресет, сейчас применяешь оператор и потом грузишь пресет. Помогите реализовать народ. Вроде мелочь, а время экономит. |
мюф Профиль Статус: слон Группа: Артисты Рейтинг: 2 ![]() |
неудобство сейчас именно в том, что нужно выделить обьект и найти в нём оператор, именно это автоматизировать хотелось бы.
|
Gescort Профиль Статус: слон Группа: Заслуженные артисты Рейтинг: 3 ![]() |
Затею понял, попробовал реализовать.
Скачать copyPasteOperators: https://www.dropbox.com/s/xvislq9263xuoz9/c...rators.zip?dl=0 Установка: забросить скрипты в папку со скриптами, например: c:\Users\Admin\Autodesk\Softimage_2015\Application\Plugins\ Папка, куда сохраняются темповые пресеты: c:\Users\Admin\Autodesk\Softimage_2015\Data\DSPresets\Operators\ Вызов команд: Application.copyOperator() и Application.pasteOperator(), лучше всего повесить на кнопку или хоткей. Имеем следующее: 1. Первый скрипт на копирование. При выделенном объекте или компонентах (выделять сам оператор не надо, да и нельзя, иначе начинается проблематично делать проверку типа выделенного элемента) ищет последний оператор в стеке операторов (здесь поиск сквозной, всерху вниз включая анимацию, шейпы и т.д., могу сделать только для стека моделинга), т.е. последнее действие над объектом. Делает экспорт во временную папку + лог с именем этого оператора. Проще говоря настроили оператор, нажали кнопочку скопировать. 2. Второй скрипт на вставку. При выделенном объекте или компонентах (аналогично первому скрипту оператор выбирать не надо) ищет в стеке операторов последний оператор с именем, который был записан в лог. Если подходящий оператор был найден, то к нему применяется импорт временно сохраненного пресета. Если подходящий оператор найден не был, то выводится соответствующее сообщение. Проще говоря на другом или этом же объекте заюзали тот же самый оператор и нажали кнопочку вставить. При вставке выдает какую-то ошибку, но как бы все равно работает. Посмотри если такая реализация годится, то покопаюсь в чем там проблемка. Если есть какие-то еще идеи по доработке, то напиши - подумаем. Пока реализовал самым простым на мой взгляд вариантом. Думал по поводу вставки, если подходящего оператора нет, чтобы его создать. Но тип оператора и команда для его вставки различаются, поэтому просто его в ApplyOp не запихнуть, придется какую-то микро базу соответствия заводить. Как-то не лучший вариант реализации получается. Плюс выделение подходящих компонентов нужно будет. |
мюф Профиль Статус: слон Группа: Артисты Рейтинг: 2 ![]() |
Всё робит!
:thankyou: Маленькое дополнение, на исходнике бывает что нужный оператор не в топе стэка, если добавить условие при сохранении: -ОБЪЕКТ в выделении - брать последний оператор в стеке -ОПЕРАТОР в выделении - брать его А так для задач моих шикарно), то, что канает при выделении компонентов - тож здорово, теперь тот же бевел перетащить с еджа на едж очень удобно, крутяк! Если создать базу соответствия, то это вообще вещь не заменимая будет.) Готов помочь, что делать?) Глянул в скрипт, этож можно пару кнопок такой времянной памяти сделать. Частично решаеться проблемма с быстрым изменением дефолтных пресетов. |
Gescort Профиль Статус: слон Группа: Заслуженные артисты Рейтинг: 3 ![]() |
Как раз это вначале и хотел сделать, но незадача вышла вот тут. Выделяем полимеш, вызываем скрипт:
Получаем: grid -> polymsh, т.е. выделен грид, его тип полимеш Применяем бевел, выделяем его в стеке, запускаем скрипт. Получаем: grid.polymsh.bevelop -> bevelop Применяем инсет, выделяем его в стеке, запускаем скрипт. Получаем: grid.polymsh.extrudecompaxisop -> extrudecompaxisop Т.е. у каждого оператора есть свое имя для его типа, поэтому когда я произвожу проверку, то для выделенного меша это всегда polymsh, для компонентов: polySubComponent, edgeSubComponent, pntSubComponent, а у операторов тип всегда разный. Могу запустить в качестве исключения если не меш или компонент, то всегда считать что выделен оператор, но будет некрасиво, когда выделен не оператор и вылазить ошибки. Хотя пока писал пришла мысль попробовать сделать проверку не по типу, а по классу, может там будет как надо - потом попробую проверить. И проблема когда нужного оператора для вставки не найдено. Например копировали пресет для бевела, получили для него тип bevelop, но команда для инициализации бевела: Application.ApplyTopoOp("BevelComponent", "grid.edge[1]", "siUnspecified", "siPersistentOperation", "") т.е. BevelComponent, поэтому есть идея сделать список соответствия: bevelop -> BevelComponent и т.д. для каждой команды. Возможно можно и без этого реализовать, но откуда вытащить эти соответствия хз. Если есть желание, то можешь прогнать все основные команды для которых возможно сохранение пресета и из строки ApplyTopoOp выдернуть их имена пресетов (например BevelComponent) и скриптом выше при выделенном операторе в стеке его тип, тогда можно будет замутить автоматическую инициализацию оператора, если подходящего найдено не было. |
||||
мюф Профиль Статус: слон Группа: Артисты Рейтинг: 2 ![]() |
да ClassName точно разделяет, где оп, а где поли.
Да размечтался я), посмотрел как операторы применяются: Создать например бенд - .ApplyOp, создать бевел - .ApplyTopoOp, создать Меш из курвы - ApplyGenOp. Ну так то можно попробовать для начала в пределах ApplyTopoOp, список возможных команд с привязкой к типу в сдк есть, там не так уж и много и большая часть даже из этого списка не нужны. вид списка такой должен быть? чтоб далее не редактировать
|
||||||
Gescort Профиль Статус: слон Группа: Заслуженные артисты Рейтинг: 3 ![]() |
Да, в таком виде будет вполне понятно.
|
Gescort Профиль Статус: слон Группа: Заслуженные артисты Рейтинг: 3 ![]() |
Обновил скрипты для copyPasteOperators.
Теперь реагируют на выделенный оператор, принимая его в качестве активного. При вставке иногда возникает ошибка, которая на работоспособность скриптов никак не влияет. Как я понял возникает если пресет был сохранен из оператора bevelop, а применен к bevelop1, т.е. имеющем в стеке другой порядковый номер. Upd: если выделен неверный оператор для вставки, то в предупреждение выводится какой оператор сохранен в пресете — можно ориентироваться, если забыли что там было сохранено. Как бы в таком виде уже крайне юзабильно. Скачать: https://www.dropbox.com/s/xvislq9263xuoz9/c...rators.zip?dl=0 |
Bravlin Pechatnik Профиль Статус: слон Группа: Артисты Рейтинг: 2 ![]() |
Когда-нибудь , настанет тот день, когда в ксюхе появится интересный бевил )))
|
мюф Профиль Статус: слон Группа: Артисты Рейтинг: 2 ![]() |
Gescort из всех команд у Dice только заморочка с разными типами, на него, я так думаю, надо забить). У остальных универсально. Проверил все команды из списка "Topology Operator Presets"(прямую ссылку в сдк не дает, печаль). С курвами и сурфэйсами связываться не стал. Те что имеет смысл:
|
||
Gescort Профиль Статус: слон Группа: Заслуженные артисты Рейтинг: 3 ![]() |
Bravlin Pechatnik, Базовый расчет уже есть, но стандартные инструменты SplitEdge и AddEdge не совсем удобно для этого приспособлены, т.к. изначально делят грань в процентном отношении. Поэтому добавление необходимых эйджей необходимо делать делать через формирование общей топологии, а в этом случае необходимо как следует разобраться в порядке формирования и индексации вертексов и эйджей. Особенно проблематичным кажется ситуация когда выделено более двух параллельных граней, т.к. порядок индексации должен сильно меняться.
Думаю стоит попробовать поэкспериментировать с вариантами просто добавления эйджей на необходимые грани и далее их уже повертексно перемещать в нужную позицию. В этом случае реализация конечно будет кривой, но возможно более простой для исполнения. Можно даже на айсе попробовать поэкспериментировать. |
![]() |
![]() ![]() |