Render.ru

вопросы по MEL

VARVAR13

Активный участник
Рейтинг
8
а еще лучше подскажите как совмещать (комбинировать) formLayout с остальными layout-ами ...
 

VARVAR13

Активный участник
Рейтинг
8
с комбинированием лайоутов разобрался сам ( главное было озвучить вопрос), а никто не подскажет как scrolLayout или frameLayout прицепить к стенкам окна чтобы они изменялись с размером окна... покаместь методом тыка в хелпе ничего не находится...
 

iNOD

Активный участник
Рейтинг
18
Это ветка форума "Задал вопрос и сам решил"? XD Хоть бы поделился, мб кто то тоже будет искать.
 

Strahovid

Активный участник
Рейтинг
11
Такой вопрос. Не могу найти команду, чтобы выдавала координаты объекта (или может его пивота) в пространстве. Нашол только как координаты вертекса определить.
 

рерка

Пользователь сайта
Рейтинг
2
Страховид, поделись знанием. Где можно увидеть координаты вертекса? Задал этот вопрос в главной ветке, там все молчат. Заняты сильно наверно ))
 

Strahovid

Активный участник
Рейтинг
11
Толи в этом топике отвечали, толи в общих вопросах. Недавно буквально.
Выделить вертекс, ввести команду pointPosition;
 

Strahovid

Активный участник
Рейтинг
11
К вопросу о координатах объекта. Попробовал сделать так:
Код:
string $qwe[];
string $qwe1[];

$qwe = `ls -sl`;
float $x = `getAttr $qwe.translateX`;
float $y = `getAttr $qwe.translateY`;
float $z = `getAttr $qwe.translateZ`;

$qwe1 = `spaceLocator -p $x $y $z `;
xform -cp $qwe1;

parent $qwe $qwe1;
Но это работает, только до обнуления трансформаций. В общем не то, что нужно. Нужны именно координаты относительно центра мировых координат. Как то так.
-----------------------------------------\

Решил ещё с другой стороны зайти. Снять координаты вертекса через pointPosition;, но не могу понять, как полученные значения использовать для $qwe1 = `spaceLocator -p $x $y $z `;
 

О С (VirtualV)

Активный участник
Рейтинг
5
Такой вопрос. Не могу найти команду, чтобы выдавала координаты объекта (или может его пивота) в пространстве. Нашол только как координаты вертекса определить.
Как тоже нужно были мировые координаты объекта, как я тогда понял получить их командой просто так нельзя но можно вычислить из матрицы преобразований, могу конечно ошибаться, для себя где то нарыл скрипт для преобразований координат.
Собственно сам скрипт:
Код:
// Skript stransform space coordinats to other space
// Использование spaceToSpace (float $pt[], string $fromSpace, string $fromNode, string $toSpace, string $toNode)
// $pt - координаты которые необходимо преобразовать
// fromSapce - пространство из корого нужно преобразовать
// fromNode - нода с которой надо взять матрицу преобразования (та с котрой надо преобразовать координаты)
// toSpace - в какую систему надо преобразовать
// toNode - матрицуцу какой ноды нужна для преобразования.
// пример :
/*
	float $pt[3] = {1.0, 2.0, 3.0};
	$pt = spaceToSpace($pt, "local", "pCube1", "local", "nurbsCone1");
	
	//преобразование из локального в мировое пространство.
	$pt = spaceToSpace($pt, "local", "nurbsSphere1", "world", "");
	
	//преобразовать из мирового в локальное простарнство;
	$pt = spaceToSpace($pt, "world", "", "local", "pCube1");
*/
proc float[] transformWorld (float $pt[], float $mtx[]){
	float $res[] = { 0.0, 0.0 , 0.0 };
	
	if (size($pt) != 3 && size($mtx) != 16){
		warning "transformWorld proc : pt != 3 or mtx != 16 elements";
		return $res;
	}
	
	$res[0] = $pt[0] * $mtx[0] + $pt[1] * $mtx[4] + $pt[2] * $mtx[8] + $mtx[12];
	$res[1] = $pt[0] * $mtx[1] + $pt[1] * $mtx[5] + $pt[2] * $mtx[9] + $mtx[13];
	$res[2] = $pt[0] * $mtx[2] + $pt[1] * $mtx[6] + $pt[2] * $mtx[10] + $mtx[14];
	
	return $res;
}

