Kanzi 3.8 マイグレーションガイド

このマイグレーションガイドを使用して、Kanzi アプリケーションを Kanzi 3.7 から Kanzi 3.8 に更新してください。

アニメーションなしでのステート間の遷移

State Manager でアニメーションのないトランジションを使用する場合、Kanzi 3.8では State Manager が Transition Started および Transition Finished メッセージを送信します。アプリケーションがこれらのメッセージを受信しないことに依存している場合、アプリケーションを Kanzi 3.8にアップグレードする際に、この機能の変更を考慮してアプリケーションを修正してください。

スキンメッシュへの変更

Kanzi アプリケーションでスキンメッシュを使用している場合、アプリケーションを Kanzi 3.8 に移行する際に、メッシュデータとスケルトンノードの変換を更新してください。

Library の必要な項目のみを更新し、既存のプロパティの値を保持するには、fbx または dae ファイルからスキンメッシュをマージします。

  1. Library > Resource Files > 3D Assets でスキンメッシュを右クリックし、Merge 3D Asset File を選択します。3Dアセットのマージ を参照してください。

  2. Merge ツールで:

    1. スキンメッシュの横にあるチェックボックスを選択します。

      この方法で、メッシュデータを更新します。

    2. 既存の Kanzi Studio プロジェクトの変換と異なるスケルトンノードを選択します。

    3. Merge ツールで Resolve to source をクリックし、次に Merge をクリックします。

    マージ後、インポートされた Scene ノードに対するプロパティの追加や値の変更などの変更がそのままであることを確認してください。

  3. マージしたスキンメッシュに使用するマテリアルの頂点シェーダー内で、スキニングを計算するシェーダーの部分を、Kanzi 3.6.8で機能するコードに置き換え、Shader Source Editor で Save をクリックします。

    たとえば、置き換えます

    localToSkinMatrix = kzWorldMatrix * localToSkinMatrix;
    
    vec4 positionWorld = localToSkinMatrix * vec4(kzPosition.xyz, 1.0);
    vViewDirection = positionWorld.xyz - kzCameraPosition;
    vec4 Norm = mat4(localToSkinMatrix[0],
                     localToSkinMatrix[1],
                     localToSkinMatrix[2],
                     vec4(0.0, 0.0, 0.0, 1.0)) * vec4(kzNormal.xyz, 0.0);
    vN = normalize(Norm.xyz);
    gl_Position = kzProjectionCameraWorldMatrix * vec4(positionWorld.xyz, 1.0);
    

    以下に置き換えます。

    mat4 localToWorldMatrix = kzWorldMatrix * localToSkinMatrix;
    
    vec4 positionWorld = localToWorldMatrix * vec4(kzPosition.xyz, 1.0);
    vViewDirection = positionWorld.xyz - kzCameraPosition;
    vec3 V = normalize(vViewDirection);
    vec4 Norm = mat4(localToWorldMatrix[0],
                     localToWorldMatrix[1],
                     localToWorldMatrix[2],
                     vec4(0.0, 0.0, 0.0, 1.0)) * vec4(kzNormal.xyz, 0.0);
    vN = normalize(Norm.xyz);
    gl_Position = kzProjectionCameraWorldMatrix * localToSkinMatrix * vec4(kzPosition.xyz, 1.0);
    

ハードウェアキー処理の変更

ハードウェアキー入力を処理するには、キーマニピュレーターを使用する必要があります。Kanzi 3.8では、Key Up メッセージが Key Pressed および Key Released メッセージに置き換えられます。

Kanzi Studio でプロジェクトを開くと、Kanzi Studio は Key Down と Key Up メッセージを Key Pressed と Key Released メッセージに自動的に変換し、条件にキーが存在するメッセージのノードに Key Manipulator トリガーを追加します。ただし、Kanzi Studio は、条件に等号を使用する Key Down と Key Up メッセージのみを自動的に変換します。これらのメッセージの条件で等号以外の操作を使用している場合は、そのようなキー操作をすべて手動で変換する必要があります。

フォーカスの変更

Screen ノードは、フォーカスチェーンナビゲーション機能を提供するフォーカススコープではなくなりました。プロジェクトでフォーカスチェーンナビゲーションを使用するには、次の手順を実行してください。

  1. Screen ノードの下にある最初のノード、またはフォーカスナビゲーションを使用したいノードを、フォーカスグループまたはフォーカスフェンスに設定します。

  2. そのノードに対して Focusable プロパティを有効にします。

フォーカス を参照してください。

