最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue+Three加載glb文件報(bào)錯(cuò)問題及解決

 更新時(shí)間:2024年10月04日 10:21:04   作者:名字太難隨便取了  
當(dāng)使用Three.js加載GLB模型時(shí),遇到加載錯(cuò)誤常常是路徑問題,解決方案:1. 將GLB模型文件置于public目錄,避免打包時(shí)路徑編碼變化;2. 從node_modules的three庫中復(fù)制draco解碼器至public目錄;3. 確認(rèn)場(chǎng)景、攝像機(jī)和光源設(shè)置正確

報(bào)錯(cuò)

加載glb的代碼

load3D() {
      const loader = new GLTFLoader()
      const dracoLoader = new DRACOLoader()
      dracoLoader.setDecoderPath('/draco/')
      dracoLoader.preload()
      loader.setDRACOLoader(dracoLoader)

      loader.load('/3D/city.glb', (gltf) => {
        this.scene.add(gltf.scene)
        this.renderer.render(this.scene, this.camera)
      }, (xhr) => {
        console.log((xhr.loaded / xhr.total) * 100 + '% loaded')
      }, (error) => {
        console.error(error)
      })
    }

解決方式

1. glb模型文件請(qǐng)放到public文件下,否則會(huì)無法查找到(打包后其他文件都會(huì)加上一串編碼)

2. 前往node_modules文件下 找到three文件夾, 找到/examples/js/libs/draco/ 將draco整個(gè)文件夾復(fù)制下來

3. 將復(fù)制的draco文件夾復(fù)制到public文件夾內(nèi)

const dracoLoader = new DRACOLoader()
dracoLoader.setDecoderPath('/draco/')

5. 大功告成

注意:

  • 請(qǐng)先保證場(chǎng)景攝像機(jī)和光源都是正確的
  • 3D/city.glb中的3D是我在public中創(chuàng)建的名為3D的文件夾

完整代碼

<template>
  <section>
    <section id="container"></section>
  </section>
</template>

<script>
import * as Three from 'three'
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader'
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'
import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader'
export default {
  name: 'Index',
  data() {
    return {
      camera: null,
      scene: null,
      renderer: null,
      mesh: null
    }
  },
  mounted() {
    this.init()
    this.animate()
  },
  methods: {
    init() {
      const container = document.getElementById('container')
      this.camera = new Three.PerspectiveCamera(90, container.clientWidth / container.clientHeight, 0.1, 10000)
      this.renderer = new Three.WebGLRenderer({ antialias: true })

      this.camera.position.set(200, 200, 400)

      this.scene = new Three.Scene()

      this.renderer.setClearColor(new Three.Color(0xF7F2F1))
      this.renderer.setSize(container.clientWidth, container.clientHeight)
      this.renderer.shadowMap.enabled = true

      container.appendChild(this.renderer.domElement)

      this.controls = new OrbitControls(this.camera, this.renderer.domElement)
      this.controls.target = new Three.Vector3(0, 0, 0)

      this.loadLight()
      this.load3D()
    },
    load3D() {
      const loader = new GLTFLoader()
      const dracoLoader = new DRACOLoader()
      dracoLoader.setDecoderPath('/draco/')
      dracoLoader.preload()
      loader.setDRACOLoader(dracoLoader)

      loader.load('/3D/city.glb', (gltf) => {
        this.scene.add(gltf.scene)
        this.renderer.render(this.scene, this.camera)
      }, (xhr) => {
        console.log((xhr.loaded / xhr.total) * 100 + '% loaded')
      }, (error) => {
        console.error(error)
      })
    },
    loadLight() {
      // 點(diǎn)光源
      // const point = new Three.PointLight(0xffffff)
      // point.position.set(4000, 4000, 4000) // 點(diǎn)光源位置
      // this.scene.add(point) // 點(diǎn)光源添加到場(chǎng)景中
      // 環(huán)境光
      const ambient = new Three.AmbientLight(0xFFFFFF)
      this.scene.add(ambient)
    },
    animate() {
      requestAnimationFrame(this.animate)
      this.renderer.render(this.scene, this.camera)
    }
  }
}
</script>

