trillion-viewer
Version:
Trillion 3D Viewer
163 lines (120 loc) • 5.21 kB
Markdown
# Trillion Viewer
This is Trillion Viewer that allow you to integrate Trillion SDK in your site. For more information please visit https://trillion.jewelry
## Installing
Using npm:
```shell
npm install trillion-viewer
```
Using yarn:
```shell
yarn add trillion-viewer
```
## How to use:
First of all **get your API key** from https://dashboard.trillion.jewelry/integration
Then you need to create an empty div element for viewer initialization.
For example:
```html
<div id="trillion-viewer"></div>
```
Then, in your js code (**don't forget to set your API key**):
```js
import {TrillionViewerApp} from "trillion-viewer"
const elem = document.getElementById('trillion-viewer')
const trillionViewer = new TrillionViewerApp()
trillionViewer.init(elem)
trillionViewer.setServiceActivationKey("YOUR_API_KEY_HERE")
trillionViewer.setJewelryID('demo-ring')
trillionViewer.refresh()
```
For typescript:
```ts
const elem = document.getElementById('trillion-viewer') as HTMLElement
```
## Instance methods
* `trillionViewer.init()` - Create viewer on the provided HTML element
* `trillionViewer.setServiceActivationKey(KEY)` - Set API key for app
* `trillionViewer.refresh()` - reload viewer after changing parameters
* `trillionViewer.setJewelryID(sku)` - Set the id(SKU) of the jewelry to load
* `trillionViewer.getJewelryID()` - Get the id(SKU) of the uploaded jewelry
* `trillionViewer.setStartSize(number)` - Set the start size of the jewelry
* `trillionViewer.getStartSize()` - Get the start size of the jewelry
* `trillionViewer.setZoomMin(number)` - Set the minumum zoom value
* `trillionViewer.getZoomMin()` - Get the minumum zoom value
* `trillionViewer.setZoomMax(number)` - Set the maximum zoom value
* `trillionViewer.getZoomMax()` - Get the maximum zoom value
* `trillionViewer.setTryon(true)` - Enables Try-On btn above the model
* `trillionViewer.setCustomUrlTryOn('https://your-brand.com/tryon')` - Set the url for Try-On button
### Model configuration methods
Available colors and cuts depends on a model
```javascript
trillionViewer.configuratorController.changeColor({color: '#f5f5f5', materialName: 'metal'})
```
change color of material. Available materials names _can be retrieved from API in future_
```javascript
trillionViewer.configuratorController.changeCut({name: 'oval', frame: 'oval', band?: 'oval'}, RING_CUTS)
```
change cut of the stone. `RING_CUTS` - all available ring cuts, _can be retrieved from API in future_
and `band` - is optional param, used where band is also changed
```javascript
trillionViewer.configuratorController.engrave('text to engrave')
```
change engrave for a model, max length 15 symbols
```javascript
trillionViewer.configuratorController.changeLetter('A', LETTERS)
```
change engrave for a model, max length 15 symbols `LETTERS` - all available letters, _can be retrieved from API in future_
```javascript
trillionViewer.configuratorController.setSelectedMaterial("oval", 1, "demo-ring-v2")
```
Applies a set of material parameters to a mesh with name `"oval"`. `1` is the index in the material configs list and `"demo-ring-v2"` is the jewellery's SKU.
### Events
'VIEWER_LOADED_EVENT' will be fired when viewer is loaded and ready for any user interactions. Here is an example of subscription to that event
```javascript
document.addEventListener('VIEWER_LOADED_EVENT', () => {
console.log('Viewer is loaded!');
})
```
### Styling
To change background for the loader screen, just call `trillionViewer.setBackground('#FF5733')` before .`refresh()` method.
To override default css variables, you need to define the external variables in your CSS. For example:
```css
:root {
--font-family-main-external: 'Arial, sans-serif';
--overlay-item-background-external: rgba(50, 50, 50, 0.5);
--overlay-item-color-external: rgba(200, 200, 200, 1);
--primary-external: #FF5733;
--left-pos-external: 75%;
--bottom-pos-external: 30px;
}
```
#### Explanation of Variables
--font-family-main-external: Main font family for the application. Defaults to 'Montserrat, Helvetica, sans-serif'
--overlay-item-background-external: Background color for overlay items. Defaults to rgba(0, 0, 0, 0.35) ~light-gray
--overlay-item-color-external: Text color for overlay items. Defaults to rgba(255, 255, 255, 1) ~⬜
--primary-external: Primary color for the background for the error page. Defaults to #222D33 ~⬛
--left-pos-external: Horizontal position for an configurator panel. Defaults to 50%. ~center of the screen
--bottom-pos-external: Vertical position for an configurator panel. Defaults to 20px. ~up to 20px from the bootom
## Using CDN to get Trillion Viewer
use this pattern:
`unpkg.com/:package@:version/:file`
For example:
```js
import {TrillionViewerApp} from "https://sdk.trillion.jewelry/viewer/latest/trillion-viewer.js"
```
## React component
This library also provides the React component for widget.
### How to use
import component:
```js
import { TrillionViewer } from "trillion-viewer";
```
use somewhere in your React application:
```js
function MyComponent() {
return (
<div className="MyComponent">
<TrillionViewer jewelryId={'demo-ring'}/>
</div>
)
}
```