新しいLive2D公式コミュニティ(日本向け)が公開されました!
ぜひご利用ください!
Live2D公式コミュニティ

■このコミュニティの今後について
このコミュニティ(forum.live2d.com)につきましては、しばらくの間新コミュニティと並行して運営しますが、2023年夏ごろを目処に方針を決定する予定です。
(2022/12/27追記 2022年内を目処に閉鎖 から変更しております)
内容については決定次第お知らせいたします。
海外向けコミュニティについては変更ございません。
Live2Dに関するユーザーのみなさま同士の交流・ご質問・不具合の報告・提案・要望などについて是非お寄せください。
※Live2D公式スタッフからの発言や回答については確約できないことを予めご了承ください。

Live2D ヘルプ

Cubism Editorダウンロード / 動作環境
Cubism SDKダウンロード / 対応表
Cubism 製品利用ライセンス(SDK含)

Cubism 製品のライセンスについてのお問い合わせはこちら
nizima 及び nizima 製品についてのお問い合わせはこちら
【各最新OSの対応状況について】
Cubism Editorは 4.1.02 正式版以降でWindows 11 及び macOS Monterey に対応しております。ぜひ最新版をご利用ください。
※macOSをお使いの方でOSアップデートする際は必ずCubism Editorのライセンスを解除してください。
Cubism EditorをインストールしているmacOSをアップグレードしたい
Cubism SDKについては各SDKのREADMEまたはNOTICEをご確認ください。

【Mac各機種への対応状況について】
現在、Cubism EditorはApple M1チップ搭載機種には対応しておりません。
詳細は 動作環境 をご参照ください。
関連するお問い合わせへの対応はこの文章をもって代えさせていただきます。
Cubism 製品のマニュアル・チュートリアルはこちら
 
Cubism Editorマニュアル    Cubism Editorチュートリアル    Cubism SDKマニュアル    Cubism SDKチュートリアル

Cubism 2.0 SDKのcocos2d-xでの動作報告

cocos2d-x3.2でSDKを試させていただきました。
win32とiPhone5、AndroidのAQUOS PHONE CL(IS17SH)で
サンプルプロジェクトの動作確認ができました。

iPhone5

AQUOS PHONE CL


しかし、AndroidのArrowsZ(ISW13F)で、テクスチャが重なる部分の
表示がおかしくなる現象が発生しています。
cocos2d-x3.0でも確認してみましたが、見た目が多少変わるものの、
やはり現象発生するようです。

ArrowsZ cocos2dx3.2

ArrowsZ cocos2dx3.0


AQUOS PHONEとArrowsZで同じコードを使っているため、
Android実機側の問題ではないかと考えているのですが、
コード側でも、まだ何か試してみた方が良いことはあるでしょうか?
(Zバッファやアルファ周りの関数を有効/無効にする、など)

AndroidOSのバージョンは、ArrowsZが4.0.3でAQUOS PHONEが4.0.4です。
何か分かることがありましたら、ご教授お願い致します。