<style scoped>
  #container {
    width: 100%;
    height: calc(100vh - 84px);
  }
</style>

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue程序化的事件監(jiān)聽器(實(shí)例方案詳解)

    Vue程序化的事件監(jiān)聽器(實(shí)例方案詳解)

    本文通過兩種方案給大家介紹了Vue程序化的事件監(jiān)聽器,每種方案通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2020-01-01
  • vue圖片裁剪插件vue-cropper使用方法詳解

    vue圖片裁剪插件vue-cropper使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了vue圖片裁剪插件vue-cropper使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • vue3如何使用element-plus的dialog

    vue3如何使用element-plus的dialog

    這篇文章主要介紹了vue3優(yōu)雅的使用element-plus的dialog,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • 前端vue中實(shí)現(xiàn)嵌入代碼編輯器的詳細(xì)代碼

    前端vue中實(shí)現(xiàn)嵌入代碼編輯器的詳細(xì)代碼

    隨著Web技術(shù)的不斷發(fā)展,前端開發(fā)也正日新月異,下面這篇文章主要給大家介紹了關(guān)于前端vue中實(shí)現(xiàn)嵌入代碼編輯器的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • Vue組件庫ElementUI實(shí)現(xiàn)表格列表分頁效果

    Vue組件庫ElementUI實(shí)現(xiàn)表格列表分頁效果

    這篇文章主要為大家詳細(xì)介紹了Vue組件庫ElementUI實(shí)現(xiàn)表格列表分頁效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Vue項(xiàng)目中實(shí)現(xiàn)描點(diǎn)跳轉(zhuǎn)scrollIntoView的案例

    Vue項(xiàng)目中實(shí)現(xiàn)描點(diǎn)跳轉(zhuǎn)scrollIntoView的案例

    這篇文章主要介紹了Vue項(xiàng)目中實(shí)現(xiàn)描點(diǎn)跳轉(zhuǎn)scrollIntoView的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue IP地址輸入框?qū)嵗a

    Vue IP地址輸入框?qū)嵗a

    本文通過實(shí)例代碼給大家介紹Vue IP地址輸入框?qū)崿F(xiàn),代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-10-10
  • 整理項(xiàng)目中vue.config.js打包優(yōu)化配置方法

    整理項(xiàng)目中vue.config.js打包優(yōu)化配置方法

    這篇文章主要介紹了整理項(xiàng)目中vue.config.js打包優(yōu)化,包括配置?webpack-bundle-analyzer?插件查看文件大小及配置compression-webpack-plugin?用gzip壓縮打包的文件大小,本文結(jié)合實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • 解決vue 中 echart 在子組件中只顯示一次的問題

    解決vue 中 echart 在子組件中只顯示一次的問題

    vue推薦組件化開發(fā),所以就把每個(gè)圖表封裝成子組件,然后在需要用到該圖表的父組件中直接使用。接下來給大家介紹vue 中 echart 在子組件中只顯示一次的問題,需要的朋友參考下吧
    2018-08-08
  • Vue純前端實(shí)現(xiàn)導(dǎo)出excel中的圖片與文件超鏈接

    Vue純前端實(shí)現(xiàn)導(dǎo)出excel中的圖片與文件超鏈接

    這篇文章主要為大家詳細(xì)介紹了Vue如何純前端實(shí)現(xiàn)導(dǎo)出excel中的圖片與文件超鏈接,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2025-03-03

最新評(píng)論

丰城市| 霍城县| 台东市| 青河县| 黄石市| 湖南省| 惠来县| 论坛| 海盐县| 衡南县| 安庆市| 临澧县| 安陆市| 台前县| 通榆县| 池州市| 平利县| 宁陵县| 农安县| 中宁县| 砚山县| 于都县| 洛浦县| 交口县| 勐海县| 如东县| 永仁县| 大洼县| 谢通门县| 灵宝市| 夹江县| 台北市| 罗田县| 光泽县| 通江县| 乐业县| 伊宁县| 酉阳| 孟州市| 肥城市| 聊城市|