問題: 我正在尋找更新縮放後網格上的頂點位置。我這樣做是因爲我需要計算網格的體積。我正在創建一個克隆網格來完成此操作,因爲我需要在原始網格中將比例保持爲活動參數。three.js applyMatrix在比例結果中出錯
我是用在How to update vertices geometry after rotate or move object
與three.js所釋放出0.70工作得很好的答案,但上破發行0.72
我的代碼:
var volumeClone = new THREE.Mesh (this.mesh.geometry.clone(), new THREE.MeshBasicMaterial({ color: 0xff0000 }));
volumeClone.scale.z = heightScale;
volumeClone.updateMatrix();
volumeClone.geometry.applyMatrix(volumeClone.matrix);
volumeClone.matrix.identity();
volumeClone.geometry.verticesNeedUpdate = true;
volumeClone.scale.set(1, 1, 1);
console(calculateVolume(volumeClone));
結果:
Chrome中是:
遺漏的類型錯誤:無法讀取未定義 THREE.Geometry.computeBoundingBox 的特性 'setFromPoints' @ lib.min.js:3THREE.Geometry.applyMatrix
我曾嘗試: 我曾嘗試調查和隔離Geometry.js和Box3.js中的問題,並瞭解編程流程以瞭解爲什麼「this.boundBox」未定義,但我沒有找到問題。
問題: 語法是否正確?在這方面有沒有更新到three.js?
使用three.js,而不是three.min.js,用於開發。使用three.js的當前版本。嘗試追查問題。如果你有問題,發佈一個jsfiddle。 – WestLangley
好的,我做到了。我追溯到this.mesh.geometry.clone(),這似乎只複製faceVertexUvs,面,頂點和原型的問題。它不會複製Geometry.js中列出的幾何對象默認屬性?沒有名稱,類型,ID等,因此boundingBox未定義,這會導致Geometry.applyMatrix中的可見錯誤。我應該使用不同的克隆方法嗎? – Radio
@WestLangley順便說一句,克隆的類型是extrudeGeometry。我不確定這是否是問題的一部分。 – Radio