Для работы с растровыми изображениями необходимо создать экземпляр
Two, который отвечает за рендеринг графики. Основные
параметры при инициализации:
const elem = document.getElementById('draw-shapes');
const two = new Two({
width: 800,
height: 600,
type: Two.Types.canvas // Возможны варианты 'webgl' или 'svg'
}).appendTo(elem);
width и height задают размеры холста.type определяет рендерер. canvas подходит
для большинства случаев, webgl обеспечивает аппаратное
ускорение, svg — для масштабируемой векторной графики.После создания экземпляра Two.js сцена готова к добавлению объектов.
Для отображения изображений используется объект
Two.Texture. Этот объект инкапсулирует изображение и может
быть применен к фигурам.
const texture = new Two.Texture('images/example.png', function() {
console.log('Изображение загружено');
});
Two.js также поддерживает прямое создание изображений через объект
Two.Image, который комбинирует фигуру и текстуру.
После загрузки текстуры можно создать объект Two.Image и
добавить его на сцену:
const img = two.makeImage(texture, 400, 300, 200, 150);
Two.Image наследует методы трансформации от
Two.Shape: можно изменять позицию, масштаб, поворот.Пример применения трансформации:
img.rotation = Math.PI / 4; // Поворот на 45 градусов
img.scale = 1.5; // Масштабирование на 150%
Для корректного отображения важно проверять готовность текстуры:
if (texture.loaded) {
const img = two.makeImage(texture, 100, 100);
} else {
texture.once('load', function() {
const img = two.makeImage(texture, 100, 100);
});
}
loaded возвращает true, если
изображение уже загружено.'load' позволяет отложить создание объекта до
момента полной готовности текстуры.Two.js поддерживает анимацию объектов через метод bind и
встроенный цикл рендера:
two.bind('upd ate', function(frameCount, timeDelta) {
img.rotation += 0.01; // Постепенный поворот
}).play();
update вызывается на каждом кадре.frameCount — номер кадра, timeDelta —
время между кадрами.update позволяет
создавать плавную анимацию.Растровые изображения можно комбинировать с прозрачностью и фильтрами:
img.opacity = 0.5; // Полупрозрачное изображение
img.fill = '#ffffff'; // Цвет фона (при необходимости)
Two.js не поддерживает сложные WebGL-фильтры напрямую, но прозрачность и наложение цветов позволяют создавать базовые визуальные эффекты.
Для адаптации изображений к размеру холста используют свойства
scale и позиционирование через координаты центра
изображения:
img.translation.se t(two.width / 2, two.height / 2);
img.scale = Math.min(two.width / img.width, two.height / img.height);
translation задаёт позицию центра изображения.scale позволяет масштабировать изображение
пропорционально размерам холста без искажения.PNG, JPEG) в
зависимости от потребности в прозрачности.Two.Image одновременно, особенно с высокоразрешёнными
текстурами, чтобы не перегружать рендерер.Изображения можно комбинировать с фигурами, линиями и группами:
const group = two.makeGroup();
group.add(img);
group.add(two.makeRectangle(400, 300, 50, 50));
group.translation.set(0, 0);