proc int getInstanceIndex (string $nodePath){ // возвращает индекс данного узла.
	string $paths[] = `ls - allPaths $nodePath` ;
	int $i;
	for ($i=0; $i< size($paths); $i++){
		if ($paths[$i] == $nodePath)
			return $i;
		retrun -1;
	}
}

proc float[] toSpace (float $pt[], string $fromSpace, string $fromNode, string $toSpace, string $toNode){
	float $res[] = $pt;
	float $mtx[];
	
	if ($fromSpace == "local"){ //преобразуем точку в мировое пространство.
		$mtx = `xform -q -ws -m $fromNode`;
		$res = transformWorld($res, $mtx);
	}
	
	if ($toSpace == "local"){ //преобразуем точку в нужное нам пространство.
		int $inst = getInstanceIndex($toNode);
		string $attr = $toNode + ".worldInverseMatrix[" + $inst + "]";
		$mtx = `getAttr $attr`;
		print "\nInverse: "; //обратная матрица.
		print $mtx;
		$res = transformWorld($res, $mtx);
	}
return $res;
}

global proc float[] spaceToSpace (float $pt[], string $fromSpace, string $fromNode, string $toSpace, string $toNode){
	return toSpace ($pt, $fromSpace, $fromNode, $toSpace, $toNode);
}
 

О С (VirtualV)

Активный участник
Рейтинг
5
И в правду, подумал об одном а написал ... ммм полную чушь, скрипт на самом деле преобразует координаты одного объекта в пространство другого.
 

Ken_Zin

Мастер
Рейтинг
108
Ребята,подскажите пожалуйста как через mel можно прицепить отрендеренную картинку на превью материала
"grab swatch to hypershade visor"
Echo all cammands выдаёт:

renderWindowMenuCommand grabSwatch renderView; // переходим в режим взятия swatch

renderWindowCheckAndRenderRegion 1 0 0 1; // размер взятого образца (до краёв)

setAttr defaultRenderGlobals.left 0; // если рендер размером 256х256
setAttr defaultRenderGlobals.rght 256;
setAttr defaultRenderGlobals.bot 0;
setAttr defaultRenderGlobals.top 256;

а потом ,когда тянешь её на материал пишет такую дрянь:


hyperShadePanelSetActiveTabLayout hyperShadePanel1 firstPaneTabs false; // дрянь какая то
 

Dobroslav

Активный участник
Рейтинг
10
Подскажите, есть ли способ отследить окончание работы batchRender-а? Нужно выполнить несколько пакетных рендеров подряд с разными настройками камеры, а делать каждый раз проверку по наличию конечного файла не хочется. Майка 2012.
 

Dark™

Модератор форума
Команда форума
Рейтинг
431
Подскажите, есть ли способ отследить окончание работы batchRender-а? Нужно выполнить несколько пакетных рендеров подряд с разными настройками камеры, а делать каждый раз проверку по наличию конечного файла не хочется. Майка 2012.
http://www.render.ru/forum/viewtopic.php?post_id=964940#964940
 

Maledetta

Активный участник
Рейтинг
15
Вот есть часть скрипта с перебором элементов и как пример делает все слои видимыми или нет
Код:
    string $layer;
    string $AllLayers[] = `ls -type displayLayer`;
    for($layer in $AllLayers)
        {
        setAttr ($layer + ".visibility") 0;
        }
Но здесь перебираются только те слои которые начинаются с маленьких a, b или с, или любой заглавной (от d и дальше по алфавиту со слоями ничего не происходит)
Если создать дефолтные слои (layer1...) то всё работает пока не переименуешь хотя бы 1
Может кто обьяснить причину такой избирательности или как её обойти?
 
Сверху