SoftimageRu Форум -> Find And Replace

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


Страницы: (3) 1 2 [3]   ( Перейти к первому непрочитанному сообщению ) Ответ в темуОтвет      Создание новой темыНовая тема   

> Find And Replace, есть ли такое?   
eistan
Профиль
Статус: леонардо
Группа: Заслуженные артисты
Рейтинг: 2
Gescort
о, как раз начал писать скрипт по замене всех материалов в сцене и вспомнил что именно ты уже его мне давал, в те времена когдя я еще в питоне совсем ноль был)
сейчас накидал просто замену материалов на Редшифт на выделенных обьектах (обычно такие приходят из макса, выделил, и жмакнул, чтоб все не перебирать в библиотеке)
если был фонг то и цвет оставляет

Код

sel = Application.Selection

for x in range(0, sel.Count):
   if "col1" in locals():
       del col1
       del col2
       del col3
   if sel(x).Material.Shaders(0).ProgID != "Redshift.material-architectural.1.0":
       for y in range(0, sel(x).Material.Shaders.Count):
           if sel(x).Material.Shaders(y):
               if sel(x).Material.Shaders(y).ProgID == "Softimage.material-phong.1.0":
                   col1 = Application.GetValue(str(sel(x).Material)+".Phong.diffuse.red")
                   col2 = Application.GetValue(str(sel(x).Material)+".Phong.diffuse.green")
                   col3 = Application.GetValue(str(sel(x).Material)+".Phong.diffuse.blue")
       red = Application.CreateShaderFromProgID("Redshift.material-architectural.1.0", sel(x).Material, "Redshift_Architectural")
       Application.SIConnectShaderToCnxPoint(str(red)+".out", str(sel(x).Material)+".surface", False)
       Application.SIConnectShaderToCnxPoint(str(red)+".out", str(sel(x).Material)+".shadow", False)
       Application.SIConnectShaderToCnxPoint(str(red)+".out", str(sel(x).Material)+".photon", False)
       
       #Application.LogMessage(str(sel(x).Material)+str(red.Name)+".diffuse.red")
       if "col1" in locals():
           Application.SetValue(str(sel(x).Material)+"."+str(red.Name)+".diffuse.red", col1, "")
           Application.SetValue(str(sel(x).Material)+"."+str(red.Name)+".diffuse.green", col2, "")
           Application.SetValue(str(sel(x).Material)+"."+str(red.Name)+".diffuse.blue", col3, "")
       
       Application.DeleteUnusedShaders(sel(x).Material)
       Application.LogMessage("Redshift is Ready")
   else:
       Application.LogMessage("Redshift is Ready")


сейчас просмотрел твой скрипт, и уже все понятно) я по такой же логике и начал писать..
и теперь уже мне интересно стало какие такие все таки ограничения есть в питоне и сдк вобщем, такое что даже на с++ не сделать? или с какими ты ограничениями сталкивался? так как я пока конечно своим мелких скриптикам и возможностям радуюсь аж ссусь кипятком)) учитывая что раньше я ваще думал Pick команду нельзя скриптом вызвать, когда на яве еще сидел :) не знаю почему так думал, мож плохо искал.. скриптинг ваще стока ограничений убрал в действиях и в голове и нереально расширил грани возможного, а это тока я питон учу, и с++ тока на днях поставил, Visual Studio 2010, и первые примеры типа "Hello World" уже разобрал))).. и какие идеи кстати загнулись твои?
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователяICQAOLYahooMSN
Цитировать сообщение Дата 24.06.2015 - 20:05 Top
Gescort
Профиль
Статус: слон
Группа: Заслуженные артисты
Рейтинг: 3
Ну первые разочарования были когда все-таки оказалось взаимодействие со стандартными окнами крайне ограничено, только через заранее обозначенные атрибуты. А их вообще не хватает. Например, хочу на хоткей рефреш окна рендер превью, а никак нельзя - нет такого атрибута.
Потом в свое время начал писать colorCopier, панельку где можно удобно палитру цветов хранить (в итогу сделал через обычный PPG и как-нибудь надо будет переписать - иногда косячит). И хочу все красиво, чтобы сверху цветовой круг, а снизу ячейки для цветов. Как все-таки подсказал MrCore на Си через кастом дисплей хост бери и пиши (только примеров для разбора кот наплакал). Но вот даже если напишу я его, а как взаимодействие со стандартным окошком выбора цвета делать, чтобы его перетаскивать можно было? А без этого толку нет.
Да и для стандартного выбора цвета я бы непрочь контекстное меню как в максе и во всех других программах. И хрен тебе.
А захотел я в свое время удобный мердж поинтклаудов, да и другие быстрые инструменты для работы с ними. А оказалось, что они только процедурные для айса и даже Си тут не поможет. Сейчас правда есть идея как это можно реализовать - выводить все данные в кастомный кеш и из него партиклы уже читать. Соответственно разрабатываемые инструменты должны фактически все операции не над объектами делать, а над кешем. Криво, но думаю должно сработать.
В PPG кроме обозначенных данных ничего нельзя больше вывести. Например в реде в exposureControl показывается кривая tonemapping и вместо того, чтобы ее сразу в PPG програмно выводить она сторится картинкой статичной и потом уже картинка в PPG подгружается. Да, разрабы реда нашли как изловчиться, чтобы ее туда запихать. Но ксюшке плюса от этого никакого.
Если не ошибаюсь, то во вьюпорте просто так что-то свое вывести не получится. Есть два пути - вывод собственных элементов во время активации тулза или переключение в кастом вью (как в арнольде для просмотра стендинов). Но есть у меня допустим два плага с кастомным вью, оба их сразу не активировать, поэтому все вывести не получится.
Ну и последнее о чем осенило - супер быстрого ускорения на многополигонных объектах не получить ни с распараллеливанием, ни с использованием GPU. Проблема в выводе данных: сначала все забрали, обработали, вернули обратно измененные. И когда моделька на 10к поинтов и перемещаем одну точку - придется забрать все 10 тысяч, именить в массиве координаты для одной и вернуть все эти данные обратно. Но это уже внутренняя проблема ядра.
Ну и в таком духе чем дальше разбираешься, тем больше затычек встречается. Да, многие из них если постараться можно обойти или как-то изловчиться, но зачастую результат может быть не таким удобным/красивым/логичным.

