Render.ru

MEL : путь к текстурам.

DEL

Активный участник
Рейтинг
15
#1
Привет!
Хочу поменять путь к секстурам одновренно в нескольких узлах File.Знаю как присвоить значения другим атрибутам, например :

string $obj[] = `ls -tex` ;
string $mult ;
for ($mult in $obj) {
setAttr ($mult +".useCache") 1;

а вот как удалить строку до sourceimages\XXX.tga одновременно нескольким не знаю.

Порылся в MEL Command Reference-е и самое подходящее для моего случая нашел tokenize, но никак не смог заставить делать то, что мне нужно:) На хайенде нашел, скрипт который выполняет эту задачу, но мне очень трудно понять как он действует. Все что я понял(возможно я ошибаюсь) этот скрипт находит нужный(Set) проект в среде винды и таким образом заменяет строку.

Спасибо
 

Миша Ершов

Модератор форума
Рейтинг
314
#2
Что-то я никак не соображу что надо :) Нельзя разве объяснить по-человечески?

Хочу поменять путь к секстурам одновренно в нескольких узлах File
команда

AEassignTextureCB file1.fileTextureName "filename.jpg" "image";

не подходит?
 

DEL

Активный участник
Рейтинг
15
#3
AEassignTextureCB file1.fileTextureName "filename.jpg" "image";

не подходит?
Увы, не подходит.


Что-то я никак не соображу что надо :) Нельзя разве объяснить по-человечески?
Извинаюсь за не очень четко заданый вопрос.
Значит так, есть проект над которым работали несколько человек и все сцены находились на одном компютере в локальной сети. Тоесть папки с нашими проектами находились на другом компютере. По идее кода начинаешь работать над проектом выполняешь set project... и после сохранения, каждый раз когда нажмешь open scene машина ссылается на проект, который мы указали в set project. Каждый обьект имеет по текстуре и по идее имеют путь
sourceimage\file.jpg, но некоторые из нас умудрились работаь без set projecт и теперь путь к текстурам в их сценах проходит по всей сети(\\xxx\xxx\"projectName"\sorceimages\file.jpg), что не есть хорошо :) потому, что renderPal 2004(програма для рендера в сети), которым мы пользуемся не видит текстуры с вышеуказаными путями. Ему подавай sourceimages\file.jpg.
Проблема в том , что в каждой сцене по меньшей мере 150-200 разных таких текстур.
Так вот, хотелось бы знать если есть такая возможность в МЕЛ, удалить в пути этих файлов строку до sourceimages\file.jpg.
Тоесть вместо \\ххх\ххх\projectName\sorceimages\file.jpg было только sorceimages\file.jpg и проделать это с неколькими узлами одноверменно.
 

Миша Ершов

Модератор форума
Рейтинг
314
#4
Команда stringToStringArray разбивает стринговую строку на массив по разделителю.

Смысл простой:
этой командой разбиваем строку на массив. Потом ищем в массиве "sourceimages". Когда находим, то записываем в атрибут оставшуюся часть из массива через наш разделитель "\".
 

DEL

Активный участник
Рейтинг
15
#5
Спасибо, попробую, но думаю придется повозится с обратным слэшем :)
 

DEL

Активный участник
Рейтинг
15
#7
Все ! Задачу решил. Еще раз спасибо вам, Миша Ершов.
 

DEL

Активный участник
Рейтинг
15
#8
Никак не могу получить значения атрибута .fileTextureName нескольких этих файлов. Выполняю вот это :

string $ut[] = `ls -tex`;
string $mult;
for ($mult in $ut)
{
getAttr($mult + ".fileTextureName");
}
и ничего.Зато выполнив только getAttr($mult + ".fileTextureName"); при выделеном обьекте то все нормально.
Как сделать так, чтобы получить значения всех обьектов в сцене?
Спасибо.
 

Миша Ершов

Модератор форума
Рейтинг
314
#9
А getAttr куда записывает результат выполнения команды?

Вот так всё работает :)
Я кстати очень не люблю урезанный вариант циклов for :) С ними только путаница.

string $ut[] = `ls -tex`;
string $textrs[];
for ($i = 0; $i < size($ut); $i++)
{
$textrs[$i] = `getAttr ($ut[$i] + ".fileTextureName")`;
} ;
print $textrs;
 

DEL

Активный участник
Рейтинг
15
#10
Еще раз спасибо вам! :)
А почему путаница? Обьясните пожалуйста если н етрудно :) .
 

Миша Ершов

Модератор форума
Рейтинг
314
#11
Да потому что вот мне нужен просто цикл. Я вставляю for ($element in $array). Всё работает. А потом мне вдруг понадобилось немного (или много) усложнить его. Придется менять цикл на более функциональный, с переменной.
Я несколько раз ставил укороченные циклы - так потом всё равно их пришлось менять на нормальные. Ну и еще дело в привычке. У меня видимо из паскаля такая осталась :)
 

DEL

Активный участник
Рейтинг
15
#12
Спасибо, все понял.А еще прочитал инфы в книге Казмера и Уилкинса ;)
 
Сверху