★お知らせ(2023/12/27)
いつもLive2D公式コミュニティをご利用いただき誠にありがとうございます。
本コミュニティは2023年12月27日 11:00をもって閉鎖いたしました。
今後の運営はすべて新Live2D公式クリエイターズフォーラムに移行します。
閉鎖に伴い、以下機能は利用不可となります。
・アカウントの新規作成
・トピック投稿、返信
たくさんのご利用誠にありがとうございました。

新Live2D公式クリエイターズフォーラムは以下バナーよりご利用いただけます。
Live2D公式クリエイターズフォーラム

なお、本コミュニティに投稿されたトピックはすべて残りますが、今後削除する可能性がございますので予めご了承ください。
閉鎖に関するお問い合わせにつきましてはLive2D公式クリエイターズフォーラムへご連絡ください。

ArtMeshのワールド座標の取得方法

下記のページを参考にさせて頂き、ArtMeshのワールド座標を取得しようとしているのですが
どうしてもローカル座標しか取得できません。
注意点などありましたらご教授願えませんでしょうか。
よろしくお願いします。

参考ページ
https://forum.live2d.com/discussion/1745/artmeshのワールド座標

・SDKバージョン Cubism 4 SDK for Unity R1

コメント

  • @gohhon さん

    提示していただいたディスカッションの回答は間違いです。大変申し訳ございません。
    CubismRenderer.Meshの頂点座標はローカル座標です。
    頂点座標からワールド座標を取得するには、GameObjectのTransformをかけ合わせる必要があります。
        Vector3 worldPosition = transform.TransformPoint(vertexPosition);
    Cubismの場合、CubismDrawableはツリーの子になるGameObjectにアタッチされるため、各親のTransformの結果も考慮する必要があります。


    それぞれのTransformを計算する方法も考えられますが、以下のように一度親子階層を解除してから上記の計算を行うとよろしいかと思われます。
        Vector3 vertexPosition = _cubismRenderer.Mesh.vertices[0];
        
        // 親子関係を解除
        Transform parent = transform.parent;
        transform.parent = null;
        
        // ワールド座標取得
        Vector3 worldPosition = transform.TransformPoint(vertexPosition);
        
        // 親を再設定
        transform.parent = parent;
コメントするにはサインインまたは登録して下さい。