guansss / pixi-live2d-display

A PixiJS plugin to display Live2D models of any kind.
https://guansss.github.io/pixi-live2d-display/
MIT License
893 stars 137 forks source link

部位 opacity 无法归零 #105

Closed TillMac closed 1 year ago

TillMac commented 1 year ago

您好,非常感谢你的贡献,让我这个不怎麽熟 live2d 的小萌新得以用更快的速度上手,在这里感谢你!

最近需要透过代码操作的方式来变更不同部位的 opacity,好达到变更部位的视觉效果,我是使用 pixi ticker 的方式来将 PartArmAL 的 opacity 归零:

const ticker = new PIXI.Ticker();

ticker.add((delta) => {
    natori.internalModel.coreModel.setPartOpacityById('PartArmAL', 0);
    natori.internalModel.coreModel.update();
});

ticker.start();

但我发现,PartArmAL 这一部位的 opacity 并不会完全归零,而是会有残影的效果,透过 getPartOpacityById 的方式取得 PartArmAL 的现值,会发现并非为 0,我是将上方的代码改成这样发现的:

const ticker = new PIXI.Ticker();
ticker.add((delta) => {
    console.log(
        'before the set, PartArmAL Opacity: ',
        natori.internalModel.coreModel.getPartOpacityById('PartArmAL')
    );
    natori.internalModel.coreModel.setPartOpacityById('PartArmAL', 0);
    console.log(
        'after the set, PartArmAL Opacity: ',
        natori.internalModel.coreModel.getPartOpacityById('PartArmAL')
    );

    natori.internalModel.coreModel.update();
});

console.log 的内容为:

before the set, PartArmAL Opacity: 0.08332999
after the set, PartArmAL Opacity: 0

由于我对 live2d 还不熟稔,我担心是我的操作方式有误,不晓得有没有人有遇到类似问题,或者是能提点我该怎麽处理呢?

TillMac commented 1 year ago

目前找到另类的解决方法,如果想将 opacity 归 0 的话,那就直接将 natori.internalModel.coreModel.setPartOpacityById('PartArmAL', -0.083);,就可以完全消失了