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.Three.js快速入门

  • 2.几何体BufferGeometry

  • 3.模型对象、材质

    • 1. 三维向量Vector3与模型位置
      • 2. 欧拉Euler与角度属性.rotation
      • 3. 模型材质颜色(Color对象)
      • 4. 模型材质父类Material
      • 5. 模型材质和几何体属性
      • 6. 克隆.clone()和复制.copy()
    • 4.层级模型

    • 5.顶点UV坐标、纹理贴图

    • 6.加载外部三维模型(gltf)

    • 7.PBR材质与纹理贴图

    • 8.渲染器和前端UI界面

    • 9.生成曲线、几何体

    • 10.相机基础

    • 11.光源和阴影

    • 12.精灵模型Sprite

    • 13.后处理EffectComposer

    • 14.射线拾取模型

    • 15.场景标注标签信息

    • 16.关键帧动画

    • 17.动画库tween.js

    • Three.js教程
    • 3.模型对象、材质
    郭隆邦
    2023-01-20
    目录

    1. 三维向量Vector3与模型位置

    # 三维向量Vector3与模型位置、缩放属性

    点模型Points、线模型Line、网格网格模型Mesh等模型对象的父类都是Object3D (opens new window),如果想对这些模型进行旋转、缩放、平移等操作,如何实现,可以查询Threejs文档Object3D (opens new window)对相关属性和方法的介绍。

    # 三维向量Vector3

    三维向量Vector3有xyz三个分量,threejs中会用三维向量Vector3表示很多种数据,本节课提到的比较简单,就是位置.position和缩放.scale属性。

    查看three.js文档你可以知道Vector3对象具有属性.x、.y、.z,Vector3对象还具有.set()等方法。

    //new THREE.Vector3()实例化一个三维向量对象
    const v3 = new THREE.Vector3(0,0,0);
    console.log('v3', v3);
    v3.set(10,0,0);//set方法设置向量的值
    v3.x = 100;//访问x、y或z属性改变某个分量的值
    

    # 位置属性.position

    // 位置属性.position使用threejs三维向量对象Vector3表示的
    console.log('模型位置属性.position的值', mesh.position);
    

    模型位置.position属性用一个三维向量表示,那意味着,以后你想改变位置属性,就应该查询文档Vector3。

    这里之所以强调这一点,课程目的不单单是给你介绍具体的知识点,也是在引导你学会查文档,降低记忆压力。

    # 改变位置属性

    通过模型位置属性.position可以设置模型在场景Scene中的位置。模型位置.position的默认值是THREE.Vector3(0.0,0.0,0.0),表示坐标原点。

    设置网格模型y坐标

    mesh.position.y = 80;
    

    设置模型xyz坐标

    mesh.position.set(80,2,10);
    

    # 平移

    执行.translateX()、.translateY()等方法本质上改变的都是模型的位置属性.position。

    网格模型沿着x轴正方向平移100,可以多次执行该语句,每次执行都是相对上一次的位置进行平移变换。

    // 等价于mesh.position = mesh.position + 100;
    mesh.translateX(100);//沿着x轴正方向平移距离100
    

    沿着Z轴负方向平移距离50。

    mesh.translateZ(-50);
    

    沿着自定义的方向移动。

    //向量Vector3对象表示方向
    const axis = new THREE.Vector3(1, 1, 1);
    axis.normalize(); //向量归一化
    //沿着axis轴表示方向平移100
    mesh.translateOnAxis(axis, 100);
    

    # 缩放

    属性.scale表示模型对象的xyz三个方向上的缩放比例,.scale的属性值是一个三维向量对象Vector3,默认值是THREE.Vector3(1.0,1.0,1.0)。

    x轴方向放大2倍

    mesh.scale.x = 2.0;
    

    网格模型xyz方向分别缩放0.5,1.5,2倍

    mesh.scale.set(0.5, 1.5, 2)
    
    8. 旋转、缩放、平移几何体
    2. 欧拉Euler与角度属性.rotation

    ← 8. 旋转、缩放、平移几何体 2. 欧拉Euler与角度属性.rotation→

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