@lumiscaphe/viewer
Advanced tools
Lumiscaphe 3D Viewer
Weekly downloads
Readme
Lumiscaphe 3D Viewer
$ npm i @lumiscaphe/viewer
or
$ yarn add @lumiscaphe/viewer
Initialize Lumiscaphe Viewer as simply as this:
const container = document.getElementById('viewer');
const viewer = new LumiscapheViewer(container, {
server: 'https://wr.lumiscaphe.com',
api: 'v1',
fit: 'cover',
events: {
onLoadStart: () => {},
onLoadProgress: () => {},
onLoadEnd: () => {},
onLoadError: () => {},
onInteraction: () => {},
onVrcubeInteraction: () => {},
onVrobjectInteraction: () => {},
},
});
LumiscapheViewer constructor accept following parameters:
container
: div where viewer will be integratedserver
: WebRender urlapi
: WebRender API : static, v1, v2fit
: Viewport fit mode : contain, cover, fillevents.onLoadStart
: event sent on load startevents.onLoadProgress
: event sent on load progressevents.onLoadEnd
: event sent on load endevents.onLoadError
: event sent on load errorevents.onInteraction
: event sent on vrcube or vrobject interactionevents.onVrcubeInteraction
: event sent on vrcube interactionevents.onVrobjectInteraction
: event sent on vrobject interactionWebRender
const scene = [{
database: 'ee294840-5689-49b0-9edb-527598602df0',
configuration: 'Bin.Blue/Cabin.Yellow/Style.Design1/Wheels.Red',
animations: ['LeftDoor'],
}];
viewer.load(scene);
A scene is an array of products defined with:
database
: product 3D model guid stringconfiguration
: product configuration as a string of concatenated values separated by a slashanimations
: product animations as an array of stringBasic scenes should contain only one product.
Static
A scene could also be an array of static urls representing image|vrcube|vrobject images when api is set to 'static'.
const imageScene = ['image.jpg'];
const vrCubeScene = ['front.jpg', 'right.jpg', 'back.jpg', 'left.jpg', 'up.jpg', 'down.jpg'];
const vrObjectScene = ['01.jpg', '02.jpg', '03.jpg', '04.jpg', '05.jpg', '06.jpg', '07.jpg', '08.jpg', '09.jpg', '10.jpg', '11.jpg', '12.jpg', '13.jpg', '14.jpg', '15.jpg', '16.jpg', '17.jpg', '18.jpg', '19.jpg', '20.jpg', '21.jpg', '22.jpg', '23.jpg', '24.jpg'];
viewer.load(vrObjectScene);
Two ways to drive scene decor.
Integrated
When a 3D model contains integrated decors, it can be change through product configuration. For example: add ENV.STUDIO
or ENV.ALPES
to product configuration string.
const scene = [{
database: 'ee294840-5689-49b0-9edb-527598602df0',
configuration: 'Bin.Blue/Cabin.Yellow/Style.Design1/Wheels.Red/ENV.ALPES',
animations: ['LeftDoor'],
}];
viewer.load(scene);
External
When a 3D model does not contain integrated decors, it can be added with an external 3D model (product configuration will be applies on both products). For example:
const product = {
database: 'ee294840-5689-49b0-9edb-527598602df0',
configuration: 'Bin.Blue/Cabin.Yellow/Style.Design1/Wheels.Red',
animations: ['LeftDoor'],
};
const decorProduct = {
database: '82c1f7e8-9ae4-4f00-b45c-c857e21a954f',
translation: { x: 0, y: -0.12, z: 0 },
decor: true,
};
const scene = [product, decorProduct];
viewer.load(scene);
Decor product is defined with:
database
: decor product 3D model guid stringtranslation
: decor product 3D position (e.g. decorDeltaAltitude)decor
: boolean to indicate that this product is a decor databaseTwo ways to drive scene accessories.
Integrated
When a 3D model contains integrated accessories, it can be change through product configuration. For example: add AXS$8201468182
to product configuration string.
const scene = [{
database: 'ee294840-5689-49b0-9edb-527598602df0',
configuration: 'Bin.Blue/Cabin.Yellow/Style.Design1/Wheels.Red/AXS$8201468182',
animations: ['LeftDoor'],
}];
viewer.load(scene);
External
When a 3D model does not contain integrated accessories, it can be added with an external 3D model (product configuration will be applies on both products). For example:
const product = {
database: 'ee294840-5689-49b0-9edb-527598602df0',
configuration: 'Bin.Blue/Cabin.Yellow/Style.Design1/Wheels.Red/AXS$8201468182',
animations: ['LeftDoor'],
};
const accessoryProduct = {
database: '82c1f7e8-9ae4-4f00-b45c-c857e21a954f',
accessory: true,
};
const scene = [product, accessoryProduct];
viewer.load(scene);
Accessory product is defined with:
database
: accessory product 3D model guid stringaccessory
: boolean to indicate that this product is a accessory databaseconst view = {
mode: 'image',
camera: 'EXTER/1',
background: 'product',
};
viewer.setView(view);
A view can be defined in the following modes:
Image
mode
: image
camera
: camera pathbackground
: view background mode (product
, transparent
, gradient
)VRCube
mode
: vrcube
camera
: camera pathbackground
: view background mode (product
, transparent
, gradient
)VRObject - animation
mode
: vrobject
animation
: animation namecamera
: camera pathframes
: number of framesloop
: whether animation loops or notbackground
: view background mode (product
, transparent
, gradient
)VRObject - bookmark set
mode
: vrobject
camera
: camera group pathbackground
: view background mode (product
, transparent
, gradient
)const transition = {
fromPosition: 0,
toPosition: 2,
animation: {
name: 'Porte Gauche',
camera: '/Camera_Ext',
duration: 1,
reverse: false,
},
};
viewer.load(scene, transition);
viewer.setView(view, transition);
A transition can be set when loading a scene or setting a view with:
fromPosition
: go to specific vrobject image at the beginning - optionaltoPosition
: go to specific vrobject image at the end - optionalanimation
:
name
: animation namecamera
: camera path to use for animationduration
: animation duration in secondsreverse
: whether to reverse animation direction// Default values
const encoder = {
format: 'jpeg',
quality: 80,
};
viewer.setEncoder(encoder);
An encoder is defined with:
format
: encoder format (jpeg
, png
, webp
)quality
: encoder quality (0-100 for jpeg
and webp
and 0-9 for png
)// Default values
const parameters = {
antialiasing: false,
superSampling: 2,
};
viewer.setParameters(parameters);
Render parameters are defined with:
antialiasing
: whether software antialiasing is enabled or notsuperSampling
: super sampling coefficient 1-4WebRender is always optimized for the following default values (false, 2). Change this with precaution !
// Default values
const vrcube = {
pov: {
eye: [0.0, 0.0, 0.0],
target: [0.0, 0.0, 1.0],
up: [0.0, 1.0, 0.0],
},
fov: 60,
};
viewer.setVrcube(vrcube);
Vrcube is defined with:
pov
: current point of view
eye
: camera position vectortarget
: camera target vectorup
: camera up vectorfov
: current field of view in degrees// Default values
const vrobject = {
position: 0,
};
viewer.setVrobject(vrobject);
Vrobject is defined with:
position
: index of current displayed imageviewer.snapshot('image/jpeg', 0.8);
Snapshot method takes the following parameters:
type
: image format typequality
: number between 0 and 1 indicating the image qualityFAQs
Lumiscaphe 3D Viewer
The npm package @lumiscaphe/viewer receives a total of 568 weekly downloads. As such, @lumiscaphe/viewer popularity was classified as not popular.
We found that @lumiscaphe/viewer demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket installs a Github app to automatically flag issues on every pull request and report the health of your dependencies. Find out what is inside your node modules and prevent malicious activity before you update the dependencies.