Three.js中文网 Three.js中文网
首页
免费视频
系统课 (opens new window)
  • Three.js基础课程
  • Vue3+Threejs 3D可视化
  • Threejs进阶课程
  • 展厅3D预览漫游
  • Threejs Shader
  • Blender建模基础
  • Three.js基础课程(旧版本) (opens new window)
  • 文章
WebGPU教程
  • WebGL教程
  • WebGL教程(旧版本) (opens new window)
3D案例
  • 本站部署(打开快) (opens new window)
  • 原英文官网文档 (opens new window)
首页
免费视频
系统课 (opens new window)
  • Three.js基础课程
  • Vue3+Threejs 3D可视化
  • Threejs进阶课程
  • 展厅3D预览漫游
  • Threejs Shader
  • Blender建模基础
  • Three.js基础课程(旧版本) (opens new window)
  • 文章
WebGPU教程
  • WebGL教程
  • WebGL教程(旧版本) (opens new window)
3D案例
  • 本站部署(打开快) (opens new window)
  • 原英文官网文档 (opens new window)
Web3D系统课程视频
  • 展厅场景搭建

    • 1. 学前说明、展厅效果
    • 2. Blender查看展厅模型
    • 3. vue3+Vite +threejs
    • 4. 加载展厅gltf模型
    • 5. 发光属性emissive
    • 6. Blender设置发光属性
    • 7. 发光贴图.emissiveMap
    • 8. Blender自发光贴图
    • 9. Blender烘焙光照到贴图
    • 10. Blender烘焙全景图
    • 11. Blender设置环境贴图、涂层
    • 12. gui调试环境贴图
    • 13 .gui调节材质涂层
    • 14. threejs渲染曝光功能
    • 15. 展厅背景音乐
    • 16. 练习题-按钮开关背景音乐
    • 视频作为纹理贴图
      • 18. 色差问题—视频纹理颜色空间
      • 19. 展厅屏幕播放宣传视频
    • 展厅漫游

    • Vue+Threejs展厅
    • 展厅场景搭建
    郭隆邦
    2025-03-24
    目录

    视频作为纹理贴图

    # 17. 视频作为纹理贴图VideoTexture

    下面两节课:展厅中有一个屏幕需要展示宣传视频。

    我们需要先了解threejs一个知识点,把一个视频作为网格模型Mesh的纹理贴图。

    # HTML5视频元素video

    HTML5音频元素audio是用来播放音频文件的,视频元素video是用来播放视频文件的。

    // 创建一个audio对象
    const audio = document.createElement('audio');
    audio.src = './背景音乐.wav';//设置音频文件路径
    audio.loop = true;//循环播放
    audio.volume = 0.5;//音量大小0~1
    audio.play();//播放音频
    audio.pause();//暂停播放
    

    视频video和前面提到的音频audio方法或属性相似。

    // 创建视频video对象
    const video = document.createElement('video');
    video.loop = true;//循环播放
    video.src = "./医院宣传.mp4";//设置视频文件路径
    video.volume = 0.5;//音量大小0~1
    video.play();//播放视频
    video.pause();//暂停播放
    

    如果你想了解video更多属性或方法,可以查询html5相关文档。

    # 创建一个视频对象video

    在HelloWorld.vue文件创建一个视频对象video。

    const video = document.createElement('video');
    video.loop = true;//循环播放
    

    课件提供了一个mp4格式的视频文件医院宣传.mp4,你可以放到vue项目public文件下,然后设置视频的路径属性src即可。

    video.src = "./医院宣传.mp4";//设置视频文件路径
    

    # 把视频作为Mesh的颜色贴图.map

    随便创建一个矩形Mesh,用来测试视频作为纹理的功能。

    const geometry = new THREE.PlaneGeometry(4, 2);
    const material = new THREE.MeshBasicMaterial({
        color:0x00ffff
    });
    const mesh = new THREE.Mesh(geometry, material);
    mesh.position.y=1;
    
    twin.scene.add(mesh)
    

    把video对象,转化为纹理贴图,然后作为map属性的值。

    // video对象,转化为纹理贴图
    const texture = new THREE.VideoTexture(video);
    const material = new THREE.MeshBasicMaterial({
        map:texture
    });
    

    这时候,你可以看到视频作为纹理成功了,只是视频还没有播放。

    # 播放视频

    注意:有些浏览器有限制,不能直接代码video.play()自动播放音频,可以通过用户交互触发,比如鼠标点击事件,执行video.play()

    //鼠标事件触发视频播放
    addEventListener('mousedown', () => {
        video.play();
    });
    
    16. 练习题-按钮开关背景音乐
    18. 色差问题—视频纹理颜色空间

    ← 16. 练习题-按钮开关背景音乐 18. 色差问题—视频纹理颜色空间→

    Theme by Vdoing | Copyright © 2016-2025 豫ICP备16004767号-2
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式