Генерация изображения с произвольной 2D-композицией для замены текстуры на объекте

2D-композиция может содержать в себе несколько текстовых элементов и изображений с различными свойствами. Для того, чтобы создать композицию необходимо вызвать глобальную функцию createComposition, которая вернет объект композиции.

Для того, чтобы добавить в композицию изображение существует функция imageFromServerResource, которая принимает четыре параметра:

Для того, чтобы добавить в композицию текстовый элемент существует функция createText, которая возвращает объект текстового элемента, принимая 8 параметров:

Для того, чтобы добавить в композицию прямоугольник заданного цвета существует функция createColorRect, которая возвращает объект цветового прямоугольника, принимая 6 параметров:

Для того, чтобы добавить в композицию линию существует функция createLine, которая возвращает объект линии, принимая 7 параметров:

Для того, чтобы заменить текстуру на 3D-объекте необходимо вызвать метод 3D-объекта replaceByGeneratedTexture, который возвращает объект изображения, принимая 4 параметра:

Если какие-то элементы композиции выходят за границы генерируемой текстуры, они будут отсечены. Последовательность отрисовки 2D-элементов, а соответственно порядок наложения их друга на друга определяется порядком создания 2D-элементов. Композиция после замены текстуры удаляется и не может быть использована повторно.

var obj = scene.getObjectByName("uniq");
scene.img1986 = getServerResource("uo_lection_1.png");
obj.onPress = function()
{
  var c = createComposition();
  var txt = createText(5, 5, "Arial", true, true, true, "#FF0000", "MyText5", c);
  var txt2 = createText(5, 35, "Verdana", false, true, true, "#00FF00", "MyText2", c);
  var img = imageFromServerResource(30, 30, scene.img1986, c);
  this.replaceByGeneratedTexture(0, 256, 256, c);
}

У объекта изображения доступны для последующего изменения нижеперечисленные свойства:

У объекта изображения и у объекта текстового элемента есть функция getMediaSize(), которая задает объект, возвращающий реальные размеры исходного элемента, например, размер текста или исходный размер изображения.

var img = imageFromServerResource(30, 30, scene.img1986, c);
var width = img.getMediaSize().width;
var height = img.getMediaSize().height;