Скриптинг Объектов Сцены

В Boxshot есть много встроенных объектов, у каждого из них есть собственный API для настройки свойств. Вы используете этот API, когда редактируете объекты в интерфейсе, но то же самое можно сделать и через Javascript. Нажмите по ссылкам ниже, чтобы перейти к нужному объекту:


 

Папки

Вот как создать папку:

var m = scene.root.addMesh("angle-d", "generator.Binders.AngleD");
var g = m.generator;
g.width = 10;
g.height = 5;
g.coverAngle = 10;
g.fitToImages();

Другие папки создаются так же (все остальные параметры те же):

var m1 = scene.root.addMesh("comb", "generator.Binders.Comb");
var m2 = scene.root.addMesh("wire", "generator.Binders.Wire");
var m3 = scene.root.addMesh("coil", "generator.Binders.Coil");

m1.generator.thickness = 5;


 

Коробка Blu-ray

Объект Blu-ray Box имеет фиксированные размеры и не может быть масштабирован. Используйте следующие размеры текстур:

Вот как можно создать объект Blu-ray Box и настроить его свойства:

var m = scene.root.addMesh("blu-ray", "generator.DiscBox.BluRay");
var g = m.generator;
g.coverAngle = 0.5;
g.showDisc = false;
g.showCover = false;
g.showInsert = false;
g.solidCoverImage = false; // не заворачивать изображение обложки


 

Книги

Вот как создать объект книги в твердом переплете в скриптинге Boxshot:

var m = scene.root.addMesh("book", "generator.book2.HardCover");
// var m = scene.root.addMesh("book", "generator.book2.HardCoverSpread"); // используйте этот вариант для разворота в твердом переплете
var g = m.generator;

// размеры
g.width = 10; // cm
g.height = 20; // cm
g.thickness = 1; // cm
g.fitToImages(); // или используйте это
g.wrapCover = true;

// пресеты
// для стоящей книги используйте один из: closed, open-a-bit-front, open-a-bit
// для разворота используйте один из: spread-middle, spread-first-page, spread-beginning, spread-end
// g.preset = "closed"; 

// обложка
g.coverThickness = 0.2;
g.coverRadius = 1;
g.jointWidth = 0.1;
g.jointDepth = 0.2;
g.wrappedArtwork = 0.001;

// суперобложка
g.showDustJacket = true;
g.dustJacketWidth = 100;
g.dustJacketThickness = 0.01;
g.wrapArtworkToDustJacketEdge = true;

// листы
g.leavesCoverGap = 0;
g.leavesPerCm = 100;
g.complexLeaves = true;
g.leavesOffsetH = 0.1;
g.leavesOffsetV = 0.2;
g.leavesLengthAdjustment = 0;

// каптал
g.headbandAdjustment = 0;
g.headbandThickness = 0.1;
g.headbandHeight = 1;
g.headbandEdgeRadius = 0.1;
g.headbandPadding = 0;

// прочее
g.lod = 1.0;

Похожий пример скрипта для объекта книги в мягкой обложке:

var m = scene.root.addMesh("book", "generator.book2.Paperback");
// var m = scene.root.addMesh("book", "generator.book2.PaperbackSpread"); // используйте этот вариант для разворота в мягкой обложке
var g = m.generator;

// размеры книги в мягкой обложке
g.width = 10;
g.height = 20;
g.thickness = 1;
g.fitToImages();
g.wrapCover = true;

// пресет
// для стоящей книги в мягкой обложке используйте: closed, open-a-bit-front, open-a-bit, open-flat-sides, open-middle
// для разворотов в мягкой обложке используйте: spread-middle, spread-first-page, spread-beginning, spread-end
// g.preset = "closed";

// обложка
g.coverThickness = 0.1;
g.wrapArtworkToCoverEdge = true;

// листы
g.leavesPerCm = 100;
g.complexLeaves = true;
g.leavesOffsetH = 0.1;
g.leavesOffsetV = 0.01;
g.leavesAdjustment = 0;

// прочее
g.lod = 1.0;

И наконец пример скрипта для журналов:

