vue3+three.js给glb模型设置视频贴图

1.在网上下载一个显示屏或者自己画一个,在blender中设置好显示屏的Mesh,UV设置好,这样方便代码中添加纹理贴图。可以让美术在建模软件中,先随机设置一张图片作为纹理,验证UV是否设置好

关于如何 在blender中给模型设置UV贴图百度很多的

typescript 复制代码
// 视频
import * as THREE from "three"
// 加载建筑模型
import {
  GLTFLoader
} from 'three/examples/jsm/loaders/GLTFLoader.js'
import {
  DRACOLoader
} from 'three/examples/jsm/loaders/DRACOLoader'
export function getVideo(th) {
  console.log('th', th) // this
  var that = th
  const loader = new GLTFLoader().setPath('/models/')
  const dracoLoader = new DRACOLoader()
  dracoLoader.setDecoderPath('/draco/')
  loader.setDRACOLoader(dracoLoader)
  loader.load("SP.glb", function (gltf) {
    gltf.scene.position.set(-50, 0, 90); // 模型位置
    gltf.scene.rotation.y = Math.PI; // 180度等于PI弧度
    gltf.scene.traverse(function (child) {
      console.log('child', child)
      child.castShadow = true;
      child.receiveShadow = true;
      // 下面的这几个判断,就是用来给模型添加视频的
      if (child.name === '显示屏') {
        let video = document.createElement('video');
        video.src = "/public/data/123.mp4";
        video.muted = true;
        video.autoplay = "autoplay";
        video.loop = true;
        video.play();
        const videoTexture = new THREE.VideoTexture(video);
        const videoMaterial = new THREE.MeshBasicMaterial({
          map: videoTexture
        });
        console.log('videoMaterial', videoMaterial)
        child.material = videoMaterial; 
      }
    });
    // 设置模型的大小
    const modelScale = 2.5; // 定义模型的缩放比例
    gltf.scene.scale.set(modelScale, modelScale, modelScale);
    that.scene.add(gltf.scene);
  });
}

结果

相关推荐
jason_yang9 分钟前
vue3中createApp多个实例共享状态
javascript·vue.js
_瑶瑶_10 分钟前
浅记一下ElementPlus中的虚拟化表格(el-table-v2)的简单使用
前端·javascript
拉不动的猪26 分钟前
Axios 请求取消机制详解
前端·javascript·面试
CV实验室1 小时前
CV论文速递:覆盖视频生成与理解、3D视觉与运动迁移、多模态与跨模态智能、专用场景视觉技术等方向 (11.17-11.21)
人工智能·计算机视觉·3d·论文·音视频·视频生成
Heo2 小时前
关于XSS和CSRF,面试官更喜欢这样的回答!
前端·javascript·面试
徐小夕2 小时前
耗时一周,我把可视化+零代码+AI融入到了CRM系统,使用体验超酷!
javascript·vue.js·github
5***a9753 小时前
React Native性能优化技巧
javascript·react native·react.js
A3608_(韦煜粮)3 小时前
深入理解React Hooks设计哲学与实现原理:从闭包陷阱到并发模式
javascript·性能优化·react·前端开发·react hooks·并发模式·自定义hooks
玉宇夕落3 小时前
🔁 字符串反转 × 两数之和:前端面试高频题深度拆解(附5种反转写法 + 哈希优化)
javascript
神秘的猪头3 小时前
🧱 深入理解栈(Stack):原理、实现与实战应用
前端·javascript·面试