Запуск Скриптов из Командной Строки

Boxshot умеет запускать скрипты вообще без пользовательского интерфейса. Вы делаете текстовый файл, помещаете туда скрипт и передаете его Boxshot на обработку. Ниже — несколько простых примеров, которые можно использовать как отправную точку.

Рендеринг книги

Давайте сделаем скрипт, который создаст для нас книгу в твердой обложке:

var m = scene.root.addMesh("book", "generator.book2.HardCover");
var g = m.generator;

// предполагаем, что все файлы лежат рядом со скриптом, который мы делаем
m.material("Front").diffuseSlot.filename = "front.jpg";
m.material("Spine").diffuseSlot.filename = "spine.jpg";
m.material("Back").diffuseSlot.filename = "back.jpg";

// поворачиваем камеру
scene.camera.setAngles(55, 30);

// подгоняем объект под изображения
g.fitToImages();

// направляем камеру на книгу
var params = {
	padding : 0.1,
	keepAspect : false
};
tools.fitToView(params);

// рендерим сцену
var params = {"width": 800, "height": 600, "passes": 50};
scene.render("renderer.raytracer3", "result.png", params);

Сохраните этот скрипт в файл с именем book.boxshotJs, положите рядом со скриптом три изображения обложки, упомянутые выше, и откройте приложение терминала/консоли в этой папке. Затем выполните:

"C:\Program Files\Appsforlife\Boxshot 5\Boxshot.exe" --run book.boxshotJs

Пользователям Mac нужно выполнить:

/Applications/Boxshot\ 5.app/Contents/MacOS/Boxshot --run book.boxshotJs

После небольшого ожидания рядом со скриптом появится файл result.png с вашей книгой.

Рендеринг анимации вращения

В Boxshot есть более простой способ сделать это, но давайте напишем скрипт, который делает то же самое. Почему бы и нет?

Начнем так же — настроим сцену, а затем сделаем несколько рендеров, сохраняя результат в файлы с разными именами. Вот код:

// сначала настраиваем сцену
var m = scene.root.addMesh("book", "generator.book2.HardCover");
var g = m.generator;

// предполагаем, что все файлы лежат рядом со скриптом, который мы делаем
m.material("Front").diffuseSlot.filename = "front.jpg";
m.material("Spine").diffuseSlot.filename = "spine.jpg";
m.material("Back").diffuseSlot.filename = "back.jpg";

// поворачиваем камеру
scene.camera.setAngles(55, 30);

// подгоняем объект под изображения
g.fitToImages();

// направляем камеру на книгу
var params = {
	padding : 0.1,
	keepAspect : false
};
tools.fitToView(params);

// дальше мы будем вращать камеру вокруг объекта, сохраняя вертикальный угол и меняя горизонтальный

// параметры рендеринга всегда будут одинаковыми
var params = {"width": 800, "height": 600, "passes": 50};
var pitch = scene.camera.vangle;
var yaw = scene.camera.hangle;
var steps = 10;
var step = 360 / steps;

for (var i = 0; i < steps; i++) {
	// настраиваем камеру
	scene.camera.setAngles(yaw + i * step, pitch);

	// формируем имя файла
	var frame = (i < 10 ? "frame0" : "frame") + i + ".png";

	// рендерим сцену
	scene.render("renderer.raytracer3", frame, params);
}

Сохраните скрипт и запустите его так же, как и предыдущий. Через некоторое время вы получите 10 кадров анимации вращения книги.

Больше Информации о Скриптах