SoftimageRu Форум -> Мелкие скрипты и разработки

Новости • Форум • Помощь • Поиск • Участники • Календарь • База


Страницы: (16) « Первая ... 3 4 [5] 6 7 ... Последняя »  ( Перейти к первому непрочитанному сообщению ) Ответ в темуОтвет      Создание новой темыНовая тема   

> Мелкие скрипты и разработки, То, что недостойно отдельной темы   
Gescort
Профиль
Статус: слон
Группа: Заслуженные артисты
Рейтинг: 3
мюф, ок, спасибо за проделанную работу, вечерком попробую замутить.
В SDK 2015 можно ссылку копировать, там по гету в адресной строке все прописано, но нужный раздел понял.
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 6.09.2014 - 13:50 Top
Gescort
Профиль
Статус: слон
Группа: Заслуженные артисты
Рейтинг: 3
copyPasteOperators обновлено, если подходящего оператора для вставки нет, то создается новый и в него подгружается сохраненный пресет.
Скачать: https://www.dropbox.com/s/xvislq9263xuoz9/c...rators.zip?dl=0

PS: я тут как-то в SDK команды для оператора Operator.Copy() и Operator.Connect() обнаружил, а не велосипед ли мы изобретали? Надо будет потом присмотреться к ним, а то может быть все и в пару строк кода можно было замутить.
Ну а так плаг все равно рабочий, теперь только в полевых условиях недоработки выискивать.
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 6.09.2014 - 23:27 Top
мюф
Профиль
Статус: слон
Группа: Артисты
Рейтинг: 2
Gescort
херасе, время то летит :preved: , видел я его) этот копи.оп.
http://softimage.ru/forums/index.php?showtopic=9289&hl=
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 7.09.2014 - 03:45 Top
мюф
Профиль
Статус: слон
Группа: Артисты
Рейтинг: 2
Цитата
команды для оператора Operator.Copy() и Operator.Connect()

посмотрел я пример, хрень внутрискриптовая).

Скрипт опробовал, работает. Но первый же найденный недостаток в том, что основные команды ApplyTopoOp(Бевел, инсерт и т.д.) в основном используются в пределах одного Объекта. И когда ты применяешь скрипт к этому же объекту, он "находит" оператор из которого брал пресет и в него же вставляет), что убивает весь функционал(именно при работе с компонентами). Приходиться фризить объект, или как до этого - сначала "ручками" добавлять новый.

Может добавить условие:
если Name совпадает, то поиск не производить, а сразу добавлять оператор.

Хотя тогда появляется другая проблемма - если источник другой меш, а ты хочешь вставить дважды на этот, условие не сработает, всё не учесть походу)).

п.с. Гескорт, скрипт еще в старой редакции делал то, что требовалось, благодарю. Помойму, надёжнее всеж ручками добавлять нужный оператор, тогда результат 100% верен! Последующие доработки это уже из ряда - "и тут мы экономим 1 действие, но получаем несколько проблем" :sarcastj: Хотя моделеры должны оценить. Скрипты по достоинству заняли место на "cntrl+alt+c\v".
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 7.09.2014 - 11:35 Top
Gescort
Профиль
Статус: слон
Группа: Заслуженные артисты
Рейтинг: 3
Немного размышлений.
Сейчас пытаюсь разобраться как напрямую работать с топологией объектов, но не на уровне моделинга (как красивую сетку сделать), а именно на программном. Принципиальные основы понятны, но стоит попробовать что-то более серьезное и увязаешь в алгоритмах — слишком все абстрактно и крайне тяжело расчитывается.
Положительные результаты налицо, была у нас темка: http://softimage.ru/forums/index.php?showtopic=7928
Для сравнения запустил эту задачку на сцене из 100 кубиков заменой цилиндром. В данной реализации все заняло 49 секунд. Запустил через алгоритм копирования топологии — 9 секунд, т.е. выигрыш в 5 раз. Правда и копирование было только геометрии, т.е. если бы требовалось все с текстурами и еще какими доп параметрами, то не прокатило бы.
Хотя пример не совсем корректный, но суть в том, что для написания кастомных операторов и инструментов вникнуть все равно надо.
Ну и пару примеров с простым посылом топологии.
Та самая подмена кучи выделенных объектов другим:
Цитата
xsi = Application
oSel = xsi.Selection
oObjArr = []
for i in range(0, oSel.Count):
    if str(oSel[i].Type) == "polymsh":
        oObjArr.append(oSel[i])
oPick = xsi.PickObject("Select Source", "Select Source")
oButtonChoice = oPick.Value("ButtonPressed")
if len(oObjArr) != "":
    xsi.FreezeModeling(oObjArr, "", "")
    if oButtonChoice != 0:
        oSource = oPick.Value("PickedElement")
        oData = oSource.ActivePrimitive.Geometry.Get2()
        for i in range(0, len(oObjArr)):
            oObjArr[i].ActivePrimitive.Geometry.Set(oData[0], oData[1])


И просто заменить все выделенные меши кубиками размером 1si:
Цитата
xsi = Application
oSel = xsi.Selection
oObjArr = []
oObjString = ""
for i in range(0, oSel.Count):
    if str(oSel[i].Type) == "polymsh":
        oObjArr.append(oSel[i])
