(3D)在缩放时保持对象的一致性

问题描述 投票:1回答:1

我正在做一个3D怪物创造者,我已经添加了一种组合部件的方法,并且已经解决了所有的纠结,除了缩放。我通过简单地设置一个标志来组合modelInstances,将它们添加到嵌套的arraylists中,并在用户改变一个组合实例时使用if语句进行for循环。当缩放时,对象保持静止不动,但当在一个组中时,我需要它们移动一定的数量以保持形状一致。

目前,这是我的缩放方法。

switch (modelInstance[i].currentFlip) {
            case 0:
                modelInstance[i].scale.add(0.01f);
                break;
            case 1:
                modelInstance[i].scale.add(-0.01f, 0.01f, 0.01f);
                break;
            case 2:
                modelInstance[i].scale.add(-0.01f, -0.01f, 0.01f);
                break;
            case 3:
                modelInstance[i].scale.add(0.01f, -0.01f, 0.01f);
                break;
        }
        modelInstance[i].transform.set(modelInstance[i].basePosition, modelInstance[i].baseRotation, modelInstance[i].scale);

为了说明问题,这里有一段视频说明发生了什么。https:/youtu.bekLjlcMVKAR0 我希望组合对象的形状在其大小的情况下保持一致,这应该通过改变单个对象的定位来实现。我知道单个对象的位置,组合对象的位置,对象的当前比例,以及单个对象的边界框,以获得准确的尺寸。

3d libgdx scaling
1个回答
0
投票

我意识到,为了保持组合后的形状一致,同时改变单个对象的比例,我必须缩放从质量中心到单个对象的位置差异。

modelInstance[i].basePosition.set(centreMass.cpy().add(modelInstance[i].distanceFromCentreMass.cpy().scl(modelInstance[i].scale)));
© www.soinside.com 2019 - 2024. All rights reserved.