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系统课程视频
  • 0.学前说明

  • 1.Vue+Three.js基础

    • 1. Vite搭建Vue 3D开发环境
    • 2. Vite+Vue3引入threejs库
    • 3. Vue+threejs 3D案例—场景
    • 4. Vue+threejs 3D案例—相机
    • 5. Vue+threejs 3D案例—渲染器
    • 6. 动画渲染循环
    • 7. 平行光光源与材质
    • 8. 相机控件OrbitControls
    • 9. 渲染器设置(全屏、锯齿等)
    • 10. Canvas插入vue3组件(ref方式)【选修】
    • 2.场景搭建Three+Blender

    • 3.渲染效果提升(材质光照)

    • 4.渲染性能、模型压缩

    • 5.封装、进度条、切视角

    • js 3D可视化
    • 1.Vue+Three.js基础
    郭隆邦
    2024-03-07
    目录

    10. Canvas插入vue3组件(ref方式)【选修】

    # Canvas插入vue3组件(ref方式)【选修】

    这节课给大家演示通过Vue3 ref方式把threejs的canvas画布嵌入到某个vue组件中。

    本节课属于扩展选修内容,如果你暂时用不到,跳过也行。

    # Vue3 ref方式获取div元素

    在原生HTML中,咱们一般可能会通过DOM节点的id、name之类获取HTML元素。

    vue2、vue3都提供了ref的功能,来获取某个vue组件中的元素,下面说下vue3通过ref标记获取HTML元素方式

    <!-- HelloWorld.vue组件 -->
    <script setup>
    import { ref } from 'vue'
    const webgl = ref(null);
    </script>
    <template>
      <div ref="webgl"><!-- 想在这里插入threejs canvas画布 --></div>
    </template>
    

    # 获取canvas画布插入vue组件

    twin.js中threejs代码可以export一个webgl渲染器对象,方便在其它文件获取canvas画布。

    import * as THREE from 'three';
    const scene = new THREE.Scene();
    const camera = new THREE.PerspectiveCamera(30,width/height,1,3000);
    // WebGL渲染器
    const renderer = new THREE.WebGLRenderer();
    ...
    // 原来canvas直接插入body代码删除
    // document.body.appendChild(renderer.domElement);
    export default renderer;
    
    <script setup>
    import { ref } from 'vue'
    import { onMounted } from 'vue'
    
    import renderer from './twin.js';//获取到threejswebgl的渲染器对象
    const webgl = ref(null);
    onMounted(() => {
      //webgl.value:表示ref值为webgl的div元素
      webgl.value.appendChild(renderer.domElement);
    });
    </script>
    
    <template>
      <div ref="webgl"></div>
    </template>
    
    9. 渲染器设置(全屏、锯齿等)
    1. 3D建模软件搭建3D场景

    ← 9. 渲染器设置(全屏、锯齿等) 1. 3D建模软件搭建3D场景→

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