Paper.js предоставляет мощный и гибкий механизм для работы с тенями
объектов через свойство shadow у элементов типа
Path, Shape, Raster и
Group. Тени создаются автоматически на основе настроек
смещения, размытия и цвета, что позволяет добиваться реалистичных
визуальных эффектов.
shadowКаждый объект, поддерживающий тени, имеет свойство
shadow, которое представляет собой объект с набором
ключевых параметров:
color – цвет тени. Поддерживаются
стандартные CSS-цвета, включая rgba. Например:path.shadowColor = new Color(0, 0, 0, 0.5); // полупрозрачная черная тень
blur – степень размытия тени, задается
числом в пикселях. Чем выше значение, тем мягче границы тени.path.shadowBlur = 12;
offset – смещение тени относительно
объекта. Представлено объектом Point:path.shadowOffset = new Point(10, 10);
opacity – непрозрачность тени. Влияет
на прозрачность всей тени, независимо от цвета:path.shadowOpacity = 0.6;
Эти параметры можно комбинировать, создавая сложные эффекты теней.
Path)var path = new Path.Circle({
center: [100, 100],
radius: 50,
fillColor: 'red'
});
path.shadowColor = 'black';
path.shadowBlur = 15;
path.shadowOffset = new Point(8, 8);
path.shadowOpacity = 0.7;
Тень будет следовать форме круга, создавая объемный эффект.
Shape)var rectangle = new Shape.Rectangle({
point: [200, 50],
size: [120, 80],
fillColor: 'blue'
});
rectangle.shadowColor = 'rgba(0,0,0,0.4)';
rectangle.shadowBlur = 10;
rectangle.shadowOffset = new Point(5, 5);
Фигуры со сложной геометрией также принимают тень по форме своего контура.
Raster)var raster = new Raster('image.png');
raster.position = view.center;
raster.shadowColor = 'rgba(0,0,0,0.5)';
raster.shadowBlur = 20;
raster.shadowOffset = new Point(15, 15);
Тень добавляет глубину изображению и может имитировать естественное освещение.
Group)var group = new Group([path, rectangle]);
group.shadowColor = 'black';
group.shadowBlur = 12;
group.shadowOffset = new Point(10, 10);
Тень применяется ко всей группе как к единому объекту, что удобно для сложных композиций.
Тени можно анимировать, изменяя их свойства в цикле или через обработчики событий:
function onFrame(event) {
path.shadowOffset = new Point(Math.sin(event.time * 2) * 20, 10);
path.shadowBlur = 10 + 5 * Math.sin(event.time * 3);
}
Так можно создавать эффекты движения света или имитацию солнечного освещения.
shadowBlur с низкой opacity.shadowOffset динамически в зависимости от положения
виртуального источника света.BlendMode: тени можно
накладывать через blendMode для создания сложных визуальных
эффектов при пересечении объектов.shadowBlur и
сложных групп объектов может сильно нагружать рендер.Raster и добавлять тень к изображению.Тени в Paper.js позволяют добавлять глубину, объем и реализм
визуальным элементам. Управление параметрами color,
blur, offset и opacity
обеспечивает полный контроль над внешним видом, а динамическая анимация
тени открывает широкие возможности для интерактивных сцен.