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

vue2+three.js+blender(實(shí)現(xiàn)3d 模型引入并可點(diǎn)擊效果)

這篇具有很好參考價(jià)值的文章主要介紹了vue2+three.js+blender(實(shí)現(xiàn)3d 模型引入并可點(diǎn)擊效果)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

2023.9.13今天我學(xué)習(xí)了如何把3d建模里面的模型引入到vue中,并可以實(shí)現(xiàn)拖動(dòng),點(diǎn)擊的效果:

blender+vue,blender

blender+vue,blender

首先安裝:

npm install three

相關(guān)代碼如下:

<!--3d基礎(chǔ)版,實(shí)現(xiàn)單個(gè)3d圖形-->
<template>
  <div>
    <div id="content"/>
  </div>
</template>
<script>
import * as THREE from 'three'
import {GLTFLoader} from 'three/examples/jsm/loaders/GLTFLoader';
import {OrbitControls} from "three/examples/jsm/controls/OrbitControls"; //鼠標(biāo)控制器

export default {
  data() {
    return {
      scene: null,//場(chǎng)景
      camera: null,//照相機(jī)
      renderer: null,//渲染器
      raycaster: null,
      mesh: null,//物體
      mouse: null,
      onCLick: null,
      childList: null,
      light: null,//燈光
      cuModel: "", //當(dāng)前選中模型
      mouseControls: null, //軌道控制
      pointLight: null, //點(diǎn)光源
      ambientLight: null, //環(huán)境光
      num: 0,//點(diǎn)擊次數(shù)
    }
  },
  mounted() {
    this.init()
    window.addEventListener("click", this.onClick, false);
  },

  methods: {
    init() {
      // 創(chuàng)建場(chǎng)景
      this.createScene()
      // 創(chuàng)建照相機(jī)
      this.createCamera()
      // 創(chuàng)建渲染器
      this.createRenderer()
      // 創(chuàng)建燈光
      this.createLight()
      // 創(chuàng)建控制器
      this.createOrbitControls();
      // 創(chuàng)建物體
      this.createMesh()
      // 觸發(fā)
      this.render()
    },
    // 創(chuàng)建場(chǎng)景
    createScene() {
      this.scene = new THREE.Scene()
    },
    // 創(chuàng)建照相機(jī)
    createCamera() {
      this.camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000)
      this.camera.position.set(200, 200, 200)
      this.camera.lookAt(this.scene.position)
    },
    // 創(chuàng)建渲染器
    createRenderer() {
      this.renderer = new THREE.WebGLRenderer()
      this.renderer.setSize(window.innerWidth, window.innerHeight)
      this.renderer.setClearColor(new THREE.Color(0xffffff))
      document.getElementById('content').appendChild(this.renderer.domElement)
    },
    // 創(chuàng)建燈光
    createLight() {
      this.light = new THREE.DirectionalLight({
        color: 'red'
      })
      this.light.position.set(100, 100, 100)
      this.scene.add(this.light)
    },
    // 創(chuàng)建物體
    createMesh() {
      let lm = new Promise((resolve, reject) => {
        let loader = new GLTFLoader();
        loader.load('model/bear.glb', (gltf) => {
          resolve(gltf);
        })
      })
      lm.then((res) => {
        res.scene.position.set(
            -100, 0, 0
        )
        res.scene.scale.set(20, 20, 20)
        res.scene.userData = {id: 1, name: 'bear'}
        this.scene.add(res.scene)
        this.render()
      })
    },
    //觸發(fā)
    render() {
      this.renderer.render(this.scene, this.camera)
    },
    //創(chuàng)建軌道控制
    createOrbitControls() {
      //沒有縮放阻尼
      this.mouseControls = new OrbitControls(
          this.camera,
          this.renderer.domElement
      ); //創(chuàng)建控件對(duì)象
      this.mouseControls.addEventListener('change', () => {
        this.renderer.render(this.scene, this.camera)
      })
    },
    onClick(event) {
      this.raycaster = new THREE.Raycaster();
      this.mouse = new THREE.Vector2();
      this.mouse.x = (event.clientX / window.innerWidth) * 2 - 1
      this.mouse.y = -(event.clientY / window.innerHeight) * 2 + 1
      this.raycaster.setFromCamera(this.mouse, this.camera);
      const intersects = this.raycaster.intersectObjects(this.scene.children, true);
      if (intersects.length > 0) {
        const clickedObject = intersects[0].object;
        if (clickedObject.name === clickedObject.name) {
          switch (this.num) {
            case 0:
              clickedObject.material.color.set(0xff0000)
              this.num++;
              break;
            case 1:
              clickedObject.material.color.set(0x00ff00)
              this.num++;
              break;
            case 2:
              clickedObject.material.color.set(0xFFFF00)
              this.num++;
              break;
            default:
              clickedObject.material.color.set(0x0000FF)
              this.num -= 3
          }
          this.render()
        }
      }
    }
  }
}
</script>

