npm install vue-model-viewer 1. /src/main.js // Only supports vue3 import VueModelViewer from 'vue-model-viewer' app.use(VueModelViewer); 2. page use <vue-model-viewer ref="modelViewerRef" :viewWidth="viewWidth" :viewHeight="viewHeight"> </vue-model-viewer> <template> <div class="hello"> <h1>{{ msg }}</h1> <p> Easily display interactive 3D models on the web & in AR </p> <button @click="handleClick">Click switch </button> <div style="display: flex;justify-content: center; margin-top: 20px;"> <vue-model-viewer :modelAddress="modelAddress" :poster="poster" :viewWidth="viewWidth" :viewHeight="viewHeight"> </vue-model-viewer> </div> </div> </template> <script> import poster from "../assets/logo.png"; export default { name: 'HelloWorld', props: { msg: String }, data () { return { modelAddress: '', viewWidth: '500px', viewHeight: '500px', poster: poster, listglb: [ { 'url': './1.glb' }, { 'url': './2.glb' }, { 'url': './3.glb' } ] } }, mounted () { this.handleClick() }, methods: { handleClick () { let n = 3; let random_number = Math.floor(Math.random() * Math.floor(n)); var urlads = this.listglb[random_number].url this.modelAddress = urlads }, } } </script> <style scoped> button { height: 30px; background: #42b983; cursor: pointer; } h3 { margin: 40px 0 0; } ul { list-style-type: none; padding: 0; } li { display: inline-block; margin: 0 10px; } a { color: #42b983; } </style> Click to view example。
| configuration item | value type | description |
|---|---|---|
| modelAddress | String | model url Address |
| poster | String | model poster loading image |
| viewWidth | String | model width (unit: px,em,rem,vw ...) |
| viewHeight | String | model high (unit: px,em,rem,vh ...) |
| isAutoPlay | Boolean | isAutoPlay true or flase |
| isDisableZoom | Boolean | isDisableZoom true or flase |
| modelId | String | default 'viewer-display' |
| modelClass | String | default 'viewer-display' |
- Built for Ethereum using Web3.
- Implements Graph Protocol to read blockchain.
v1.0.0 * init model-viewer Vue Component
