Render.ru
Поддержать

Запуск скрипта во множестве сцен

kuirp

Активный участник
Рейтинг
16
Привет всем!
Собственно, имеется один скрипт и много сцен, на которые надо этот скрипт применить.

Есть автоматика какая для таких целей?
Или только вручную?

igorznag

Мастер
Рейтинг
103
Объясните подробнее.
Что делает этот скрипт? Скрипт имеет своё окно или нет?
Можно редактировать этот скрипт или он зашифрован?
Вы можете нам предоставить этот скрипт?
После применения скрипта нужно сохранить сцену?

kuirp

Активный участник
Рейтинг
16
igorznagОбъясните подробнее.
Что делает этот скрипт? Скрипт имеет своё окно или нет?
Можно редактировать этот скрипт или он зашифрован?
Вы можете нам предоставить этот скрипт?
После применения скрипта нужно сохранить сцену?
Скрипт простейший, сделал macro recorder'ом.
Добавляет в сцену камеру в нужном мне ракурсе
переключается на вид из камеры
сохраняет сцену
Всё.

Окон не имеет.

Таким образом при File\Open выделяю файл сцены - вижу что внутри.
Дополнительное удобство, так сказать.

Не понимаю каким образом эта информация поможет решить вопрос, который я задал.:Confused:

igorznag

Мастер
Рейтинг
103
kuirpНе понимаю каким образом эта информация поможет решить вопрос, который я задал.
Чем больше информации, тем лучше.
Все файлы max находятся в одной общей папке или в разных папках?

Допустим что все файлы max находятся в одной общей папке.
Пример. Создаем новую папку и несколько файлов max в ней.
Открываем программу 3ds max. Запускаем скрипт.
В новом окне нажимаем кнопку и выбираем папку с файлами max.
Скрипт последовательно открывает каждый файл max.
Создает камеру, переключается на вид из камеры и сохраняет сцену.
try destroydialog test catch()
rollout test "Test" width:120 height:35
(
    button btn_select_max_folder "Select max folder" pos:[5,5] width:110 height:25
    on btn_select_max_folder pressed do
    (
        f=getSavePath caption: "Select folder with max files"
        if f!=undefined do
        (  
            resetMaxFile #noPrompt; files = getFiles (f+"/*.max")
            for f in files do
            (
                loadMaxFile f quiet:true
                c=freeCamera(); c.transform=matrix3 [0.707,-0.707,0] [0.353,0.353,0.866] [-0.612,-0.612,0.5] [-88.775,-106.938,93.634]
                viewport.setCamera c; completeredraw(); max file save   
            )--for f in files do
            resetMaxFile #noPrompt
        )--if f!=undefined   
    )--on btn_select_max_folder do
); createdialog test

kuirp

Активный участник
Рейтинг
16
Изменено: 3 #7
igorznagЧем больше информации, тем лучше.
Все файлы max находятся в одной общей папке или в разных папках?

Допустим что все файлы max находятся в одной общей папке.
Пример. Создаем новую папку и несколько файлов max в ней.
Открываем программу 3ds max. Запускаем скрипт.
В новом окне нажимаем кнопку и выбираем папку с файлами max.
Скрипт последовательно открывает каждый файл max.
Создает камеру, переключается на вид из камеры и сохраняет сцену.
Сегодня затестил - всё работает шикарно!🙂
Весьма полезная штука вышла)) Спасибо
Одна мелочь - какой из параметров влияет на позицию\ориентацию камеры в пространстве?
Очевидно, какой-то из этой строки:

c.transform=matrix3 [0.707,-0.707,0] [0.353,0.353,0.866] [-0.612,-0.612,0.5] [-88.775,-106.938,93.634]
Но за конкретику лишний плюс в карму)

kuirp

Активный участник
Рейтинг
16
Изменено: 5 #8
Вдогонку мысль: настаивать не буду, однако, для полного счастья скрипту не хватает кнопочки выбора объекта(или списка объектов) из текущей сцены собственно вместо той камеры, которая создаётся автоматом.

В таком случае всё дополнительно в разы упрощается:
1. Запускаем скрипт
2. Выбираем объект\список объектов
3. Указываем папку с файлами max
4. Скрипт добавляет объект\список объектов в текущей позиции\ориентации в каждый файл сцены из папки

Правда, тут переключение на вид из камеры уже не особо нужно