var m = scene.root.addMesh("magazine", "generator.book2.Magazine");
// var m = scene.root.addMesh("magazine", "generator.book2.MagazineSpread"); // используйте этот вариант для разворота журнала
var g = m.generator;

// размеры журнала
g.width = 10;
g.height = 15;
g.thickness = 0.5;
g.fitToImages();
g.wrapCover = true;

// пресет
// для стоящего журнала используйте: closed, open-a-bit-front
// для разворотов журнала используйте: spread-middle, spread-beginning, spread-end
// g.preset = "closed";

// обложка
g.coverThickness = 0.2;
g.wrapArtworkToCoverEdge = true;

// листы
g.leavesPerCm = 100;
g.complexLeaves = true;
g.leavesOffsetH = 0.1;
g.leavesOffsetV = 0.2;

// прочее
g.lod = 1.0;


 

Буклет на полу

Вот пример скрипта, который создает объект буклета на полу:

var m = scene.root.addMesh("booklet", "generator.Stationery.BookletOnTheFloor");
var g = m.generator;
g.width = 10;
g.height = 5;
g.extrude = 0.1;
g.threePages = true;
g.flipped = false;

Вот как загрузить изображение и автоматически подогнать размеры объекта:

var m = scene.root.addMesh("booklet", "generator.Stationery.BookletOnTheFloor");
var g = m.generator;
m.material("Front").diffuseSlot.filename = "/path/to/image.jpg";
g.fitToImages();


 

Буклет

Вот пример скрипта, который создает объект буклета:

var m = scene.root.addMesh("booklet", "generator.Stationery.Booklet");
var g = m.generator;
g.width = 10;
g.height = 5;
g.frames = 3;
g.angle1 = -60;
g.angle2 = -60;

Углы управляются переменными angle1angle8.

Вот как загрузить изображение и автоматически подогнать размеры объекта:

var m = scene.root.addMesh("booklet", "generator.Stationery.Booklet");
var g = m.generator;
m.material("Front").diffuseSlot.filename = "/path/to/image.jpg";
g.fitToImages();


 

Холст

Вот как можно создать объект холста с помощью скрипта:

var m = scene.root.addMesh("canvas", "generator.canvas.simple");
var g = m.generator;
g.width = 50;
g.height = 20;
g.thickness = 2;
g.radius = 0.1;

Вот как автоматически подогнать под изображение:

var m = scene.root.addMesh("canvas", "generator.canvas.simple");
var g = m.generator;
m.material("Image").diffuseSlot.filename = "/path/to/image.jpg";
g.fitToImages();


 

Крышки

Вот пример скрипта, который создает объект крышки:

var m = scene.root.addMesh("cap", "generator.pharma.cap");
var g = m.generator;
g.neckDiameter = 10;
g.capHeight = 20;
g.capType = "beer"; // используйте те же значения, что вы видите в интерфейсе


 

Стакан для кофе

Вот как можно создать объект стакана для кофе с помощью скрипта:

var m = scene.root.addMesh("tall", "generator.mugs.CoffeeCup");
var g = m.generator;
g.diameter = 9;
g.empty = true;
g.showLid = false;
g.height = 13;

Вот как автоматически подогнать под изображение:

var m = scene.root.addMesh("custom coffee", "generator.mugs.CoffeeCup");
var g = m.generator;
m.material("Body").diffuseSlot.filename = "/path/to/image.jpg";
g.fitToImages();


 

Компакт-диск

Вот как можно создать объект компакт-диска:

var m = scene.root.addMesh("disc", "generator.DiscBox.Disc");


 

Цилиндр

Вот пример скрипта, который создает объект цилиндра:

var m = scene.root.addMesh("cylinder", "generator.simple.cylinder");
var g = m.generator;
g.height = 10;
g.radius = 5;
g.segments = 16;
g.topCurve = 0.3;
g.bottomCurve = 0;
g.fitToImages();


 

Устройства

Вот как создавать объекты устройств в Boxshot с помощью Javascript:

var m1 = scene.root.addMesh("Mobile Phone", "generator.Devices.Mobile");
var m2 = scene.root.addMesh("Tablet", "generator.Devices.Tablet");
var m3 = scene.root.addMesh("Monitor", "generator.Devices.Monitor");


 

Коробка Digipak DVD

Объекты Digipak имеют фиксированные размеры и не могут быть масштабированы. Используйте следующие размеры текстур для DVD-коробки:

А для CD-коробки:

Вот как можно создать объект Digipak DVD Box и настроить его свойства:

var m = scene.root.addMesh("digipak dvd", "generator.DiscBox.DigipakDVD");
var g = m.generator;
g.coverAngle = 0.5;
g.showDisc = false;
g.solidCoverImage = true; // заворачивать изображение обложки

Чтобы создать Digipak CD Box, используйте следующий код:

var m = scene.root.addMesh("digipak cd", "generator.DiscBox.DigipakCD");
var g = m.generator;
g.coverAngle = 0.5;
g.showDisc = false;
g.solidCoverImage = false; // не заворачивать изображение обложки


 

Экструзия

Вот как можно создать и настроить объект экструзии с помощью скриптинга Boxshot:

var m = scene.root.addMesh("extruded", "generator.extrude");
var g = m.generator;
g.thickness = 3; // глубина 3cm
g.smoothness = 0.5; // 50%
g.upz = true; // 'true' -- смотреть вверх, 'false' -- смотреть вперед
g.bevelSize = 0.2; // cm
g.bevelSteps = 0;
g.bevelSmooth = false;

Вот как загрузить пользовательский SVG-файл в объект Extrude:

g.loadSVG("/path/to/file.svg");


 

Гибкие пакеты

Вот как создать пакет с фальцем из скрипта:

var m = scene.root.addMesh("gusseted", "generator.flexible.GussetedBag");
var g = m.generator;
g.width = 15;
g.height = 20;
g.thickness = 0.5;
g.topSeal = 1;
g.bottomSeal = 1;
g.backSeal = 2;
g.flipBackSeal = false;
g.centerBackSeal = false;
g.asymmetry = 0.2;
g.deformation = 0.1;
g.volume = 0.4;
g.seed = 12345;
g.fitToImages();

То же самое для пакета саше:

var m = scene.root.addMesh("sachet", "generator.flexible.SachetBag");
var g = m.generator;
g.width = 10;
g.height = 15;
g.topSeal = 1;
g.bottomSeal = 1;
g.sideSeal = 1;
g.asymmetry = 0.2;
g.deformation = 0;
g.volume = 0.6;
g.seed = 111;
g.fitToImages();

Пакет-подушка:

var m = scene.root.addMesh("pillow", "generator.flexible.PillowBag");
var g = m.generator;
g.width = 10;
g.height = 15;
g.topSeal = 1;
g.bottomSeal = 1;
g.backSeal = 2;
g.flipBackSeal = false;
g.centerBackSeal = true;
g.asymmetry = 0.2;
g.deformation = 0.3;
g.volume = 0.1;
g.seed = 4432;
g.fitToImages();

И наконец дой-пак:

var m = scene.root.addMesh("doy", "generator.flexible.Doypack");
var g = m.generator;
g.width = 10;
g.height = 15;
g.topSeal = 1;
g.sideSeal = 1;
g.asymmetry = 0.2;
g.deformation = 0.3;
g.volume = 0.4;
g.seed = 4432;
g.fitToImages();


 

Стопки изображений

Вот как создать простую стопку:

var m = scene.root.addMesh("stack1", "generator.Images.Stack");
var g = m.generator;
g.width = 10;
g.length = 5;
g.thickness = 0.03;
g.corner = 0.02;
g.border = 0;
g.space = 0.01;
g.disorder = 0.2;
g.twist = 0.1;
g.numberOfImages = 20;
m.material("Image").diffuseSlot.filename = "/path/to/image.png";
g.fitToImages();

Объект “Stack + 1” создается так же, вот отличие:

var m = scene.root.addMesh("stack2", "generator.Images.StackPlus1");
var g = m.generator;
// та же инициализация
g.imageDistance = 0.5;

И наконец стопка веером создается так:

var m = scene.root.addMesh("stack3", "generator.Images.Fan");
var g = m.generator;
// та же инициализация
g.spread = 0.5;


 

Изображение

Вот пример скрипта, который создает объект “изображение”:

var m = scene.root.addMesh("image", "generator.Images.Image");
var g = m.generator;
g.width = 10;
g.length = 5;
g.thickness = 0.03;
g.corner = 0.02;
g.border = 0;
g.bend = 0.5;
m.material("Image").diffuseSlot.filename = "/path/to/image.png";
g.fitToImages();


 

Этикетки

Вот как сделать коническую этикетку с помощью скриптинга Boxshot:

var m = scene.root.addMesh("label", "generator.pos.ConicalLabel");
var g = m.generator;
g.width = 20;
g.height = 10;
g.topDiameter = 10;
g.bottomDiameter = 9;
g.segments = 64;
g.offsetX = 0;
g.offsetY = 0;

Вот пример скрипта, который создает прямую этикетку:

var m = scene.root.addMesh("label", "generator.pos.Label");
var g = m.generator;
g.width = 20;
g.height = 10;
g.diameter = 10;
g.segments = 64;
g.scale = 1;
g.fitToImages();


 

Тело вращения

Вот скрипт для создания тела вращения:

var m = scene.root.addMesh("lathe", "generator.lathe");
var g = m.generator;

g.segments = 64;
g.smoothness = 0.8;

g.topCap = true;
g.bottomCap = false;
g.automaticAlignment = false;
g.generateBackfaces = false;
g.flipNormals = true;
g.flipTextureMapping = true;
g.hardVerticalEdges = false;
g.hardHorizontalEdges = true;

g.startAngle = 10;
g.endAngle = 90;
g.caps = true;

Вот как загрузить SVG-файл в объект Lathe:

g.loadSVG("/path/to/file.svg");


 

Лофт

Объекты Лофт слишком сложны для скриптинга, поэтому все, чем можно управлять — это уровень детализации:

var m = scene.root.addMesh("loft", "generator.loft");
var g = m.generator;
g.lod = 0.8;

Остальное лучше делать в окне редактора лофта.


 

Палета

Вот как создать объект палеты с помощью скриптинга Boxshot:

var m = scene.root.addMesh("bucket", "generator.pos.Pallet");
var g = m.generator;

g.palletType = "eur6"; // используйте: eur, eur2, eur3, eur6, us_40x48, us_44x44, us_48x40


 

Бумажный пакет

Вот пример скрипта, который создает объект бумажного пакета:

var m = scene.root.addMesh("paper bag", "generator.Bags.Paper");
var g = m.generator;
g.width = 10;
g.height = 20;
g.thickness = 5;
g.spread = 0.3;
g.bagType = "handles-up"; // используйте paper-handles, handles-up, handles-down, square-holes, round-holes, no-holes
g.fitToImages();


 

Фармацевтический флакон

Вот как создать и настроить объект фармацевтического флакона:

var m = scene.root.addMesh("bottle", "generator.pharma.Bottle");
var g = m.generator;
g.diameter = 10;
g.height = 20;
g.labelHeight = 5;
g.topHeight = 2;
g.showLabel = true;
g.replaceGlassWithLabel = true;
g.showLiquid = true;
g.liquidLevel = 3;

g.capType = "plastic-1";
g.capHeight = 0.7;
g.neckDiameter = 4;

g.neckCurve = 0.2;
g.topCurve = 0.5;
g.bottomCurve = 0.9;

g.fitToImages();


 

Фармацевтическая банка для крема

Вот как создать объект “Pharma creme jar”:

var m = scene.root.addMesh("creme jar", "generator.pharma.CremeJar");
var g = m.generator;
g.diameter = 10;
g.height = 20;
g.labelHeight = 5;

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


 

Фармацевтическая таблетка

Вот как создать 3d-объект фармацевтической таблетки с помощью скриптинга:

var m = scene.root.addMesh("pill", "generator.pharma.Pill");
var g = m.generator;
g.pillType = "Capsule"; // используйте те же названия, что и в интерфейсе


 

