Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диплом_Данил.doc
Скачиваний:
42
Добавлен:
09.02.2016
Размер:
1.53 Mб
Скачать

Приложение

Листинг файла spot light_def.mel

// Создание спота

// название процедуры

// Procedure Name:

// defaultSpotLight

// описание

// Description:

// create a default spot light

// входные аргументы

// Input Arguments:

// None.

// возвратное значение

// Return Value:

// None.

//

global proc defaultSpotLight(

float $intensity,

float $colourR,

float $colourG,

float $colourB,

int $decay,

float $coneAngle,

float $dropOff,

float $penumbra,

int $shadows,

float $shadowColourR,

float $shadowColourG,

float $shadowColourB,

int $shadowSamples,

int $interactive

)

{

//получение выбранных объектов в случае, если пользователь предпримет интерактивное размещение

// создание света на объектах

string $selection[] = `ls -sl`;

string $lightName = `shadingNode -asLight spotLight`;

// выставление значения опции Vars(false);

if (!`optionVar -exists spotLightIntensity`) {

optionVar -floatValue spotLightIntensity 1;

}

if (!`optionVar -exists spotLightColor`) {

optionVar -floatValue spotLightColor 1

-floatValueAppend spotLightColor 1

-floatValueAppend spotLightColor 1;

}

if (!`optionVar -exists spotLightDecay`) {

optionVar -intValue spotLightDecay 0;

}

if (!`optionVar -exists spotLightConeAngle`) {

optionVar -floatValue spotLightConeAngle 40.0;

}

if (!`optionVar -exists spotLightDropoff`) {

optionVar -floatValue spotLightDropoff 0;

}

if (!`optionVar -exists spotLightPenumbra`) {

optionVar -floatValue spotLightPenumbra 0;

}

if (!`optionVar -exists spotLightShadows`) {

optionVar -intValue spotLightShadows false;

}

if (!`optionVar -exists spotLightShadowColor`) {

optionVar -floatValue spotLightShadowColor 0

-floatValueAppend spotLightShadowColor 0

-floatValueAppend spotLightShadowColor 0;

}

if (!`optionVar -exists spotLightInteractivePlacement`) {

optionVar -intValue spotLightInteractivePlacement 0;

}

string $cmd = ("setAttr " + $lightName + ".intensity " + `optionVar -query spotLightIntensity`);

eval $cmd;

float $rgb[3] = `optionVar -query spotLightColor`;

$cmd = ("setAttr " + $lightName + ".colorR " + $rgb[0]);

eval $cmd;

$cmd = ("setAttr " + $lightName + ".colorG " + $rgb[1]);

eval $cmd;

$cmd = ("setAttr " + $lightName + ".colorB " + $rgb[2]);

eval $cmd;

$cmd = ("setAttr " + $lightName + ".decayRate " + `optionVar -query spotLightDecay`);

eval $cmd;

$cmd = ("setAttr " + $lightName + ".coneAngle " + `optionVar -query spotLightConeAngle`);

eval $cmd;

$cmd = ("setAttr " + $lightName + ".dropoff " + `optionVar -query spotLightDropoff`);

eval $cmd;

$cmd = ("setAttr " + $lightName + ".penumbraAngle " + `optionVar -query spotLightPenumbra`);

eval $cmd;

$cmd = ("setAttr " + $lightName + ".useDepthMapShadows " + `optionVar -query spotLightShadows`);

eval $cmd;

$rgb = `optionVar -query spotLightShadowColor`;

$cmd = ("setAttr " + $lightName + ".shadColorR " + $rgb[0]);

eval $cmd;

$cmd = ("setAttr " + $lightName + ".shadColorG " + $rgb[1]);

eval $cmd;

$cmd = ("setAttr " + $lightName + ".shadColorB " + $rgb[2]);

eval $cmd;

select -r $lightName;

objectMoveCommand;

if ($interactive){

string $panel = `getPanel -withFocus`;

if (`getPanel -typeOf $panel` == "modelPanel"){

select -replace $lightName;

lookThroughSelected 0 $panel;

if (`size $selection`){

select -replace $selection;

fitPanel -selected;

} else {

fitPanel -all;

}

} else {

warning((uiRes("m_defaultSpotLight.kNotAModelingPanel")));

}

}

}

Листинг файла spot light_perf.mel

//

// Description:

// Настроййка и создание функций пучка света

//

//////////////////////////////////////////////////////////////////////

// Название процедуры

// Procedure Name:

// setOptionVars

// Описание

// Description:

// Настройка опций значений

//

// Input Arguments:

// Установка вариантов значений по умолчанию.

//

// Return Value:

// None.

//

proc setOptionVars(int $forceFactorySettings)

