推薦:將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.vertices,Geometry.vertices的屬性值是一個陣列物件,但是復制或克隆的時候,不是獲得物件的索引值,而是深拷貝屬性的值,可以在threejs原始碼Geometry.js全文檢索copy: function關鍵詞,找到該類對copy方法的封裝細節,
上一篇:Three.js教程:模型物件旋轉平移縮放變換 (mvrlink.com)
下一篇:Three.js教程:常見光源型別 (mvrlink.com)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/553843.html
標籤:其他
上一篇:Java 集合類詳解(一)
下一篇:返回列表