コメント

  • 3.2でも動作するんですね!
    動作報告ありがとうございます、僕も試してみます。

    コード側で、試してみた方が良いことですが、
    もしかしたら以下を試すと何か変わるかもしれません。
    setPremultipliedAlpha
    setPartsOpacity

    APIリファレンス
    http://doc.live2d.com/api/core/cpp2.0j/
  • ごめんなさい、setPartsOpacityはあんまり関係ないかもしれません。
  • 動作報告ありがとうございます。
    ArrowsZでの動作については確認してみます。
    こちらでは動作確認はLGL22(Android4.4.2)やいくつかのNexus系で行いましたが、不具合は確認できなかったので実機固有の問題かと思われます。
  • Scirocco-Cloud ( http://www.scirocco-cloud.com/) を使って、
    ARROWS Z ISW13F AndroidOS 4.0.3で確認しましたが同様の現象を確認しました。

    先ほど紹介したsetPremultipliedAlphaの設定を変えましたが解決できませんでした。
  • 再現確認ありがとうございます。お手数おかけします。
    setPremultipliedAlphaに関して、こちらでも試してみましたが、
    やはり現象発生してしまいました。
    今後、SDKを触っていく上で、改善につながりそうな条件を見つけたときは
    またご報告させていただこうと思います。よろしくお願い致します。
  • 別件の調べ物でandroidをいくつか調達しましたので、追加で動作確認をしてみました。
    全てcocos2d-x3.2です。

    ArrowsZ(ISW11F) android2.3.5

    こちらもArrowsZですが、現象発生していたISW13FではなくISW11Fです。

    GalaxySII(ISW11SC) android2.3.6


    GALAPAGOS(EB-W51GJ) android2.3.3


    MOTOROLA PHOTON(ISW11M) android2.3.4


    結果、MOTOROLA PHOTONでも現象発生しております。
    ISW13Fとの共通点はプロセッサにNVIDIAのTegraを積んでいるところだと思われます。
    (Live2D様の方でご確認されたNexusに、Nexus7(2012)はあったでしょうか?
     あった場合はNexus7(2012)もTegraなので、原因は別となりそうです・・・)

    プロセッサの種類の確認は以下を参考にさせていただきました。
    http://dench.flatlib.jp/opengl/devicelist

    以上、取り急ぎご報告まで。
  • 報告ありがとうございます !
    非常に助かります !

    Nexus7(2012)(Android4.2.1)は実機で検証したのですが、正常に動くんですよね…
    こちらでもTegraがあやしいとは考えたのですが、さらに条件がありそうです。

    現在、以下のページなどを参考にしてOpenGLの細かい違いなどを確認中です。
    http://delphigl.de/glcapsviewer/gles_listreports.php

  • こちらでもNexus7(2012)と、Optimus Xが調達できたので動作確認をしてみました。

    Nexus7(2012) Android4.2.2


    Optimus X(IS11LG) Android4.0.4


    Optimus XもTegra250なのですが、正常に動作いたしました。
    Tegraが原因かなと思っていたのですが、外しているかも知れません・・・
    また何か分かりましたらご報告させていただきます。
  • 憶測ですみません。Tegra用とそれ以外でシェーダを分けているのではないかと思うのですが、
    ISW13FやISW11MでもGL_NV_shader_framebuffer_fetchが宣言されている方の
    処理に入っていないように見えます。
    (宣言されていない方の処理をバイナリ上で変更するとTegra系でも反映されます)

    GL_NV_shader_framebuffer_fetchの拡張を持っているかは以下の処理を試し、
    ISW13F、ISW11M、Nexus7、IS11LGでサポートされていることを確認しました。

    char *exts = (char*)glGetString(GL_EXTENSIONS);
    if(strstr(exts, "GL_NV_shader_framebuffer_fetch ")){
    //サポートしている
    }else{
    //サポートしていない
    }

    以上から、Tegra用の処理自体ではなく、その前の分岐部分に何かあるのではと思います。
    憶測を重ねた書き込みになってしまい申し訳ありません。
    また内部の挙動に関しているので、問題あれば管理者権限での投稿の削除をお願いします。
  • 情報提供ありがとうございます。
    確認してみます。
  • お返事遅くなりましたが、SDK2.0.01である程度対応しました。

    >Tegra用とそれ以外でシェーダを分けているのではないかと思うのですが
    現状ではハードウェアによってシェーダは分けていません。どうやら分ける必要がありそうですね。

    そのためSDK2.0.01で、シェーダを切り替える関数を用意しました。

    勝手に切り替えずにAPIを用意したのは、Live2Dライブラリ内のブラックボックスで、ハードウェア情報を読み取ってシェーダを切り替えるのは設計上好ましくないと考えたためです。
    これはこれで面倒くさいと言われそうですが…

    DrawParam_AndroidES2::setExtShaderModeで設定できます。
    trueにすると、こちらで試した範囲では、今までうまくいかなかったものは正常に表示されることを確認しました。
    逆にうまくいっていた機種では、設定しないかfalseにしておく必要があります。
    // インクルードを追加
    #include "graphics/DrawParam_AndroidES2.h"

    // Live2D初期化時
    // うまくいかない機種では以下の処理でOK
    DrawParam_AndroidES2::setExtShaderMode(true);

    とりあえずこれでいかがでしょうか?
  • アップデートありがとうございます。SDKの2.0.01を試させていただきました。
    ISW13FとISW11Mで出ていた現象は再現しなくなりました。

    ただ、別件で(これは自分が乗算済みアルファについてよく分かっていないからかも
    知れないのですが)、setExtShaderMode()をtrueにすると、setPremultipliedAlpha()が
    効かなくなるような見え方をしています(パーツの境目に薄く線が出ます)。
    以前のバージョンや、今回のバージョンでもsetExtShaderMode()を使わないときは、
    setPremultipliedAlpha()がfalseのときはどの機種でも(Androidに限らずWin32版でも)
    境目の線が出ており、setPremultipliedAlpha()をtrueにしたときは境目の線は消えていました。
    cocos2d-xのデフォルト画像の上に描画しているのですが、何か相性が悪いのでしょうか・・・?

    ・ISW13F



    setPremultipliedAlpha()の件以外に関しては、Tegra系のIS11LGやNexus7(2012)、
    Tegra以外のIS14SH、IS17SH、ISW11SC、ISW11F、IS11NEB-W51GJで
    問題なく動作することを確認できました。

    >現状ではハードウェアによってシェーダは分けていません
    こちらの勘違いでお騒がせしました。大変失礼致しました。大暴投でした。
  • 報告ありがとうございます。
    すいません。乗算済みアルファの設定は見逃していました。
    次回更新(早ければ来週くらい?)で対応できそうです。
  • バージョン2.0.03で更新しました。

    Androidの場合はシェーダ設定時にPremultiplied Alphaの設定をするようにしました。
    設定方法は以下のページを御覧ください。

    https://sites.google.com/a/cybernoids.jp/cubism2/sdk_tutorial/platform-setting/cocos2d-x/setextshadermode

    こちらで確認できるだけは確認しましたが、もしうまくいかなければ教えて下さい。
    t_takasaka (Staff)
  • バージョン2.0.03を試させていただき、現象が再現しなくなることを確認しました。

    Tegra系(ISW13F、ISW11M、IS11LG)に関して、setExtShaderMode()の第一引数をtrue固定、
    第二引数とsetPremultipliedAlpha()をtrueとfalseで各指定したところ、
    乗算済みアルファを有効にしたときに境目の線がでることはなく、
    また、乗算済みアルファを無効にしたときも(境目の線はでますが)、
    特に表示がおかしくなるようなことはありませんでした。

    Tegra系以外に関しても、ISW11F、ISW11SC、IS17SH、IS14SH、EB-W51GJで、
    特にデグレード等がないことが確認できました。
    ご対応ありがとうございました。
コメントするにはサインインまたは登録して下さい。