当前位置: 首页 >  网站大师 >  Three.js教程:对象克隆、复制

Three.js教程:对象克隆、复制

导读:推荐:将 NSDT场景编辑器 加入你的3D工具链.其他系列工具: NSDT简石数字孪生.对象克隆.clone()和复制.copy().Threejs大多数对象都有克隆.clone()和复制.copy()两个方法,点模型Points、线模型Line、网格网格模型Mesh一样具有这两

推荐:将 NSDT场景编辑器 加入你的3D工具链

其他系列工具: NSDT简石数字孪生

对象克隆.clone()和复制.copy()

Threejs大多数对象都有克隆.clone()和复制.copy()两个方法,点模型Points、线模型Line、网格网格模型Mesh一样具有这两个方法。

复制方法.copy()

A.copy(B)表示B属性的值赋值给A对应属性。

var p1 = new THREE.Vector3(1.2,2.6,3.2);
var p2 = new THREE.Vector3(0.0,0.0,0.0);
p2.copy(p1)
// p2向量的xyz变为p1的xyz值
console.log(p2);

克隆方法.clone()

N = M.clone()表示返回一个和M相同的对象赋值给N。

var p1 = new THREE.Vector3(1.2,2.6,3.2);
var p2 = p1.clone();
// p2对象和p1对象xyz属性相同
console.log(p2);

网格模型复制和克隆

网格模型复制克隆和三维向量基本逻辑是相同,但是注意三维向量Vector3.x.y.z属性值是数字,也就是说是基本类型的数据,对于网格模型而言,网格模型对象的几何体属性mesh.geometry和材质属性mesh.material的属性值都是对象的索引值。

var box=new THREE.BoxGeometry(10,10,10);//创建一个立方体几何对象
var material=new THREE.MeshLambertMaterial({color:0x0000ff});//材质对象


var mesh=new THREE.Mesh(box,material);//网格模型对象
var mesh2 = mesh.clone();//克隆网格模型
mesh.translateX(20);//网格模型mesh平移

scene.add(mesh,mesh2);//网格模型添加到场景中

缩放几何体box,你可以发现上面代码中的两个网格模型的大小都发生了变化,因为网格模型克隆的时候,mesh对象的几何体对象mesh.geometry属性值是box对象的索引值,返回的新对象mesh2几何体属性mesh.geometry的值同样是box对象的索引值。

box.scale(1.5,1.5,1.5);//几何体缩放

注意

通过本节课的学习,对Threejs不同对象的克隆.clone()和复制.copy()方法有一个大致印象即可。

实际开发的时候,注意不同对象的复制或克隆方法可能稍有区别,使用的时候最好通过代码测试,或者直接查看threejs源码某个类对.clone().copy()封装,这样更为直观清楚。

几何体复制和克隆

几何体克隆或复制和网格模型在属性值深拷贝、浅拷贝方面有些不同,比如几何体的顶点属性Geometry.verticesGeometry.vertices的属性值是一个数组对象,但是复制或克隆的时候,不是获得对象的索引值,而是深拷贝属性的值,可以在threejs源码Geometry.js全文检索copy: function关键词,找到该类对copy方法的封装细节。

3D建模学习工作室

上一篇:Three.js教程:模型对象旋转平移缩放变换 (mvrlink.com)

下一篇:Three.js教程:常见光源类型 (mvrlink.com)

内容
  • Qt-FFmpeg开发-打开本地摄像头录制视频(7)
    Qt-FFmpeg开发-打开本地
    2023-12-05
    音视频/FFmpeg #Qt.Qt-FFmpeg开发-打开本地摄像头录制视频【软解码+ OpenGL显示YUV】.目录.
  • 一种新的告警收敛方式“先知预警”,为您的系统健康护航
    一种新的告警收敛方式“先知预警”
    2023-12-08
    前言.简介.买基金,上京东.基金交易系统是用户使用京东金融APP进行基金交易的核心支撑系统,每天有数十亿元的交易额。.在
  • 4.10 x64dbg 反汇编功能的封装
    4.10 x64dbg 反汇编功
    2023-12-06
    LyScript.插件提供的反汇编系列函数虽然能够实现基本的反汇编功能,但在实际使用中,可能会遇到一些更为复杂的需求,此
  • 如何在unity中手写一个四叉树地形lod系统(二)
    如何在unity中手写一个四叉树
    2023-12-07
    在根据四叉树节点创建了1365个地形分块网格并保存到本地后,我们接下来要在游戏运行的过程中动态地显示所需的网格,这是最关
  • windows 网络模拟工具分享
    windows 网络模拟工具分享
    2023-12-02
    【下载地址】.Releases · jagt/clumsy · GitHub.【介绍】.无需安装.无需篡改和代理.系统级
  • 常用的 http 状态码有哪些?
    常用的 http 状态码有哪些?
    2023-12-08
    在我们进行网页,网址的访问过程中,http,https.都是我们主要使用到的协议,在使用这协议的时候,对于他的协助状态,