[Omniverse] [Unity] DisplayName

前回に引き続き。
今回は、Omniverse Unity Connectorを使用してUnityの日本語表記をUSDのDisplayNameに渡します。

以下の環境で確認しました。

Unity : 2022.3.6f1
Omniverse Unity Connector : 201.0.0 beta
Omniverse USD Composer : 2023.2.1 beta

Unityは、アセットやシーンのGameObject名として日本語を使用できます。
もし、GameObjectにUSDのPrim名で使用できる半角英数字と’_’以外の文字が含まれる場合、USDエクスポートしたときにDisplayNameにオリジナルのGameObject名を渡すようにしています。

これをUSDファイルにエクスポートし、USD Composerに読み込みました。

※ Environmentsを使って、背景を空模様に変更しました。

Unityで日本語を使用していた形状は、"GameObject_xx"という名前になっていました。
これは、「Prim名」です。
[Omniverse] USD Composerを日本語表示にする」の手順を参考にして、
USD Composerで日本語表示できるように設定を調整しておきましょう。

Stageウィンドウ右上のハンバーガーメニューより、"Show Display Names"をチェックしておきます。
これにより、表示名がUnityのGameObject名と同じになりました。

これはあくまでもUI上の表示名になり、DisplayNameの文字列は編集できない点にご注意くださいませ。

usdaファイルでのDisplayNameの記載

usdaファイルを保存してテキストエディタで見ると、以下のようになっていました。

def Xform "reizouko"
{
    matrix4d xformOp:transform = ( (1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (0, 0, 0, 1) )
    uniform token[] xformOpOrder = ["xformOp:transform"]

    def Xform "GameObject_1" (
        displayName = "パート"
    )
    {
        matrix4d xformOp:transform = ( (1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (0, 0, 0, 1) )
        uniform token[] xformOpOrder = ["xformOp:transform"]

        def Xform "GameObject_2" (
            displayName = "扉_上"
        )
    }
}

displayNameで日本語の名前が見えますね。
このときのusdaファイルはUTF-8の文字コードを使用しているのを確認できました。

Prim名は制限が強いですので、DisplayNameを有効に利用することで日本語コンテンツも扱いやすくなるかなと思っています。