Фармацевтический блистер

Вот как создать 3d-объект блистера с таблетками с помощью скриптинга:

var m = scene.root.addMesh("blister pack", "generator.pharma.Pills");
var g = m.generator;

g.pillType = "Capsule 35"; // используйте те же названия, что и в интерфейсе
g.rows = 2;
g.columns = 3;
g.randomize = true;
g.seed = 123;

g.pillSize = 1.2;
g.gap = 2.2;
g.rowGap = 2.1;
g.cornerRadius = 0.2;

g.tileFront = true;
g.tileBack = false;
g.bend1 = -1;
g.bend2 = 0.5;

g.fitToImages();


 

Фармацевтический тюбик

Вот как создать 3d-объект тюбика (например, зубной пасты) из скрипта:

var m = scene.root.addMesh("gusseted", "generator.pharma.Tube");
var g = m.generator;

g.length = 15;
g.diameter = 3;
g.bottomLength = 0.7;
g.headHeight = 0.2;
g.volume = 0.7;

g.capType = "flip-top-small-open";
g.capHeight = 1.4;
g.neckDiameter = 0.8;
g.neckLength = 0.3;

g.fitToImages();


 

Плоскость

Вот пример скрипта, который создает объект плоскости:

var m = scene.root.addMesh("plane", "generator.simple.plane");
var g = m.generator;
g.width = 10;
g.length = 5;
g.fitToImages();


 

Пластиковое ведро

Вот как создать пластиковое ведро с помощью скриптинга Boxshot:

var m = scene.root.addMesh("bucket", "generator.pos.Bucket");
var g = m.generator;

g.bucketType = "bucket-1"; // используйте bucket-1, bucket-2 или bucket-3

g.height = 25;
g.topSize = 20;
g.bottomSize = 17;

g.showLabel = true;
g.labelHeight = 10;

g.showLid = true;
g.showLidLabel = true;
g.lidLabelSize = 5;
g.lidLabelAngle = 30;

g.showHandle = true;
g.handleAngle = 90;

g.fitToImages();


 

Пластиковая DVD-коробка

Объект DVD Box имеет фиксированные размеры и не может быть масштабирован. Используйте следующие размеры текстур:

Вот как можно создать объект Plastic DVD Box и настроить его свойства:

var m = scene.root.addMesh("dvd", "generator.DiscBox.DVD");
var g = m.generator;
g.coverAngle = 0.5;
g.showDisc = false;
g.showCover = false;
g.showInsert = false;
g.solidCoverImage = false; // не заворачивать изображение обложки


 

Тонкая CD-коробка

Объект Slim CD Box имеет фиксированные размеры и не может быть масштабирован. Используйте следующие размеры текстур:

Вот как можно создать объект Slim CD Box и настроить его свойства:

var m = scene.root.addMesh("slim cd", "generator.DiscBox.SlimCD");
var g = m.generator;
g.coverAngle = 0.5;
g.showDisc = false;
g.showTrayCard = false;
g.showInsert = false;
g.solidCoverImage = false; // используйте отдельные изображения для вкладыша и подложки трея


 

Банки газировки

Вот пример скрипта, который создает объект банки:

var m = scene.root.addMesh("can-330ml", "generator.cans.BeverageCanStandard330ml");
var g = m.generator;
g.size = 10;
g.height = 20;
g.fitToImages();

Чтобы создать банку 250ml, используйте следующую команду:

var m = scene.root.addMesh("can-250ml", "generator.cans.BeverageCanSlim250ml");


 

Коробки

Вот как создать и управлять простой коробкой:

var m = scene.root.addMesh("Software Box", "generator.Boxes.Box");
var g = m.generator;
g.width = 10;
g.height = 20;
g.length = 2;
g.radius = 0.1;
g.splitInside = true;
g.fitToImages();

Вот скрипт для скругленной коробки:

var m = scene.root.addMesh("Rounded Box", "generator.Boxes.RoundedBox");
var g = m.generator;
g.width = 10;
g.height = 20;
g.length = 2;
g.radiusV1 = 0.8;
g.radiusV2 = 0.7;
g.radiusV3 = 0.6;
g.radiusV4 = 0.5;
g.radiusTop = 0.3;
g.radiusBottom = 0.2;
g.splitInside = true;
g.fitToImages();

Выдвижные коробки устроены почти так же:

var m = scene.root.addMesh("Sliding Box", "generator.Boxes.SlidingBox");
var g = m.generator;
g.width = 10;
g.height = 20;
g.length = 2;
g.roundCorner = false;
g.innerBox = 0.2;
g.fitToImages();


 

Сфера

Вот пример скрипта, который создает объект сферы:

var m = scene.root.addMesh("sphere", "generator.simple.sphere");
var g = m.generator;
g.radius = 20;
g.lod = 3;
g.solid = false;
t.thickness = 1;


 

Коробка с ярлыком

Вот как создать объект коробки с ярлыком с помощью скрипта:

var m = scene.root.addMesh("tagged box", "generator.Boxes.TaggedBox");
var g = m.generator;
g.width = 10;
g.height = 20;
g.length = 2;
g.tagPosition = 0.5;
g.fitToImages();


 

Кружка для чая

Вот как можно создать объект кружки для чая с помощью скрипта:

var m = scene.root.addMesh("my mug", "generator.mugs.TeaMug");
var g = m.generator;
g.diameter = 10;
g.height = 20;
g.empty = true;

Вот как автоматически подогнать под изображение:

var m = scene.root.addMesh("my mug", "generator.mugs.TeaMug");
var g = m.generator;
m.material("Body").diffuseSlot.filename = "/path/to/image.jpg";
g.fitToImages();


 

3D-текст

Вот как можно создать и настроить объект 3D-текста с помощью скриптинга Boxshot:

var m = scene.root.addMesh("3d text", "generator.text3d");
var g = m.generator;
g.text = "hello, world";
g.height = 10; // высота 10cm
g.thickness = 3; // глубина 3cm
g.smoothness = 0.5; // 50%
g.upz = true; // 'true' -- смотреть вверх, 'false' -- смотреть вперед
g.font = "Arial";
g.align = "left"; // "left", "center" или "right"
g.bold = true;
g.italic = false;
g.underline = false;
g.bevelSize = 0.2; // cm
g.bevelSteps = 0;
g.bevelSmooth = false;


 

Торический узел

Вот пример скрипта, который создает торический узел:

var m = scene.root.addMesh("torus", "generator.simple.TorusKnot");
var g = m.generator;
g.size = 10;
g.amplitude = 5;
g.thickness = 3;
g.turns1 = 2;
g.turns2 = 3;
g.segments = 256;
g.sides = 32;


 

Тор

Вот пример скрипта, который создает объект “тор”:

var m = scene.root.addMesh("torus", "generator.simple.Torus");
var g = m.generator;
g.size = 30;
g.thickness = 5;
g.segments = 32;
g.sides = 16;


 

USB-флешка

Вот как создать объект USB-флешки с помощью скриптинга Boxshot:

var m = scene.root.addMesh("usb", "generator.Devices.USB");
var g = m.generator;

g.deviceType = "screw"; // используйте: twister, key, mini, wooden, waterproof, slider, screw, classic, ellipse, minitwister, halo, capsule, clip, rotator, card
g.phase = 0.2;
g.showBase = true;
g.showCap = false;
g.showRing = false;


 

Упаковка йогурта

Вот как создать объект упаковки йогурта из скрипта:

var m = scene.root.addMesh("pack", "generator.Dairy.YogurtPack");
var g = m.generator;
g.cupsInRow = 2;
g.numberOfRows = 3;

g.topWidth = 11;
g.topLength = 11;
g.topCurve = 0.3;
g.foilBump = 0.1;
g.solidCoverMapping = false;

g.cupWidth = 10;
g.cupLength = 10;
g.cupHeight = 15;
g.labelHeight = 10;
g.cupCurve = 0.8;
g.labelOffset = 0.3;

g.fitToImages();

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