guansss / pixi-live2d-display

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

能否隐藏或者显示模型的某一个部分? #64

Closed SyraTi closed 2 years ago

SyraTi commented 2 years ago

问题表现

我的模型目前似乎所有的手部都会展示。官方的WebSDK也是如此。

Q~4X_D}}S24Z~V 7ZOG~8YL

说明

我尝试了 https://github.com/DenchiSoft/CubismViewerGems 这个unity项目,发现似乎可以调整部件的透明度来隐藏不需要的手部。 image

请问本项目可以实现吗? 附上我使用的模型 ↓ object_live2d_002_101.asset.zip

guansss commented 2 years ago

隐藏部位一般是通过加载 pose 来实现的,另外也可以通过代码来实现,看你的例子应该是 Cubism 4,对应的函数是 model.internalModel.coreModel.setPartOpacityById(partId, opacity)

SyraTi commented 2 years ago

隐藏部位一般是通过加载 pose 来实现的,另外也可以通过代码来实现,看你的例子应该是 Cubism 4,对应的函数是 model.internalModel.coreModel.setPartOpacityById(partId, opacity)

感谢,通过代码确实能够隐藏了,但是我看到一些motions3.json的Curves字段中也包含了PartOpacity类似的内容,是否motion中定义了PartOpacity,但是没有识别呢?

// 文件路径 /motions/LIVE2D_002_101_20.motion3.json 302:18
[{
      "Target": "PartOpacity",
      "Id": "PartRightHand07",
      "Segments": [
        0,
        0,
        0,
        0.02,
        0
      ]
    },
    {
      "Target": "PartOpacity",
      "Id": "PartRightHand06",
      "Segments": [
        0,
        0,
        0,
        0.02,
        0
      ]
    },
    {
      "Target": "PartOpacity",
      "Id": "PartRightHand05",
      "Segments": [
        0,
        1,
        0,
        0.02,
        1
      ]
    }
]

我不知道您说的pose是否和motion3.json有关? 抱歉虽然我觉得这个应该是Live2D sdk的内容,但是我没有太多l2d的基础,希望能得到帮助解决一下 感谢

SyraTi commented 2 years ago

57 可能和这个issue是相同的问题,有没有解决方案呢?

SyraTi commented 2 years ago

https://github.com/guansss/CubismWebFramework/pull/1 我看到这个pr有被merge, 但是似乎我的Curves.PartOpacity好像还是没有正常工作?

SyraTi commented 2 years ago

看起来是submodule没有更新导致的, 更新了submodule,提交了pr #65

guansss commented 2 years ago

看起来是submodule没有更新导致的, 更新了submodule,提交了pr #65

确实没有更新,因为我在等这个 pr 得到解决:https://github.com/Live2D/CubismWebFramework/pull/11

之前我也觉得这是个 bug,于是接受了 submodule 那边的 pr,但 live2d 的官方认为不是 bug(虽然我不太认同官方的解释),所以取决于最终的处理结果,那个 pr 有可能需要回退,和官方行为保持一致

SyraTi commented 2 years ago

看起来是submodule没有更新导致的, 更新了submodule,提交了pr #65

确实没有更新,因为我在等这个 pr 得到解决:Live2D/CubismWebFramework#11

之前我也觉得这是个 bug,于是接受了 submodule 那边的 pr,但 live2d 的官方认为不是 bug(虽然我不太认同官方的解释),所以取决于最终的处理结果,那个 pr 有可能需要回退,和官方行为保持一致

好的了解了 看了官方的文档 给模型添加Pose解决了 感谢你的解答!

SyraTi commented 2 years ago

这个Issue和关联的PR我就一起关闭了

eipip1e0 commented 2 years ago

看起来是submodule没有更新导致的, 更新了submodule,提交了pr #65

确实没有更新,因为我在等这个 pr 得到解决:Live2D/CubismWebFramework#11

之前我也觉得这是个 bug,于是接受了 submodule 那边的 pr,但 live2d 的官方认为不是 bug(虽然我不太认同官方的解释),所以取决于最终的处理结果,那个 pr 有可能需要回退,和官方行为保持一致

在别的分支找到了和我一样的修改🤦‍♂️,还是2020年。[Fix] Part Opacity Motion 官方的解释我也不太认同,只能认为是一种规范吧,但是这种规范对于某些缺少pose文件的模型是一种麻烦。😣

TillMac commented 1 year ago

您好打扰了,我本身没有太多的 live2d 基础,虽然可以透过 setPartOpacityById 来调整部位的透明度,但我更希望能透过加载 pose 来调整部位透明度,并达到切换部位的效果。

首先,我确定我的 model 有 pose3.json 档案,但我不确定我该怎么样加载 pose 呢?

目前觉得应该是透过 doFade() 这一函数来进行加载,不晓得我的理解有没有错呢?但我实在不是很确定该函数中的 beginIndex 是要填入 _partGroups 的 index 吗?而 partGroupCount 要放什么,不晓得各位大神能否提点一下呢?

guansss commented 1 year ago

@TillMac pose 是根据 model3.json 的定义来加载的,如果里面有定义,在 Live2DModel.from() 的时候就会自动加载

TillMac commented 1 year ago

原来是我理解错误,谢谢你快速回复我!