フォントの変更

  • Font クラスを FontRuntime に名前変更し、これによりフォントスタイルも保持するようになりました。この結果、TextFormat、TextLayouter、および TextShaper は、Font の代わりに FontRuntime を取るようになりました。

  • Node::FontProperty を削除し、その機能を次のように置き換えました:

    • Node::FontFamilyProperty

    • FontStyleConcept::WeightProperty

    • FontStyleConcept::StyleProperty

  • これらのプロパティを TextBlockConcept から FontStyleConcept クラスに移動し、名前を変更しました。

    Kanzi 3.7

    Kanzi 3.8

    TextBlockConcept::FontSizeProperty

    FontStyleConcept::SizeProperty

    TextBlockConcept::CharacterSpacingProperty

    FontStyleConcept::CharacterSpacingProperty

    TextBlockConcept::FixedCharacterWidthProperty

    FontStyleConcept::FixedCharacterWidthProperty

    TextBlockConcept::LineSpacingProperty

    FontStyleConcept::LineSpacingProperty

  • FontManager クラスにこれらの変更を加えました。

    • Kanzi 3.8で導入された FontManager::getRuntimeFont の機能で FontManager::createFont を置き換えました。

    • FontManager::getFontFamily を削除しました。フォントファミリは ResourceManager からリソースとして取得できます。

    • FontManager::createFontFamily を削除しました。代わりに FontFamily::create を使用してください。

  • これらの関数を TextFormat クラスおよび TextLayouter クラスから FontStyleDefinition クラスに移動しました。

    Kanzi 3.7

    Kanzi 3.8

    TextFormat::setLineSpacing、TextLayouter::setLineSpacing

    FontStyleDefinition::setLineSpacing

    TextFormat::getLineSpacing、TextLayouter::getLineSpacing

    FontStyleDefinition::getLineSpacing

    TextFormat::setCharacterSpacing、TextLayouter::setCharacterSpacing

    FontStyleDefinition::setCharacterSpacing

    TextFormat::getCharacterSpacing、TextLayouter::getCharacterSpacing

    FontStyleDefinition::getCharacterSpacing

    TextFormat::setFixedCharacterWidth、TextLayouter::setFixedCharacterWidth

    FontStyleDefinition::setFixedCharacterWidth

    TextFormat::getFixedCharacterWidth、TextLayouter::getFixedCharacterWidth

    FontStyleDefinition::getFixedCharacterWidth

    TextFormat::setShapingEnabled、TextLayouter::setShapingEnabled

    FontStyleDefinition::setShapingEnabled

メッセージの変更

  • kzuMessageType を削除しました。代わりに AbstractMessageTypeDescriptor を使用してください。

  • AbstractMessageType をパラメータとして受け取る MessageArguments のコンストラクタを削除しました。AbstractMessageType を使用してメッセージを送信するには、Node::dispatchAbstractMessage() を使用してください。

Prefab View ノードの変更

Prefab View ノードは、Prefab Template プロパティ (PrefabProperty) が変更されない場合、ノードツリーを再作成しなくなりました。アプリケーションがプロパティの書き込み時にノードツリーを再作成するために Kanzi に依存している場合、例えば On Attached トリガーを使用する場合、Prefab Template を最初に空の値に設定することでノードツリーの再作成を強制することができます。

Kanzi Engine プラグインメタデータの変更

Kanzi Engine プラグインメタデータ属性 SortingIndex の構文を metadata.sortingIndex に変更しました。sortingIndex を参照してください。

その他の変更

  • これらのヘッダーを新しい場所に移動しました:

    ヘッダー

    Kanzi 3.8 の場所

    テンプレート:

    • trigger_template.hpp

    <KanziWorkspace>/Engine/include/kanzi/core.ui/template

    トリガー:

    • message_trigger.hpp

    • on_attached_trigger.hpp

    • on_property_changed_trigger.hpp

    • timer_trigger.hpp

    <KanziWorkspace>/Engine/include/kanzi/ui/node_component/trigger

    アクション:

    • dispatch_message_action.hpp

    • forwarding_action.hpp

    • play_animation_action.hpp

    • set_property_action.hpp

    • write_log_action.hpp

    • set_focus_action.hpp

    • move_focus_action.hpp

    <KanziWorkspace>/Engine/include/kanzi/ui/action

    アニメーションノードコンポーネント (Animation Node Components):

    • animation_player.hpp

    • property_driven_animation_player.hpp

    • property_field_target_interpolation_timeline_playback.hpp

    • property_target_interpolation_timeline.hpp

    • property_target_interpolation_timeline_playback.hpp

    • property_target_interpolator.hpp

    <KanziWorkspace>/Engine/include/kanzi/ui/node_component/animation

  • PanManipulator::MovedMessage のデルタの符号を反転しました。

  • Mesh クラスおよび Renderer クラスで、頂点データまたはインデックスデータの変更を処理する呼び出しは、今後は生のポインタとサイズの代わりにバッファとして ConstByteSpan を取ります。

  • kanzi/core/math/rational.hpp を kanzi/core/cpp/rational.hpp に移動しました。

  • kzs_math を削除しました。代わりに kanzi/core/cpp/limits.hpp、kanzi/core/cpp/math.hpp、kanzi/core/math/math_utils.hpp、kanzi/core/cpp/algorithm.hpp を使用してください。

  • kzsThread を削除しました。代わりに std::thread を使用してください。

  • kzsThreadSleep を削除しました。代わりに std::this_thread::sleep_for を使用してください。

  • kzsThreadLocalStorage を削除しました。代わりに thread_local を使用してください。

  • KzcFile、KzcOutputStream、および KzcInputStream を削除しました。代わりに ReadOnlyDiskFile、WriteOnlyDiskFile、ReadOnlyMemoryFile、MemoryParser、MemoryWriter、およびfile_util.hppを使用してください。

関連項目

Kanzi 3.8 リリースノート

既知の問題