if oObjString != "":
    xsi.FreezeModeling(oObjArr, "", "")
    for i in range(0, len(oObjArr)):
        oObjArr[i].ActivePrimitive.Geometry.Set((\
            (-0.5, 0.5, -0.5, 0.5, -0.5, 0.5, -0.5, 0.5), \
            (-0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5), \
            (-0.5, -0.5, -0.5, -0.5, 0.5, 0.5, 0.5, 0.5)), \
            (4, 0, 2, 3, 1, 4, 0, 1, 5, 4, 4, 0, 4, 6, 2, 4, \
            1, 3, 7, 5, 4, 2, 6, 7, 3, 4, 4, 5, 7, 6))
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 29.09.2014 - 22:39 Top
Loss
Профиль
Статус: ТерраОм
Группа: Артисты
Рейтинг: 0
подскажите плиз, какой командой можно узнать кто родитель объекта

тоесть... у нас есть два объекта (ob1 и ob2) ob2 прилинкован к ob1 (ob1--->ob2)
в скрипте я знаю имя ob2... как узнать имя объекта к которому он прилинкован?
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 27.11.2014 - 16:11 Top
Gescort
Профиль
Статус: слон
Группа: Заслуженные артисты
Рейтинг: 3
Loss
oParent = Application.Selection[0].Parent — присвоить переменной родителя
далее можно вывести в лог при необходимости Application.LogMessage(oParent)
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 28.11.2014 - 17:27 Top
Loss
Профиль
Статус: ТерраОм
Группа: Артисты
Рейтинг: 0
Gescort
Спасибо!
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 30.11.2014 - 21:20 Top
Loss
Профиль
Статус: ТерраОм
Группа: Артисты
Рейтинг: 0
еще вопрос возник...
с помощью какого оператора можно узнать выделенное ребро жесткое или нет?

Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 1.12.2014 - 14:35 Top
Gescort
Профиль
Статус: слон
Группа: Заслуженные артисты
Рейтинг: 3
Loss
IsHard, однако на всякий случай стоит заметить, что работает не с выделением напрямую, а с edges которые в него входят. Простенький пример с комментариями:
Цитата
xsi = Application
oSel = xsi.Selection #присвоение выделения
oEdges = oSel[0].SubComponent.ComponentCollection #коллекция выделенных граней
oHardArr = [] #массив, куда будут записываться грани, которые жесткие
for i in range(0, oEdges.Count): #цикл по коллекции выделенных граней
    if oEdges[i].IsHard: #проверка на жесткость
        oHardArr.append(oEdges[i]) #добавление в массив
for i in range(0, len(oHardArr)): #цикл по массиву, т.к. массив, то используется len()
    xsi.LogMessage(oHardArr[i].Index) #вывод номеров граней, которые жесткие
xsi.SelectGeometryComponents(oHardArr) #выделение только граней, которые жесткие

Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 1.12.2014 - 18:56 Top
Loss
Профиль
Статус: ТерраОм
Группа: Артисты
Рейтинг: 0
Gescort
Спасибо! Ценная инфа для меня... буду разбираться...
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 1.12.2014 - 20:12 Top
Loss
Профиль
Статус: ТерраОм
Группа: Артисты
Рейтинг: 0
написал небольшой скриптик...
если его повесить на какую-нибудь клавишу... можно легко переключать жескость выделенных ребер туда-сюда по одной клавише... сокращает колличество кликов.


'---------------------------------------------------------------------------------------
' "SwitchHard"
' By Losev Vitaliy (aka VitLoss)

dim SelectionObjects, FlagHard

SelectionObjects = GetValue ("SelectionList")

FlagHard = selection(0).SubComponent.ComponentCollection(0).IsHard

If FlagHard = true Then
UnHard
Else
Hard
End IF

SelectGeometryComponents SelectionObjects
'---------------------------------------------------------------------------------------
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 1.12.2014 - 21:12 Top
Gescort
Профиль
Статус: слон
Группа: Заслуженные артисты
Рейтинг: 3
Loss
Советую попробовать отказаться от vbs или jscript. Я в свое время jscript'е писал, но как оказалось это целый набор проблем и костылей по сравнению с Pyton.
По началу возможно тяжеловато сделать первый шаг, так как в том же SDK все примеры vbs или jscript, но по факту это роли никакой не играет.
Надо что ли попробовать записать видео с кратким экскурсом в Pyton и скриптинг.
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 2.12.2014 - 10:31 Top
Loss
Профиль
Статус: ТерраОм
Группа: Артисты
Рейтинг: 0
да... я уже тоже к этому пришел... просто что-то сложного пока не доводилось писать... так, по мелочи...
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 2.12.2014 - 13:17 Top
Gescort
Профиль
Статус: слон
Группа: Заслуженные артисты
Рейтинг: 3
Решил вот тут для себя замутить студию для тестов моделек с небольшой замашкой как-то все это унифицировать, чтобы можно было создать удобную коллекцию.
Замашка вообщем-то на то, чтобы переработать MaterialLibrary в универсальный вариант - библиотека материалов, моделей, текстур и т.д. Пока что правда только в планах и надо хорошенько обдумать как это все более по человечески реализовать.
Ну а потестить сценку здесь: https://www.dropbox.com/s/bngpv37qs2jog96/L...Studio.zip?dl=0

Кси 2015, редшифт. Практически все что можно залочено, чтобы не мешало. Смысл такой, что импортируем модельку, выставляем реальные размеры (1SI = 10см). Далее масштабируем студию под размеры (нуль модели обычным скейлом). Свет отмасштабируется так же пропорционально. Дополнительно прикрутил ориентир скейла, чтобы потом по превьюшкам приблизительно прикинуть масштаб.
Login require!
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 7.05.2015 - 23:07 Top
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Страницы: (16) « Первая ... 3 4 [5] 6 7 ... Последняя » Ответ в темуОтвет      Создание новой темыНовая тема   

 

Текстовая версия