?如果沒有圖片可以去

Three.js--》建模軟件如何加載外部3D模型?_threejs加載3d模型_亦世凡華、的博客-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-773445.html

到了這里,關(guān)于vue2+three.js+blender(實(shí)現(xiàn)3d 模型引入并可點(diǎn)擊效果)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 如何用Three.js + Blender打造一個(gè)web 3D展覽館

    如何用Three.js + Blender打造一個(gè)web 3D展覽館

    作者:vivo 互聯(lián)網(wǎng)前端團(tuán)隊(duì)- Wei Xing? 運(yùn)營(yíng)活動(dòng)新玩法層出不窮,web 3D炙手可熱,本文將一步步帶大家了解如何利用Three.js和Blender來打造一個(gè)沉浸式web 3D展覽館。 3D展覽館是什么,先來預(yù)覽下效果: 看起來像個(gè)3D冒險(xiǎn)類手游,用戶可以操縱屏幕中央的虛擬搖桿,以第一人稱視角

    2024年02月16日
    瀏覽(94)
  • Three.js--》實(shí)現(xiàn)3d字體模型展示

    Three.js--》實(shí)現(xiàn)3d字體模型展示

    目錄 項(xiàng)目搭建 初始化three.js基礎(chǔ)代碼 設(shè)置環(huán)境紋理 加載字體模型 今天簡(jiǎn)單實(shí)現(xiàn)一個(gè)three.js的小Demo,加強(qiáng)自己對(duì)three知識(shí)的掌握與學(xué)習(xí),只有在項(xiàng)目中才能靈活將所學(xué)知識(shí)運(yùn)用起來,話不多說直接開始。 項(xiàng)目搭建 本案例還是借助框架書寫three項(xiàng)目,借用vite構(gòu)建工具搭建vue項(xiàng)

    2024年02月07日
    瀏覽(93)
  • Three.js--》實(shí)現(xiàn)3d小島模型搭建

    Three.js--》實(shí)現(xiàn)3d小島模型搭建

    目錄 項(xiàng)目搭建 初始化three.js基礎(chǔ)代碼 設(shè)置環(huán)境背景 設(shè)置水面樣式 添加天空小島 今天簡(jiǎn)單實(shí)現(xiàn)一個(gè)three.js的小Demo,加強(qiáng)自己對(duì)three知識(shí)的掌握與學(xué)習(xí),只有在項(xiàng)目中才能靈活將所學(xué)知識(shí)運(yùn)用起來,話不多說直接開始。 項(xiàng)目搭建 本案例還是借助框架書寫three項(xiàng)目,借用vite構(gòu)建

    2024年02月05日
    瀏覽(429)
  • Three.js--》實(shí)現(xiàn)3d踢球模型展示

    Three.js--》實(shí)現(xiàn)3d踢球模型展示

    目錄 項(xiàng)目搭建 初始化three.js基礎(chǔ)代碼 設(shè)置環(huán)境紋理加載模型 使用Cannon-es實(shí)現(xiàn)物理世界 今天簡(jiǎn)單實(shí)現(xiàn)一個(gè)three.js的小Demo,加強(qiáng)自己對(duì)three知識(shí)的掌握與學(xué)習(xí),只有在項(xiàng)目中才能靈活將所學(xué)知識(shí)運(yùn)用起來,話不多說直接開始。 項(xiàng)目搭建 本案例還是借助框架書寫three項(xiàng)目,借用

    2024年02月11日
    瀏覽(99)
  • Three.js--》實(shí)現(xiàn)3d地球模型展示

    Three.js--》實(shí)現(xiàn)3d地球模型展示

    目錄 項(xiàng)目搭建 實(shí)現(xiàn)網(wǎng)頁簡(jiǎn)單布局 初始化three.js基礎(chǔ)代碼 創(chuàng)建環(huán)境背景 加載地球模型 實(shí)現(xiàn)光柱效果 添加月球模型 今天簡(jiǎn)單實(shí)現(xiàn)一個(gè)three.js的小Demo,加強(qiáng)自己對(duì)three知識(shí)的掌握與學(xué)習(xí),只有在項(xiàng)目中才能靈活將所學(xué)知識(shí)運(yùn)用起來,話不多說直接開始。 項(xiàng)目搭建 本案例還是借

    2024年02月08日
    瀏覽(93)
  • Three.js--》實(shí)現(xiàn)3d地月模型展示

    Three.js--》實(shí)現(xiàn)3d地月模型展示

    目錄 項(xiàng)目搭建 初始化three.js基礎(chǔ)代碼 創(chuàng)建月球模型 添加地球模型 添加模型標(biāo)簽 今天簡(jiǎn)單實(shí)現(xiàn)一個(gè)three.js的小Demo,加強(qiáng)自己對(duì)three知識(shí)的掌握與學(xué)習(xí),只有在項(xiàng)目中才能靈活將所學(xué)知識(shí)運(yùn)用起來,話不多說直接開始。 項(xiàng)目搭建 本案例還是借助框架書寫three項(xiàng)目,借用vite構(gòu)建

    2024年02月07日
    瀏覽(99)
  • Three.js--》實(shí)現(xiàn)3d官網(wǎng)模型展示

    Three.js--》實(shí)現(xiàn)3d官網(wǎng)模型展示

    目錄 項(xiàng)目搭建 實(shí)現(xiàn)網(wǎng)頁簡(jiǎn)單布局 初始化three.js基礎(chǔ)代碼 創(chuàng)建環(huán)境背景 加載飛船模型 實(shí)現(xiàn)滾輪滑動(dòng)切換3D場(chǎng)景 設(shè)置星光流動(dòng)特效 今天簡(jiǎn)單實(shí)現(xiàn)一個(gè)three.js的小Demo,加強(qiáng)自己對(duì)three知識(shí)的掌握與學(xué)習(xí),只有在項(xiàng)目中才能靈活將所學(xué)知識(shí)運(yùn)用起來,話不多說直接開始。 項(xiàng)目搭建

    2024年02月06日
    瀏覽(101)
  • Three.js--》實(shí)現(xiàn)3d汽車模型展覽搭建

    Three.js--》實(shí)現(xiàn)3d汽車模型展覽搭建

    目錄 項(xiàng)目搭建 初始化three.js基礎(chǔ)代碼 添加汽車模型展示 動(dòng)態(tài)修改汽車模型 今天簡(jiǎn)單實(shí)現(xiàn)一個(gè)three.js的小Demo,加強(qiáng)自己對(duì)three知識(shí)的掌握與學(xué)習(xí),只有在項(xiàng)目中才能靈活將所學(xué)知識(shí)運(yùn)用起來,話不多說直接開始。 項(xiàng)目搭建 本案例還是借助框架書寫three項(xiàng)目,借用vite構(gòu)建工具

    2024年02月06日
    瀏覽(378)
  • Three.js--》實(shí)現(xiàn)3d圣誕賀卡展示模型

    Three.js--》實(shí)現(xiàn)3d圣誕賀卡展示模型

    目錄 項(xiàng)目搭建 初始化three.js基礎(chǔ)代碼 加載環(huán)境模型 設(shè)置環(huán)境紋理 添加水面并設(shè)置陰影效果 實(shí)現(xiàn)幽靈小球的運(yùn)動(dòng) 實(shí)現(xiàn)相機(jī)切換和文字切屏 實(shí)現(xiàn)漫天星星和愛心樣式 今天簡(jiǎn)單實(shí)現(xiàn)一個(gè)three.js的小Demo,加強(qiáng)自己對(duì)three知識(shí)的掌握與學(xué)習(xí),只有在項(xiàng)目中才能靈活將所學(xué)知識(shí)運(yùn)用起

    2024年02月06日
    瀏覽(101)
  • Three.js--》實(shí)現(xiàn)3d水晶小熊模型搭建

    Three.js--》實(shí)現(xiàn)3d水晶小熊模型搭建

    目錄 項(xiàng)目搭建 初始化three.js基礎(chǔ)代碼 加載背景紋理 加載小熊模型 今天簡(jiǎn)單實(shí)現(xiàn)一個(gè)three.js的小Demo,加強(qiáng)自己對(duì)three知識(shí)的掌握與學(xué)習(xí),只有在項(xiàng)目中才能靈活將所學(xué)知識(shí)運(yùn)用起來,話不多說直接開始。 項(xiàng)目搭建 本案例還是借助框架書寫three項(xiàng)目,借用vite構(gòu)建工具搭建vue項(xiàng)

    2024年02月06日
    瀏覽(100)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包