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

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


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

> Мелкие скрипты и разработки, То, что недостойно отдельной темы   
Bender Bending
Профиль
Статус: слон
Группа: Артисты
Рейтинг: 0
Gescort
Спасибо. Это именно то что нужно
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 23.06.2015 - 11:12 Top
eistan
Профиль
Статус: леонардо
Группа: Заслуженные артисты
Рейтинг: 2
еще тут сделал совсем простой скриптец, задача такая встала, может можно и стандартными средствами как то)

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


QuickParent
Код
sel = Application.Selection

pick = Application.PickObject("Select Source", "Select Source").Value("PickedElement")

ppick = pick.Parent

for i in range(0, sel.Count):
   Application.ParentObj(str(ppick), str(sel(i)))



ну или просто вытащить обьекты в рут сцены
Unparent
Код
sel = Application.Selection
SceneRoot = Application.ActiveSceneRoot

for i in range(0, sel.Count):
   if sel(0).Parent.IsEqualTo(SceneRoot) == True:
       Application.LogMessage("All_object_is_Unparent")
   else:
       Application.ParentObj("Scene_Root", str(sel(i)))
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователяICQAOLYahooMSN
Цитировать сообщение Дата 23.06.2015 - 13:00 Top
Gescort
Профиль
Статус: слон
Группа: Заслуженные артисты
Рейтинг: 3
Код
Application.LogMessage(Application.ActiveProject.ActiveScene.Root)

Получить рут сцены независимо от его имени.

UPD: о, уже сам успел исправиться))
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 23.06.2015 - 13:43 Top
eistan
Профиль
Статус: леонардо
Группа: Заслуженные артисты
Рейтинг: 2
Gescort
а уже опередил) нашел косяк, и еще там был

а кстати, есть разница моего от твоего ? просто у меня укороченный вариант

блин, почему так мало времени на исправление своего поста) еще косяк нашел, вот обновил
Unparent
Код
sel = Application.Selection
SceneRoot = Application.ActiveSceneRoot

