如何在THREE.JS中只沿一个方向缩放物体

3

我正在场景中添加一个立方体,希望改变它的高度,但当我增加其y坐标时,它也会在负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
        } 
    }
1个回答

1
你所期望的效果不能通过在 BoxGeometry 构造函数中定义特定的 height 参数来实现。
同时,通过调整网格的 scale 属性也无法达到预期的效果。在 y 轴上应用非均匀缩放将使网格沿着正和负 y 轴进行缩放。
解决问题的一种方法是对几何体的顶点进行位移。为此,你需要确定立方体相应侧面的角落顶点,然后更新缓冲属性中的数据。

2
谢谢。你帮了我,我找到了解决方案。 - Mirza Viraad Baig
1
@MirzaViraadBaig,你能分享一下解决方案吗?我知道已经过了一段时间.. - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接