Your comments

Textures are assigned to materials (or sides for simplicity). For standard shapes like books or boxes sides are pre-defined. For custom shapes like lathe or loft you can manually define sides. This is done in curve editor, so if you want to get rid of extra material in the bottle structure, you need to select that part in the curve editor and re-assign a different (bottle) material to that fragment. You probably did exactly that, but anyway here is the tutorial that explains this in details:

Hello Sherry,

Have a look at Imposition Wizard 3.0 beta we recently released: - you should like the new layout much more.

Your feedback is very welcome :)

This is a long-requested feature and it is in plans. I'll keep it here for others to upvote.

Try specularMap instead of diffuseMap in the code below, so instead of:

 layer.diffuseMap = image;

you get:

 layer.specularMap = image;

You can then make a similar function linkFilepickerToSpecularMap() that works with specular masks. Overall, all the methods and properties are listed here:

Looks like I missed one detail, please modify the code this way:

function onLoadEnd(event) {

basically, you just need to add event keyword to the function parameters list. After that I can load both front and back images in your HTML page.

You use OpenGL preview which is fast, but not 100% precise. I would switch to raytracing preview mode, so you see exactly what you get after rendering. There is a button in toolbar for that, so it is really convenient to switch between preview modes.

As for the dark glass I would recommend starting here: especially the medium color section. Then you can read this: for better understanding of how lighting and materials work in Boxshot 5.

Let me know if you need any further help after these two tutorials.

The new version uses path tracing which provides more realistic results, but runs slower. We've got "Good enough" button that helps to break the rendering if the quality is already acceptable. We also have some parameters in settings that let you control the number of rendering passes being used by default. Adjusting them could also help.

You can add a special function that links file picker and material like this:

function linkFilepickerToMaterial(fp, koru, mtl) {
    var filePicker = document.getElementById(fp);
    if (!filePicker) return; // no such filepicker
    filePicker.onchange = function(event) {
        var image = new Image();
        image.onload = function() {
            var material = koru.materials[mtl];
            if (!material) return; // no material
            if (material.layers.length == 0) return; // no layers
            var layer = material.layers[0];
            layer.diffuseMap = image;
        image.src = URL.createObjectURL([0]);

Just put this right before function onLoadEnd() in your code above. Then you can re-write onLoadEnd() this way:

function onLoadEnd(event) {
    linkFilepickerToMaterial("file-picker1", event.koru, "Material 1");
    linkFilepickerToMaterial("file-picker2", event.koru, "Material 2");

I didn't test this in real environment, so typos are possible, but the overall idea should be clear enough.

Let me know if it helps.

Hello Jagannadh,

You simply drag and drop them into the scene. If you have Boxshot 4, you need to keep a copy of the external model next to the project. In Boxshot 5 we store everything inside the project, so the original model file is not needed.

Let me know if you need any further help.