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

    6. 克隆.clone()和复制.copy()

    # 克隆.clone()和复制.copy()

    克隆.clone()、复制.copy()是threejs很多对象都具有的方法,比如三维向量对象Vector3、网格模型Mesh、几何体、材质。

    # 克隆.clone()

    克隆.clone()简单说就是复制一个和原对象一样的新对象,下面以三维向量对象Vector3给大家举例,其他的threejs对象都可以参照类似的写法。

    const v1 = new THREE.Vector3(1, 2, 3);
    console.log('v1',v1);
    //v2是一个新的Vector3对象,和v1的.x、.y、.z属性值一样
    const v2 = v1.clone();
    console.log('v2',v2);
    

    # 复制.copy()

    复制.copy()简单说就是把一个对象属性的属性值赋值给另一个对象,下面以三维向量对象Vector3给大家举例,其他的threejs对象都可以参照类似的写法。

    const v1 = new THREE.Vector3(1, 2, 3);
    const v3 = new THREE.Vector3(4, 5, 6);
    //读取v1.x、v1.y、v1.z的赋值给v3.x、v3.y、v3.z
    v3.copy(v1);
    

    # Mesh克隆.clone()

    通过mesh克隆.clone()一个和mesh一样的新模型对象mesh2。

    const mesh2 = mesh.clone();
    mesh2.position.x = 100;
    

    通过克隆.clone()获得的新模型和原来的模型共享材质和几何体

    // 改变材质颜色,或者说改变mesh2颜色,mesh和mesh2颜色都会改变
    // material.color.set(0xffff00);
    mesh2.material.color.set(0xffff00);
    

    # 几何体和材质克隆.clone()

    const mesh2 = mesh.clone();
    // 克隆几何体和材质,重新设置mesh2的材质和几何体属性
    mesh2.geometry = mesh.geometry.clone();
    mesh2.material = mesh.material.clone();
    // 改变mesh2颜色,不会改变mesh的颜色
    mesh2.material.color.set(0xff0000);
    

    # 练习:mesh.position.copy()

    改变mesh的位置,使之位于mesh2的正上方(y),距离100。

    mesh.position.copy(mesh2.position);//1. 第1步位置重合
    mesh.position.y += 100;//1. 第2步mesh在原来y的基础上增加100
    

    # 练习:mesh.rotation.copy()

    两个模型的姿态角度始终保持一样。

    // 渲染循环
    function render() {
        mesh.rotateY(0.01);// mesh旋转动画
        // 同步mesh2和mesh的姿态角度一样,不管mesh姿态角度怎么变化,mesh2始终保持同步
        mesh2.rotation.copy(mesh.rotation);
        renderer.render(scene, camera);
        requestAnimationFrame(render);
    }
    render();
    
    5. 模型材质和几何体属性
    1. Vector3与模型位置、缩放属性

    ← 5. 模型材质和几何体属性 1. Vector3与模型位置、缩放属性→

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