Guide

Positions, anchors and layouts

An anchor is a named point in a model, usually an empty, where a part is placed. With anchors you can mount a part from its own file where it belongs, move it when a choice changes, and repeat one model several times: four table legs from one leg file, for example.

In a 2D configurator, a part that moves with another choice needs its own set of images, picked by conditional logic. In 3D you move the part instead.

There are three tools, one per need:

You want to…ExampleUse
Mount a part from its own file where it belongshandlebars on the frame, a crate on a rackThe model's Position: On an anchor
Move a part when an option changeshandlebars higher on a bigger frameThe choice action Move to anchor
Repeat identical copies, arranged differently per option4 legs on a rectangular top, 3 on a round oneA Layout, the model's Position: On a layout, and the choice action Switch layout variant

Layers have no placement settings. Where things sit is set on 3D Objects, and what a selection changes is set in the choice's actions.

Preparing the model

Do this in your 3D software before exporting.

  • Add an empty wherever something attaches. In Blender, Add > Empty > Plain Axes. Give it a clear name. Empties with "anchor" in their name are listed first when you pick one, so a name like anchor_rack_l is easiest to find. Empties are exported to glTF as ordinary objects.
  • Put each part's origin at its attachment point. A part is placed by its origin: the handlebars' origin lands on the empty. If the origin is at the centre of the grips instead of the stem clamp, the handlebars mount off-centre.
  • Export a part as one object, or parent its pieces to one empty. When a whole file is placed, its single top-level object's origin is what lands on the anchor, wherever that object stood in your scene. You don't need to move the part to the world origin before exporting. If a file has several top-level objects, the file's own origin (0,0,0) is used instead.
  • Rotate the empty, not the part. A part keeps the orientation it was modelled with, and the empty's rotation is added on top. An unrotated empty changes nothing.
  • Don't scale empties to make them easier to see. Use the empty's Size display setting. The anchor's scale is ignored unless you turn on Take the anchor's scale.
  • Attach things to what they physically sit on. Put crate anchors on the racks, not on the frame. Then when a frame size moves the racks, the crates follow, and nothing else needs moving.

Placing a model on an anchor

In 3D Objects, open the model and set Position to On an anchor.

  1. Under Anchor, click Select from list. The empties of every model are listed, grouped by model, with "anchor" empties first. Tick Show all objects to pick any other object.
  2. Leave Take the anchor's rotation on, unless the part must keep its own orientation whatever it is mounted on.
  3. Leave Take the anchor's scale off, unless you want the anchor to resize the part. A negative scale on the anchor mirrors the part, so one left-side part can serve for the right.

Position: As modelled, the default, leaves the model where it was modelled.

Moving something when a choice is selected

Add the Move to anchor action in a choice's 3D actions.

  • Object to move: by default, this choice's object. That is the choice's Object in the model, else its layer's, else the whole model. The field shows what that resolves to. Select from list picks any object, or a Whole model entry at the top of each model's group.
  • Anchor: where it goes while the choice is selected.
  • Take the anchor's rotation / scale: as above.

When the choice is deselected, or hidden by conditional logic, the object goes back to where it was: its model's position, or where it was modelled.

For a cargo bike with sizes S, L and XL, the handlebars, box and racks are on an anchor (the size S ones). The L choice of the Frame size layer then has one Move to anchor per part: handlebars to anchor_handlebars_l, box to anchor_box_l, rack to anchor_rack_l.

Repeated copies: layouts

A Layout is its own 3D Object: a list of variants, each a set of anchors. Every model placed on the layout gets one copy per anchor of the layout's current variant.

  1. Add 3D item > Layout, and name it (for example Table legs).
  2. Give each variant a name and its anchors with Select from list. Use Add variant for more:
    VariantAnchors
    Rectangular (default)rect_leg_1 … rect_leg_4
    Roundround_leg_1 … round_leg_3
    Wall-mounted(none)
    The first variant is the default. The number of anchors can differ: three anchors give three legs. A variant with no anchors hides everything on the layout.
  3. On each model that should repeat, set Position to On a layout and pick the layout.
  4. On the choices that change the arrangement, add Switch layout variant and pick the layout and the variant.

A table with a Table shape layer and a Leg type layer is set up like this:

  • 3D Objects: the table tops (as modelled), the layout Table legs, and one model per leg type (Oak leg, Steel leg…), each On a layout → Table legs, and loaded lazily so a leg model downloads only when it is chosen.
  • Table shape, each choice: Display object for its top, and Switch layout variant → Table legs → that shape.
  • Leg type, each choice: Display object for its leg model.

Adding a leg type is one model and one choice; the shape choices don't change. The layout remembers its current variant, so the result is the same whichever the customer picks first.

A shape choice must switch the top and the variant: legs on the empties of a hidden top are hidden with it.

Copies on a layout are identical and interchangeable. Hiding the model, or changing its material, applies to every copy. Something that must stay attached to one particular leg, like a hotspot, belongs on an anchor or on the top instead.

The same model in several independent places

For a front crate and a rear crate that the customer picks separately, add the crate model twice in 3D Objects, for example Crate front and Crate rear. Use the same file for both and give each its own anchor. Each is then its own object, shown by its own choice.

The file is downloaded once, however many 3D Objects use it. With Loading: Lazy, nothing downloads until a crate is picked, and the second crate appears at once. A Crate colour option recolours both, because they share materials.

When several choices move the same object

  • Anything a selected choice asks for beats the model's own position.
  • Between choices, the one on the later layer wins, the same way a later layer's image is stacked on top in 2D.

Deselecting the winning choice hands the object to the next one in line. The same rule decides between two choices that switch the same layout to different variants.

When a position really depends on a combination, for example frame size and box type, make a hidden layer whose choices carry the actions, and use conditional logic to select the right one.

Things to know

  • A placed part moves with its anchor. It is attached to the empty, so if the frame is hidden, the handlebars on it are hidden too.
  • Save object ids with their model. Pick objects with Select from list rather than typing names. The list saves them together with their model, so two models that both contain a "Seat" stay apart. This matters as soon as two 3D Objects share a file.
  • Rigged (skinned) models can't be repeated on a layout: they go on the variant's first anchor only. Two 3D Objects sharing a rigged file do work.
  • Don't move an object that has its own animation. Move the group that contains it instead: the group moves, and the animated object inside keeps playing normally.
  • The admin 3D preview shows each model at its Position, with layouts on their default variant. It does not apply choices, and models set to lazy loading are not shown there.

If something looks wrong

  • The part sits off to one side of the anchor, or above it: its origin is not at the attachment point, or the file has several top-level objects and the file's origin is used. Set the origin in your 3D software, parent the pieces to one object, and re-export.
  • The part is tilted or sized unexpectedly: check the empty's rotation and scale, and the two Take the anchor's… settings.
  • The part stays where it was modelled: the anchor may have been renamed or removed in a re-export. The browser console names the missing anchor. Select it again.
  • Copies on a layout are missing: the variant's anchors can't be found (same cause as above), or the variant has none. A model on a layout is hidden rather than shown where it was modelled.
  • A choice no longer switches the layout: its variant was deleted. The action shows Select a variant. Pick one again.
  • The part disappears: it is on an anchor of a hidden model, for example the empty of a frame size that is not selected.