vue中用three.js渲染gltf模型

安装three.js

npm install three --save

或者

yarn add three

此处使用的版本
“three”: “^0.154.0”,
“vue”: “^3.2.33”,

页面引入

import * as THREE from "three";
import {OrbitControls} from "three/examples/jsm/controls/OrbitControls";
import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader";
import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader';
var scene=null;
var camera=null;
var renderer=null;
var controls=null;
modelInitFun(){
        let _w="容器宽度";
        let _h="容器高度";
        //场景
        scene=new THREE.Scene();
        //相机
        camera=new THREE.PerspectiveCamera(75,_w/_h,0.1,5000);
        camera.position.z=50.602655301093874;
        camera.position.x=7.390108868949435;
        camera.position.y=50.123625707396773;
        //渲染器
        renderer=new THREE.WebGLRenderer({antialias:true});
        renderer.setClearColor('#f2f2f2');
        renderer.setSize(_w,_h);
        renderer.setAnimationLoop(this.render)
       //定向光源
        const directionalLight = new THREE.DirectionalLight(0xffffff, 10);
        directionalLight.position.set(10, 50, 80); // 设置光源位置
        scene.add(directionalLight);
		//添加坐标辅助
        scene.add(new THREE.AxesHelper(1000));

        let canvas=document.querySelector('.siteInspection');
        canvas.appendChild(renderer.domElement);
        controls=new OrbitControls(camera,renderer.domElement);
        controls.addEventListener('change',()=>{
          // console.log(camera.position)
          renderer.render(scene,camera)
        })

        // 创建DRACOLoader实例
        const dracoLoader = new DRACOLoader();
        dracoLoader.setDecoderPath('node_modules/three/examples/jsm/libs/draco/gltf/');//依赖包中Draco解码器的路径
        const loaderG = new GLTFLoader();
        loaderG.setDRACOLoader(dracoLoader);
        loaderG.load( '../static/2_1/2_1Floor.gltf', async function ( gltf ) {
          const model = gltf.scene;
          await renderer.compileAsync( model, camera, scene );
          scene.add(model);
        } );



      },
      render(){
        renderer.render(scene,camera);
        requestAnimationFrame(this.render)
      },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值