Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Скрипт плугины класса RenderEffect

Читайте также:
  1. Celebrity Reflection – новейший лайнер класса Премиум
  2. АБСОЛЮТ (литера класса А)
  3. Анализ развития коллектива класса
  4. Введение в WSH. Обзор технологий скриптинга
  5. Вы можете выполнять задачи геообработки, запустив инструмент из диалогового окна, командной строки, либо в рамках скрипта или модели.
  6. Глава 12. Музыка для рабочего класса
  7. Глава 2. Основные негативные состояния и их скрипты.

Ключевую роль при написании этих плугинов обычно играет обработчик события apply или preApply. После объявления, описанный эффект доступен через диалог Render Effects > Add

Событие apply генерируется применением написанного Вами фильтра к результату рендеринга

on apply Параметр do

Когда написанный Вами эффект добавлен к списку эффектов и нажата кнопка Update Scene или Update Effect, обработчик события apply получает управление. В качестве параметра ему передается готовая битовая карта – результат рендеринга, со всеми эффектами, которые находятся в списке перед Вашим. В этом месте программы можно отредактировать полученное изображение (обычно при этом используются функции getPixel () и setPixel ()). Полученное в результате изображение переходит для обработки к следующим эффектам.

Чтобы написанный Вами эффект мог использовать данные канала g-буфера, необходимо определить обработчик события

on channelsRequired do

Этот обработчик должен возвращать массив имен каналов g-буфера. Допускаются следующие имена.

#zDepth

#matID

#objectID

#UVCoords

#normal

#unClamped

#coverage

#node

#shaderColor

#shaderTransparency

#velocity

#weight

Имеется еще одно событие, которое может понадобиться Вам при написании плугинов данного класса.

on preApply Параметр do

Его обработчик позволяет Вам анализировать результат рендеринга до применения к нему эффекта делегата. В приведенном ниже примере обработчик channelsRequired определяет необходимость в каналах #node и #coverage, а preApply использует информацию канала #node в качестве маски для эффекта делегата, что позволяет ограничить эффект пределами одного объекта сцены.

При разработке эффектов следует учитывать, что нельзя использовать в обработчике их событий функцию render, так как это приведет к зацикливанию программы.

Пример:

-- Данный эффект расширяет свойства эффекта Blur, позволяя

-- ограничить область действия эффекта пределами выбранного

-- объекта сцены.

plugin RenderEffect myBlurFX name:"Super Blur FX" classID:#(6545,456581)

extends:Blur version:1

(-- Локальные переменные

local tx = bitmaptexture()

local cm

local g_channels = #(#node, #coverage)

-- Свиток для дополнительных параметров эффекта

-- (Выбор объекта, к которому применяется фильтр)

rollout params "Super Blur FX Parameters"

(label nn align:#center

pickbutton nodepick "Pick Node"

)

-- Блок параметров

parameters main rollout:params

(thenode type:#node ui:nodepick

on thenode set nd do

params.nn.text = if nd = = undefined then "" else nd.name

)

-- Определение используемых каналов g-буфера

on channelsRequired do g_channels

-- Получение маски для применения фильтра

on preApply map do if theNode!= undefined then

(if cm = = undefined then

(cm = getChannelAsMask map #node node:theNode \

fileName:(scriptsPath + "__fxtmp.bmp")

save cm

tx.bitmap = cm

)

else

getChannelAsMask map #node node:theNode to:cm

)

-- Определение маски фильтра

on create do

(delegate.selMaskActive = true

delegate.selImageActive = false

delegate.selMaskMap = tx

)

)

Пример

-- Данный скрипт упрощает фильтр цветового баланса, позволяя

-- регулировать только красный цвет

plugin renderEffect myColorBalanceFx name:"Super Color Balance FX"

classID:#(64425,45761) extends:Color_Balance version:1

replaceUI:true

(-- Блок параметров

parameters main rollout:params

(redness type:#integer animatable:true ui:redness default:0.0

on redness set val do delegate.red = val

)

-- Свиток

rollout params "Super Color Balance Parameters"

(spinner redness "Redness: " type:#integer range:[-100,100,0]

)

)

Пример

-- Данный скрипт позволяет формировать изображение,

-- напоминающее негатив

plugin renderEffect Negative name:"Negative"

classID:#(0xb7aa794c, 0xc3bd78ab)

(-- Блок параметров содержит обращаемый цвет

parameters main rollout:params

(Color type:#color default:blue ui:Color

)

-- Свиток, в котором определен компонент выбора цвета

rollout params "Negative Parameters"

(colorpicker Color "Base color: " align:#center

)

-- Обращение цвета пересмотром всех точек

on apply bmp do

(for h = 0 to (bmp.height-1) do

(local sline = getPixels bmp [0,h] bmp.width

for i = 1 to sline.count do sline[i] = Color - sline[i]

setPixels bmp [0,h] sline

)

)

)

 


Дата добавления: 2015-10-31; просмотров: 62 | Нарушение авторских прав


Читайте в этой же книге: Индикатор процесса | Тело контекстного меню | Макро скрипты | Правила оформления средств работы с мышью | Скрипт плугины | Правила построения скрипт-плугина | Определение параметра | Функции, применяемые при разработке скрипт плугинов | Внесение изменений в плугин | Скрипт плугины класса SimpleObject |
<== предыдущая страница | следующая страница ==>
Скрипт плугины класса SimpleMod| Объекты 3ds max

mybiblioteka.su - 2015-2024 год. (0.007 сек.)