for i in range(0, sel.Count):
   if sel(i).Parent.IsEqualTo(SceneRoot) == False:
       Application.ParentObj("Scene_Root", str(sel(i)))
   else:
       Application.LogMessage("All_object_is_Unparent")
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователяICQAOLYahooMSN
Цитировать сообщение Дата 23.06.2015 - 13:45 Top
Gescort
Профиль
Статус: слон
Группа: Заслуженные артисты
Рейтинг: 3
Нет, на практике разницы никакой не будет. Просто это уже привычка выработалась по структуре: XSIApplication - XSIProject - Scene - Root, из предыдущего можно перейти в следующий. И кстати также все это в эксплорере отображается если вызвать его полный вид (А), соответственно легко понять откуда что искать (то, о чем я говорил ранее).
ActiveSceneRoot - для ленивых :)
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 23.06.2015 - 14:16 Top
Gescort
Профиль
Статус: слон
Группа: Заслуженные артисты
Рейтинг: 3
eistan
Кстати вот видео как оформлять код в плагины и их паковать в аддоны.
С аддонами только не переборщи - стоит учитывать, что если каждый скрипт паковать в аддон, то их потом и ставить каждый по отдельности. Если чувствуешь, что набралось что-то достаточное, то лучше сразу группу скриптов в аддон, либо какой-то стоящий инструмент, которому суждено быть самому по себе.
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 23.06.2015 - 15:29 Top
OZazello
Профиль
Статус: Fool Power
Группа: Элита
Рейтинг: 10
ребята, а может кто посмотреть исходники к Motion Trail - там в версии 1.5 при попытке крутить направляющие во вьюпорте они двигаются в другом направлении или вообще х3 что с ними происходит. В версии 1.3 такого небыло.
Я писал автору по поводу этого бага, но увы, он похоже забил на всё это :(

Motion Trail
Персональное сообщениеСайт пользователяICQAOL
Цитировать сообщение Дата 23.06.2015 - 19:24 Top
eistan
Профиль
Статус: леонардо
Группа: Заслуженные артисты
Рейтинг: 2
OZazello
это если не ошибаюсь дело рук origin, а он на с++ все делал вроде как, я тоже несколько раз ему писал по поводу квикпримитива и еще че то, молчит... последний раз на форуме он был год назад, видать заманили куда в конторку серьезную, и теперь нет времени на эти наши игрушки с умершей ксей) все, потеряли мы одного из крутейших плагиносоздателей для кси, который хоть как то оживлял и двигал вперед софт((

апд. а тупанул, ник taro автора, да, точно, спутал, но все равно жаль что пропадают такие спецы) taro так ваще на вимео даже акк удалил, а на сикомьюнити был аж 3 года назад с последнего поста
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователяICQAOLYahooMSN
Цитировать сообщение Дата 23.06.2015 - 19:56 Top
Gescort
Профиль
Статус: слон
Группа: Заслуженные артисты
Рейтинг: 3
OZazello
Не знал о таком. И действительно мне его не хватало.
По поводу посмотреть - он Сишный, это морально готовиться надо, чтобы в коде ковыряться (( И не знаю, хватит ли скилла, чтобы разобраться.
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 23.06.2015 - 19:58 Top
eistan
Профиль
Статус: леонардо
Группа: Заслуженные артисты
Рейтинг: 2
еще вброс

RandomReplace
выделяем кучку обьектов, жмем и скрипт заменяет 2 рандомных обьектов из выделенного друг другом, жмем столько раз скока хотим чтоб заменилось как можно больше обьектов, лучше чтоб хотя бы 3 было обьекта, ибо 2 штуки будут просто друг с другом менятся местами)

Код
import random

sel = Application.Selection
scount = sel.Count
rand01 = random.randint(1,scount)
rand02 = random.randint(1,scount)

while rand01==rand02:
   rand02 = random.randint(1,scount)
   

name01 = sel(rand01-1)
name02 = sel(rand02-1)


PosX1 = Application.GetValue(str(name01) + ".kine.global.posx")
PosY1 = Application.GetValue(str(name01) + ".kine.global.posy")
PosZ1 = Application.GetValue(str(name01) + ".kine.global.posz")

PosX2 = Application.GetValue(str(name02) + ".kine.global.posx")
PosY2 = Application.GetValue(str(name02) + ".kine.global.posy")
PosZ2 = Application.GetValue(str(name02) + ".kine.global.posz")


Application.SetValue(str(name02) + ".kine.global.posx", PosX1, "")
Application.SetValue(str(name02) + ".kine.global.posy", PosY1, "")
Application.SetValue(str(name02) + ".kine.global.posz", PosZ1, "")


Application.SetValue(str(name01) + ".kine.global.posx", PosX2, "")
Application.SetValue(str(name01) + ".kine.global.posy", PosY2, "")
Application.SetValue(str(name01) + ".kine.global.posz", PosZ2, "")
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователяICQAOLYahooMSN
Цитировать сообщение Дата 24.06.2015 - 14:03 Top
/voo-doo/
Профиль
Статус: три дэ бугор
Группа: Заслуженные артисты
Рейтинг: 7
Я все ждал когда выйдет что-то такое , что начнет потихоньку загонять СИ в прошлое.
И вот сегодня опенсабдив 3.0 выходит...

Цитата
Maya and Pixar's proprietary Presto animation system can take 100ms to subdivide a character of 30,000 polygons to the second level of subdivision (500,000 polygons). Being able to perform the same operation in less than 3ms allows the user to interact with the smooth, accurate limit surface at all times.
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 24.06.2015 - 14:26 Top
eistan
Профиль
Статус: леонардо
Группа: Заслуженные артисты
Рейтинг: 2
а как то можно скриптом получить имя оригинала если выделен инстанс модели? или стандартными средствами как то выделить оригинал)
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователяICQAOLYahooMSN
Цитировать сообщение Дата 24.06.2015 - 15:42 Top
Gescort
Профиль
Статус: слон
Группа: Заслуженные артисты
Рейтинг: 3
/voo-doo/
Ну по сути это столь критично только для аниматоров, а тут как не развивайся сабдив в производстве онли Майка.

eistan
Смотри логику как искать такие вещи. Узнаем тип выделенного объекта (инстанс модели)
Код
xsi = Application
oSel = xsi.Selection
for i in range(0, oSel.Count):
   xsi.LogMessage(oSel[i].Type)

Выдает что это #model. Лезем в хелп SDK и ищем model: http://docs.autodesk.com/SI/2015/ENU/Softi...i_om/Model.html
У модели есть свойство InstanceMaster, соответственно xsi.LogMessage(oSel[i].InstanceMaster) выдаст исходник.
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 24.06.2015 - 16:00 Top
eistan
Профиль
Статус: леонардо
Группа: Заслуженные артисты
Рейтинг: 2
Gescort
ну я так и искал в сдк, но на питоне примеров использования не увидел, там тока на си шарпе, подумал мож на питоне как то подругому, или ваще нельзя, и смутила где то строчка еще когда рыскал

Цитата
Note: Since Python does not support input parameters on properties


вот
http://docs.autodesk.com/SI/2015/ENU/Softi...ect.Models.html

и как вообще в сдк проверять или где то смотреть работает ли эта команда с нужным тебе языком если примеров нет, брать с названия и методом тыка юзать ? )
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователяICQAOLYahooMSN
Цитировать сообщение Дата 24.06.2015 - 18:05 Top
Gescort
Профиль
Статус: слон
Группа: Заслуженные артисты
Рейтинг: 3
Там по сути не так уж и много исключений для Питона, а если они и есть, то всегда помечены отдельно как здесь (GetModels2() вместо Model). То, что под Питон обычно нет примеров абсолютно не должно смущать, суть остается той же.
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 24.06.2015 - 18:18 Top
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

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

 

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