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
    目录

    19. 展厅屏幕播放宣传视频

    # 展厅屏幕播放宣传视频

    接着前面视频纹理内容讲解,把宣传视频设置到展厅的屏幕模型上。

    # 建模注意:表示的屏幕的Mesh

    在建模时候,要注意,表示屏幕的网格模型要单独用一个Mesh表示,不要与别的模型合并在一起,要独立存在,这样方便后面通过代码设置纹理贴图。

    给表示屏幕的模型随便起个名字就行,方便代码中获取,课程中命名电视。

    twin.loader.load('./展厅.glb', function (gltf) {
        twin.scene.add(gltf.scene)
        // 代码中获取表示屏幕的模型
        const planeMesh = gltf.scene.getObjectByName('电视');
    })
    

    # Blender与threejs对接工作

    如果你对UV坐标有概念,应该明白UV坐标的值会影响图像纹理在网格模型上映射的效果。

    当然你不了解UV也没关系,美术通过Blender提供展厅模型的时候,用一张图片,刚好填充满表示屏幕的Mesh即可,注意图像纹理本身不用特别设置,只要设置好UV坐标就行。

    课程中展厅屏幕是一个矩形平面,如果是曲面平面,也一样可以适用。

    # 设置视频纹理

    宣传视频作为展厅屏幕的纹理。

    const video = document.createElement('video')
    video.loop = true
    video.src = './医院宣传.mp4'
    const texture = new THREE.VideoTexture(video)
    texture.colorSpace = THREE.SRGBColorSpace
    addEventListener('mousedown', () => {
        video.play()
    })
    
    twin.loader.load('./展厅.glb', function (gltf) {
        twin.scene.add(gltf.scene)
        // 代码中获取表示屏幕的模型
        const planeMesh = gltf.scene.getObjectByName('电视');
        // 宣传视频作为展厅屏幕的纹理    
        planeMesh.material = new THREE.MeshBasicMaterial({
            map:texture
        })
    })
    

    # 纹理属性.flipY

    执行上面代码,你可以看到视频的方向上下颠倒了,你可以修改.flipY默认值解决。

    texture.flipY=false;//颠倒视频上下方向
    
    18. 色差问题—视频纹理颜色空间
    1. 第一、三人称漫游(碰撞检测)

    ← 18. 色差问题—视频纹理颜色空间 1. 第一、三人称漫游(碰撞检测)→

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