Краткий обзор
Эффект, который смещает каждый пиксель на расстояние, определенное первыми двумя полосами указанного FloatMap. Для каждого пикселя в выводе, соответствующих данных от mapData
получается, масштабируется и смещается scale
и offset
атрибуты, масштабируемые снова размером исходного ввода, отображают и используемый в качестве смещения от целевого пикселя, чтобы получить пиксельные данные от исходного ввода.
dst[x,y] = src[(x,y) + (offset+scale*map[x,y])*(srcw,srch)]Значение
(0.0, 0.0)
не определил бы смещения для пиксельных данных тогда как значение (0.5, 0.5)
определил бы смещение половины размера исходного изображения.
Отметьте, что отображение является смещением от целевого пикселя до исходного пиксельного расположения, от которого это выбирается, что означает что, заполняя карту всеми значениями 0.5
переместил бы изображение половиной его размера к верхнему левому, так как каждый целевой пиксель будет содержать данные, которые прибывают из исходного пикселя ниже и направо от этого.
Также отметьте, что этот эффект не корректирует координаты входных событий или любых методов, которые измеряют включение на a Node
. Результаты выбора мыши и методов включения неопределены когда a Node
имеет a DisplacementMap
произведите на месте.
код:
import java.lang.Math;
import javafx.scene.*;
import javafx.scene.text.*;
import javafx.scene.shape.*;
import javafx.scene.paint.*;
import javafx.scene.effect.*;
var w = 220;
var h = 100;
var map = FloatMap { width: w height: h }
for (i:Integer in [0..w-1]) {
var v = (Math.sin(i/50.0*Math.PI)-0.5)/40.0;
for (j:Integer in [0..h-1]) {
map.setSamples(i, j, 0.0, v);
}
}
Group {
effect: DisplacementMap { mapData: map }
cache: true
content: [
Rectangle {
x: 20 y: 20
width: w
height: h
fill: Color.BLUE
},
Text {
x: 40 y: 80
content: "Wavy Text"
fill: Color.YELLOW
font: Font.font(null, FontWeight.BOLD, 36);
},
]
}
производит:
Профиль: общий условный эффект
Переменная Сводка
доступ | имя | ввести | Может Читать | Может Init | Может Записать | Значение по умолчанию | описание |
---|---|---|---|---|---|---|---|
общественность | ввод | Эффект | нуль |
Ввод для этого Ввод для этого |
|||
общественность | mapData | FloatMap | пустая карта |
Данные карты для этого |
|||
общественность | offsetX | Число | 0.0 |
Смещение, которым все x координируют значения смещения в Смещение, которым все x координируют значения смещения в Min: n/a Max: n/a Default: 0.0 Identity: 0.00.0 |
|||
общественность | offsetY | Число | 0.0 |
Смещение, которым все y координируют значения смещения в Смещение, которым все y координируют значения смещения в Min: n/a Max: n/a Default: 0.0 Identity: 0.00.0 |
|||
общественность | scaleX | Число | 1.0 |
Масштабный коэффициент, которым все x координируют значения смещения в Масштабный коэффициент, которым все x координируют значения смещения в Min: n/a Max: n/a Default: 1.0 Identity: 1.01.0 |
|||
общественность | scaleY | Число | 1.0 |
Масштабный коэффициент, которым все y координируют значения смещения в Масштабный коэффициент, которым все y координируют значения смещения в Min: n/a Max: n/a Default: 1.0 Identity: 1.01.0 |
|||
общественность | обертка | Булев | ложь |
Определяет, повторяются ли значения, принятые снаружи краев карты "," или нет. Определяет, повторяются ли значения, принятые снаружи краев карты "," или нет. Min: n/a Max: n/a Default: false Identity: n/aложь |