Кстати насчет изучения Си и "хеллоу ворлд" - хочу тебя разочаровать и обрадовать. Разочаровать - все эти хеллоу тебе не потребуются. И обрадовать - разработка плагов в большей степени похожа на тоже самое скриптование на Питоне, только постоянный контроль за данными и некоторые свои заморочки. Но это конечно для простеньких скриптов, для более серьезных вещей знание Си конечно же потребуется. Самое главное только один раз разобраться как проект настраивать.
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 24.06.2015 - 21:20 Top
kosyan
Профиль
Статус: слон
Группа: Элита
Рейтинг: 8
Цитата
хочу на хоткей рефреш окна рендер превью

F5
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователя
Цитировать сообщение Дата 24.06.2015 - 21:57 Top
Gescort
Профиль
Статус: слон
Группа: Заслуженные артисты
Рейтинг: 3
kosyan
Регион да - обновляется, а превью нет.
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 24.06.2015 - 22:02 Top
kosyan
Профиль
Статус: слон
Группа: Элита
Рейтинг: 8
тогда только :mm: на регионе или кастом скрипт на хоткей
Код
SITOA_DestroyScene
SITOA_FlushTextures
RenderRegionRefresh
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователя
Цитировать сообщение Дата 24.06.2015 - 22:08 Top
kosyan
Профиль
Статус: слон
Группа: Элита
Рейтинг: 8
опа, а у меня по F5 регион обновляется
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователя
Цитировать сообщение Дата 24.06.2015 - 22:12 Top
kosyan
Профиль
Статус: слон
Группа: Элита
Рейтинг: 8
Анольд, ментал и 3делайт
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователя
Цитировать сообщение Дата 24.06.2015 - 22:14 Top
kosyan
Профиль
Статус: слон
Группа: Элита
Рейтинг: 8
попутал, тебе же рендер превью надо :to_becom:
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователя
Цитировать сообщение Дата 24.06.2015 - 22:19 Top
kosyan
Профиль
Статус: слон
Группа: Элита
Рейтинг: 8
вариант: повесить хоткей на открытие ещё одного рендер превью окна?
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователя
Цитировать сообщение Дата 24.06.2015 - 22:34 Top
Gescort
Профиль
Статус: слон
Группа: Заслуженные артисты
Рейтинг: 3
Цитата
вариант: повесить хоткей на открытие ещё одного рендер превью окна?

Не, хотелось бы когда окно залочено замком от автообновления рендера. А закрывая старое и вызывая новое не будет замка.
Если только совсем извращаться и через стороннии проги отлавливать фрагмент кнопки на графическом распознавании и инициировать клик по ней. Но это уже полный перебор и не столь важная фича чтобы такое городить.
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 24.06.2015 - 23:16 Top
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Страницы: (3) 1 2 [3]  Ответ в темуОтвет      Создание новой темыНовая тема   

 

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