[英]How to scale an object only in one direction THREE.JS
我正在向我的場景中添加一個立方體,我希望更改它的高度,但是當我增加它的 y 坐標時,它也會在 -ve y 中擴展。 除了 THREE.JS,我沒有使用任何其他庫
var cubeGeometry2 = new THREE.BoxGeometry(10, 25, 5);
var cubeMaterial2 = new THREE.MeshBasicMaterial({
color: '#5A5A5A',
wireframe: false
});
var cube3 = new THREE.Mesh(cubeGeometry2, cubeMaterial2);
console.log(cubeGeometry2)
cube3.position.set(25, 5.5, -12);
scene.add(cube3);
為了縮放立方體,我增加了盒子幾何構造函數中的 y 坐標
解決方案編輯
我認為我以最非常規的方式做到了,但這里是:
//First look into the vertices by
console.log(cubeGeometry2)
//Changed all the occurrences of Y vertices to +ve with looping in the vertices list
for(let i = 0;i < cube3.geometry.vertices.length;i++){
if(cube3.geometry.vertices[i].y < 0){
cube3.geometry.vertices[i].y = cube3.geometry.vertices[i].y * 0
}
}
您正在尋找的效果無法通過為BoxGeometry
的構造函數定義特定的height
參數來實現。
也不可能通過調整網格的scale
屬性來達到預期的結果。 沿 y 軸應用非均勻縮放將沿正負 y 軸縮放網格。
解決該問題的一種方法是置換幾何體的頂點。 為此,您必須識別立方體各邊的角頂點,然后更新緩沖區屬性中的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.