国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue使用vue-3d-model組件預(yù)覽3D三維文件、立體文件,支持旋轉(zhuǎn)、自動播放

這篇具有很好參考價值的文章主要介紹了Vue使用vue-3d-model組件預(yù)覽3D三維文件、立體文件,支持旋轉(zhuǎn)、自動播放。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

實現(xiàn)效果

vue-3d-model,Vue.js,vue.js,前端,javascript

vue-3d-model,Vue.js,vue.js,前端,javascript

vue-3d-model,Vue.js,vue.js,前端,javascript

vue-3d-model,Vue.js,vue.js,前端,javascript

vue-3d-model,Vue.js,vue.js,前端,javascript

Tips:先潑個冷水,這個預(yù)覽3D組件有個致命的缺陷——不能設(shè)置材質(zhì)、皮膚文件的目錄路徑,必須要和3d文件放在同一個目錄,如果項目是用hash模式(url后面會有/#/這種井號),就會導(dǎo)致無法讀取根目錄的材質(zhì)文件。所以推薦了解下?vue-3d-loader

?安裝先

npm install vue-3d-model --save

屬性

prop type default example
src string - './exapmle.obj'
width number - 300
height number - 300
position object { x: 0, y: 0, z: 0 } { x: 100, y: 20, z: -10 }
rotation object { x: 0, y: 0, z: 0 } { x: Math.PI / 2, y: 0, z: - Math.PI / 4 }
cameraPosition object { x: 0, y: 0, z: 0 } { x: 1, y: 2, z: -3 }
cameraRotation object { x: 0, y: 0, z: 0 } { x: 3, y: 2, z: -1 }
scale object { x: 1, y: 1, z: 1 } { x: 2, y: 2, z: 3 }
lights array -
backgroundColor number/string 0xffffff 0xffffff/'#f00'/'rgb(255,255,255)'
backgroundAlpha number 1 0.5
controlsOptions object - see?OrbitControls Propertiesopen in new window
crossOrigin string anonymous anonymous/use-credentials
requestHeader object - { 'Authorization: Bearer token' }
outputEncoding number THREE.LinearEncoding see?WebGLRenderer OutputEncodingopen in new window
glOptions object { antialias: true, alpha: true } see?WebGLRenderer Parametersopen in new window

事件

event
mousedown
mousemove
mouseup
click
load
progress
error

插槽

slots
progress-bar
poster
<template>
    <div class="threeDPreview">

        <!-- 3D立體文件預(yù)覽 -->
        <div if="threeDComponents" class="threeD">
            <component
                :is="threeDComponents.componentName" 
                :backgroundAlpha="1" 
                :backgroundColor="'#000'"
                :rotation="ratation" 
                :src="`${encodeURIComponent(_fileURL)}`" 
                @load="onLoad" />
        </div>

    </div>
</template>
    
<script>
//引入3D預(yù)覽插件 npm install vue-3d-model --save
import { ModelCollada, ModelFbx, ModelGltf, ModelThree, ModelObj, ModelPly, ModelStl, } from 'vue-3d-model';

export default {
    components: {
        ModelCollada, ModelFbx, ModelGltf, ModelThree, ModelObj, ModelPly, ModelStl,
    },
    data() {
        return {
            load: null,
            threeDfileTypes: [
                { label: 'dae', value: 1, iconURL: 'static/img/fileType/3D/dae.svg', componentName: 'ModelCollada' },
                { label: 'fbx', value: 2, iconURL: 'static/img/fileType/3D/fbx.svg', componentName: 'ModelFbx' },
                { label: 'gltf', value: 3, iconURL: 'static/img/fileType/3D/gltf.svg', componentName: 'ModelGltf' },
                { label: 'json', value: 4, iconURL: 'static/img/fileType/3D/json.svg', componentName: 'ModelThree' },
                { label: 'obj', value: 5, iconURL: 'static/img/fileType/3D/obj.svg', componentName: 'ModelObj' },
                { label: 'ply', value: 6, iconURL: 'static/img/fileType/3D/ply.svg', componentName: 'ModelPly' },
                { label: 'stl', value: 7, iconURL: 'static/img/fileType/3D/stl.svg', componentName: 'ModelStl' },
            ],
            ratation: {
                x: -Math.PI / 2,
                y: 0,
                z: 0,
            },
            _fileURL: '',
            _fileType: '',
        };
    },
    props: ["fileURL", "fileType"],
    watch: {
        fileURL: {
            handler(d) {
                this._fileURL = decodeURIComponent(d || this.$route.query.fileURL);
            }, deep: true, immediate: true,
        },
        fileType: {
            handler(d) {
                this._fileType = d || this._fileURL.split('.').slice(-1)[0];
                // 如果是3D文件個后綴名格式
                if (this.threeDfileTypes.find(v => v.label == this._fileType)) {
                    this.showLoad();
                }
            }, deep: true, immediate: true,
        },
    },
    computed: {
        threeDComponents() {
            return this.threeDfileTypes.find(v => v.label == this._fileType);
        },
    },
    methods: {
        showLoad() { this.load = this.$loading({ text: "加載中…" }); },
        hideLoad() { this.load && this.load.close(); },
        onLoad(d) {
            this.rotate();
            this.hideLoad();
        },
        rotate() {
            requestAnimationFrame(this.rotate);//實現(xiàn)自動旋轉(zhuǎn)效果
            this.rotation.z += 0.01;
        },
    }
};
</script>
    
<style lang="scss" scoped>
.threeDPreview {
    position: relative;
    .threeD {
        width: 100%;
        height: calc(100vh - 60px);
    }
}
</style>

相關(guān)API文檔來源:

安裝 | Vue 3D ModelVue 3D Modelhttps://vue-3d-model.netlify.app/zh/guide/installation/

可能會遇到的報錯

vue-3d-model.umd.js報錯You may need an appropriate loader to handle this file type怎么辦?_你摯愛的強哥的博客-CSDN博客找到 node_modules\vue-3d-model\dist\vue-3d-model.umd.js文件。大約是9281行代碼。https://blog.csdn.net/qq_37860634/article/details/131491871

其他可以預(yù)覽3D的組件,前列腺推薦!

推薦:vue-3d-loader支持.dae/.fbx/.gltf/.glb/.obj/.ply/.stl/.json,并支持同一個場景導(dǎo)入多個不同3D模型,支持mtl材質(zhì)以及jpg/png等圖片紋理_你摯愛的強哥的博客-CSDN博客vue-3d-loader是vueJS + threeJS整合的一個3d展示組件。支持.dae/.fbx/.gltf/.glb/.obj/.ply/.stl/.json,并支持同一個場景導(dǎo)入多個不同3D模型,支持mtl材質(zhì)以及jpg/png等圖片紋理vue3請安裝及以上版本,vue2請安裝版本。https://blog.csdn.net/qq_37860634/article/details/131494010文章來源地址http://www.zghlxwxcb.cn/news/detail-600260.html

到了這里,關(guān)于Vue使用vue-3d-model組件預(yù)覽3D三維文件、立體文件,支持旋轉(zhuǎn)、自動播放的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【LLM+三維場景】3D-GPT: Procedural 3D MODELING WITH LARGE LANGUAGE MODELS

    【LLM+三維場景】3D-GPT: Procedural 3D MODELING WITH LARGE LANGUAGE MODELS

    論文主頁 論文地址 代碼地址(未放) 一句話生成3D世界,未公布代碼已獲141星!或引發(fā)3D建模行業(yè)革命 In the pursuit of efficient automated content creation, procedural generation, leveraging modifiable parameters and rule-based systems, emerges as a promising approach. Nonetheless, it could be a demanding endeavor, given i

    2024年03月25日
    瀏覽(28)
  • echarts 使用地圖,設(shè)置背景圖片和高亮圖片,點擊實現(xiàn)高亮顯示,更換散點圖圖片,高亮散點圖形,3D懸浮效果展示地圖,集成Vue組件

    echarts 使用地圖,設(shè)置背景圖片和高亮圖片,點擊實現(xiàn)高亮顯示,更換散點圖圖片,高亮散點圖形,3D懸浮效果展示地圖,集成Vue組件

    先看下? ?需要實現(xiàn)的效果: 第一步 需準備需要的插件 ?1? 注意新版?echarts 的引入方式為: ?import * as echarts from \\\'echarts\\\',這里我把 echarts 直接掛載到了Vue上,本項目使用echarts比較多,這樣的話很方便,也可以在需要echarts的模塊按需引入 ? ? ? ?在main.js中添加以下代碼:

    2024年02月10日
    瀏覽(29)
  • vue2/3項目中使用Vue Carousel 3D實現(xiàn) Carousel 3D 輪播

    vue2/3項目中使用Vue Carousel 3D實現(xiàn) Carousel 3D 輪播

    項目需求大概是這個樣子,這種并不能通過圍成一周再旋轉(zhuǎn)父級實現(xiàn),因此圖方便選擇了組件 輪播 ? ?vue2,可以直接使用?Playground - Vue Carousel 3D - 3D Carousel for Vue.js ?進行改造成自己需要的樣子。文檔為英文,中文可參考這位 Vue 3D輪播插件vue-carousel-3d_memory_zzz的博客-CSDN博客

    2024年02月08日
    瀏覽(17)
  • 在Vue3項目中使用VueCropper裁剪組件(裁剪及預(yù)覽效果)

    在Vue3項目中使用VueCropper裁剪組件(裁剪及預(yù)覽效果)

    某次看到后臺系統(tǒng)中使用到了裁剪組件,感覺挺好玩的并且最近也在學(xué)Vue3和Ts,所以就研究了VueCropper組件,封裝了裁剪組件,效果如下圖。 npm i vue-cropper --save 代碼如下(示例): import ‘vue-cropper/dist/index.css’ import { VueCropper } from ‘vue-cropper’ TipsDialog是我自己封裝的dialog組

    2023年04月24日
    瀏覽(22)
  • 【Vue技巧】Vue2和Vue3組件上使用v-model的實現(xiàn)原理

    ChatGPT4.0國內(nèi)站點,支持GPT4 Vision 視覺模型:海鯨AI 在Vue中, v-model 是一個語法糖,用于在輸入框、選擇框等表單元素上創(chuàng)建雙向數(shù)據(jù)綁定。當你在自定義組件中實現(xiàn) v-model 功能時,你需要理解它背后的原理: v-model 實際上是一個屬性和一個事件的簡寫。 在 Vue 2.x 中, v-mode

    2024年01月15日
    瀏覽(29)
  • 組件v-model(.sync)記錄使用(vue3)

    組件v-model(.sync)記錄使用(vue3)

    首先,讓我們來了解一下Vue3中v-model的用法。在Vue3中, v-model 指令可以用于自定義組件上,用于實現(xiàn)組件的雙向數(shù)據(jù)綁定。與Vue2中的 .sync 不同, Vue3中的v-model需要在組件中手動實現(xiàn)雙向綁定邏輯。 下面是一個簡單的父組件示例,展示了如何在Vue3中使用 v-model 來實現(xiàn)組件的雙

    2024年01月19日
    瀏覽(26)
  • 【3d地圖】vue中使用echarts geo3D

    【3d地圖】vue中使用echarts geo3D

    想必對于一個前端來說,大家對echarts并不陌生,本次文章主要記錄了我在vue2中使用echarts 渲染3d地圖過程中的一點心得,本文代碼包含詳細的配置項注釋~ Github項目Demo地址:點擊這里 給個星星吧??!不定期更新此demo github項目啟動后訪問路徑:“/BaseMap” 或者 點擊 “基礎(chǔ)3

    2023年04月09日
    瀏覽(20)
  • 在vue2使用v-model對組件進行雙向綁定

    v-model=“visible” 等價于 :value=“visible” 加上 @input=“visible = $event” 所以 v-model 就是父組件向子組件傳了個 value 字段的值,子組件使用 props 定義 value 字段, 就可以在子組件使用 value 讀取這個值;子組件使用 $emit(‘input’,值) 就可以改變 v-model 的值 父組件 子組件 父組件 子

    2024年02月10日
    瀏覽(16)
  • Vue常用的組件庫大全【前端工程師必備】【移動端、PC端(web端)、數(shù)據(jù)可視化組件庫(數(shù)據(jù)大屏) 、動畫組件庫、3D組件庫】

    Vue常用的組件庫大全【前端工程師必備】【移動端、PC端(web端)、數(shù)據(jù)可視化組件庫(數(shù)據(jù)大屏) 、動畫組件庫、3D組件庫】

    1)Vant ui ??有贊移動 UI 組件庫,支持 Vue2/3 微信小程序,支付寶小程序 https://vant-contrib.gitee.io/vant/v2/#/zh-CN/col Vant 是由有贊前端團隊開發(fā)的一套基于 Vue.js 的移動端 UI 組件庫,它包含了豐富的組件和功能,可以幫助開發(fā)者快速構(gòu)建高質(zhì)量的移動應(yīng)用。Vant 以簡潔易用和高質(zhì)量

    2024年02月04日
    瀏覽(26)
  • vue3+elementplus點擊按鈕使用el-image-viewer圖片預(yù)覽組件

    1.首先確保你是全局引入,不是全局的需要自主引入該組件 2..vue文件中定義組件 3.?showsrcListref:[\\\'\\\']格式 4.點擊按鈕給showsrcListref賦值即可完成,同時將showImagePreview置為true

    2024年01月18日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包