{

// Интенсивность (Intensity)

//

if ($forceFactorySettings || !`optionVar -exists spotLightIntensity`) {

optionVar -floatValue spotLightIntensity 1;

}

// Цвет (Color)

//

if ($forceFactorySettings || !`optionVar -exists spotLightColor`) {

optionVar -floatValue spotLightColor 1

-floatValueAppend spotLightColor 1

-floatValueAppend spotLightColor 1;

}

// Оценка распада (Decay Rate)

//

if ($forceFactorySettings || !`optionVar -exists spotLightDecay`) {

optionVar -intValue spotLightDecay 0;

}

// Угол наклона (ConeAngle)

//

if ($forceFactorySettings || !`optionVar -exists spotLightConeAngle`) {

optionVar -floatValue spotLightConeAngle 40.0;

}

// Постепенное уменьшение (Dropoff)

//

if ($forceFactorySettings || !`optionVar -exists spotLightDropoff`) {

optionVar -floatValue spotLightDropoff 0;

}

// Угол полутеней (Penumbra Angle)

//

if ($forceFactorySettings || !`optionVar -exists spotLightPenumbra`) {

optionVar -floatValue spotLightPenumbra 0;

}

// Тени (Shadows)

//

if ($forceFactorySettings || !`optionVar -exists spotLightShadows`) {

optionVar -intValue spotLightShadows false;

}

// Цвет теней (Shadow Color)

//

if ($forceFactorySettings || !`optionVar -exists spotLightShadowColor`) {

optionVar -floatValue spotLightShadowColor 0

-floatValueAppend spotLightShadowColor 0

-floatValueAppend spotLightShadowColor 0;

}

// Интерактивное размещение (Interactive Placement)

//

if ($forceFactorySettings || !`optionVar -exists spotLightInteractivePlacement`) {

optionVar -intValue spotLightInteractivePlacement 0;

}

}

// Название процедуры

// Procedure Name:

// spotLightSetup

// Описание

// Description:

// Обновление состояния вариантов окна пользовательского интерфейса с учетом значений // параметров.

// Input Arguments:

// родитель - Макет родителей в окне настроек пользовательского интерфейса.

// Обязательно что бы имена объектов интерфейса

// были максимально упрощены

//

// forceFactorySettings - Значения параметров установлены по умолчанию

//

//

// Return Value:

// None.

//

global proc spotLightSetup(string $parent, int $forceFactorySettings)

{

// Получение настроек параметров.

//

setOptionVars($forceFactorySettings);

setParent $parent;

float $rgb[3];

// Запрос типов и значений переменных в контрольной группе.

// Интенсивность (Intensity)

//

if (`floatSliderGrp -exists spotLightIntensity`) {

floatSliderGrp -edit

-value `optionVar -query spotLightIntensity`

spotLightIntensity;

}

// Цвет (Color)

//

if (`colorSliderGrp -exists spotLightColor`) {

$rgb = `optionVar -query spotLightColor`;

colorSliderGrp -edit

-rgb $rgb[0] $rgb[1] $rgb[2]

spotLightColor;

}

// Оценка распада (Decay Rate)

//

if (`optionMenuGrp -exists spotLightDecay`) {

optionMenuGrp -edit -sl (1+`optionVar -query spotLightDecay`)

spotLightDecay;

}

// Угол наклона (ConeAngle)

//

if (`floatSliderGrp -exists spotLightConeAngle`) {

floatSliderGrp -edit

-value `optionVar -query spotLightConeAngle`

spotLightConeAngle;

}

// Постепенное уменьшение (Dropoff)

//

if (`floatSliderGrp -exists spotLightDropoff`) {

floatSliderGrp -edit

-value `optionVar -query spotLightDropoff`

spotLightDropoff;

}

// Угол полутеней (Penumbra Angle)

//

if (`floatSliderGrp -exists spotLightPenumbra`) {

floatSliderGrp -edit

-value `optionVar -query spotLightPenumbra`

spotLightPenumbra;

}

// Тени (Shadows)

//

if (`checkBoxGrp -exists spotLightShadows`) {

checkBoxGrp -edit

-value1 `optionVar -query spotLightShadows`

spotLightShadows;

}

// Цвет теней (Shadow Color)

//

if (`colorSliderGrp -exists spotLightShadowColor`) {

$rgb = `optionVar -query spotLightShadowColor`;

colorSliderGrp -edit

-rgb $rgb[0] $rgb[1] $rgb[2]

spotLightShadowColor;

}

// Интерактивное размещение (Interactive Placement)

//

if (`checkBoxGrp -exists spotLightInteractivePlacement`) {

checkBoxGrp -edit

-value1 `optionVar -query spotLightInteractivePlacement`

spotLightInteractivePlacement;

}

}

// Название процедуры

// Procedure Name:

// spotLightCallback

//

// Description:

// Обновление значений параметров текущего состояния из опций окна польз.интерфейса

//

// Input Arguments:

// родитель - Макет родителей в окне пользов. интерфеса. Требуется для того что бы

// имена объектов

//

// doIt - Whether the command should execute.

//

// Return Value:

// None.

//

global proc spotLightCallback(string $parent, int $doIt)

{

70