簡體   English   中英

如何僅在一個方向上縮放 object THREE.JS

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM