【问题标题】:(3D) keep objects aligned while scaling(3D) 在缩放时保持对象对齐
【发布时间】:2020-04-22 02:10:05
【问题描述】:

我正在制作一个 3D 怪物创建器,我添加了一种组合部件的方法,并解决了除缩放之外的所有问题。我通过简单地设置一个标志来组合模型实例,将它们添加到嵌套的数组列表中,并在用户更改组合实例时使用涉及 for 循环的 if 语句。缩放时,对象保持静止,但在组中时,我需要它们移动一定量以保持形状一致。

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

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.be/kLjlcMVKAR0 我希望组合对象的形状保持一致,尽管它有大小,这应该通过更改单个对象的位置来完成。我知道单个对象的位置、组合对象的位置、对象的当前比例以及单个对象的边界框,以获得准确的尺寸。

【问题讨论】:

    标签: 3d libgdx scaling


    【解决方案1】:

    我意识到,要在更改单个对象的比例时保持组合形状一致,我必须缩放从质心到单个对象的位置差异。

    modelInstance[i].basePosition.set(centreMass.cpy().add(modelInstance[i].distanceFromCentreMass.cpy().scl(modelInstance[i].scale)));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-15
      • 2019-10-25
      • 2016-12-27
      • 1970-01-01
      • 2015-02-12
      相关资源
      最近更新 更多