# Move Camera
With the moveCamera API you can animate the camera angle and position freely within the scene.
RoomleConfigurator.moveCamera({
yaw: -0.785,
pitch: 0,
distance: 1,
targetX: 0,
targetY: 0.5,
targetZ: 0,
blockOtherTweens: true,
});
For a full list and explanation of the parameters check the Camera Parameter Interface.
# Render image of current camera perspective
Here is an example of how to render an image with current camera perspective and then create new HTML img
element.
const base64Image = await RoomleConfigurator.renderImage({
useCurrentPerspective: true,
});
const img = document.createElement('img');
img.src = base64Image.image;
img.id = 'perspectiveImage';
img.style =
'width: ' +
base64Image.width +
'; height: ' +
base64Image.height +
'; position: fixed; top: 0; right: 0; border: solid 1px black';
document.body.appendChild(img);
If you set the parameter to false
it will use the default perspective.
# Manipulating the scene
With the getScene
and updateScene
APIs it's possible to get the current three.js scene (opens new window) (as a reference) and therefore delete and add objects as you need.
After you've changed the scene you need to call updateScene
to re-render the scene and reflect your changes.
For example if you want to see which objects are present in the scene you can call
const sceneObjects = RoomleConfigurator.getScene().children;
You can then remove or manipulate the scene objects. If you want to add a new object to the scene you can call
const object = new THREE.Object3D();
// set material, geometry etc.
RoomleConfigurator.getScene().add(object);
RoomleConfigurator.updateScene();
WARNING: Depending on what you change in the scene, the use of this API may break behaviour/funcionality of the configurator!
# Interacting with the scene by runtime id
The runtime id is the ID which can be used to identify objects within the scene. There are several ways to retrieve the runtime id but the most general approach is to use the part list. Therefore you need to listen to part list changes. How this works is explained in chapter 4. But to recap quickly what you need:
configuratorInstance.callbacks.onPartListUpdate = (...args) => console.log(...args);
You will see that the part list has the key perMainComponent
, which is an array of "parts". Each "part" consists of the properties "fullList", "originPart" and again "perMainComponent". For this example only the "originPart" is interesting. The origin part has a key called subpartId
. This subpartId
is the same as our runtime id. So we need to collect those IDs so we can use it later.
# Select a component by it's runtime id
To select a component you simply need to find the runtime id
or subpartId
you want to select. Then you can call:
const runtimeId = 1; // Just some random number, see how to get the real numbers from the sections above
configuratorInstance.selectComponent(runtimeId);
# Change a components parameter by the runtime id of the component
If you want to set the parameter of a component you need to use the runtime id
or subpartId
and call the following method:
const runtimeId = 1; // Just some random number, see how to get the real numbers from the sections above
configuratorInstance.setComponentParameter(runtimeId, parameter, value);
Some things to note: the parameter should be an instance of a kernel parameter. How you can retrieve them is explained in chapter 2. If you do not have access to the parameters and if you do not need validation of the value you want to set then you can just pass in the following object {key: "key-of-your-parameter"}
. The value needs to be a string. We do the conversion internally.