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 ファイルからスキンメッシュをマージします。
Library > Resource Files > 3D Assets でスキンメッシュを右クリックし、Merge 3D Asset File を選択します。3Dアセットのマージ を参照してください。
Merge ツールで:
スキンメッシュの横にあるチェックボックスを選択します。
この方法で、メッシュデータを更新します。
既存の Kanzi Studio プロジェクトの変換と異なるスケルトンノードを選択します。
Merge ツールで Resolve to source をクリックし、次に Merge をクリックします。
マージ後、インポートされた Scene ノードに対するプロパティの追加や値の変更などの変更がそのままであることを確認してください。
マージしたスキンメッシュに使用するマテリアルの頂点シェーダー内で、スキニングを計算するシェーダーの部分を、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 ノードは、フォーカスチェーンナビゲーション機能を提供するフォーカススコープではなくなりました。プロジェクトでフォーカスチェーンナビゲーションを使用するには、次の手順を実行してください。
Screen ノードの下にある最初のノード、またはフォーカスナビゲーションを使用したいノードを、フォーカスグループまたはフォーカスフェンスに設定します。
そのノードに対して Focusable プロパティを有効にします。
フォーカス を参照してください。
フォントの変更¶
FontクラスをFontRuntimeに名前変更し、これによりフォントスタイルも保持するようになりました。この結果、TextFormat、TextLayouter、およびTextShaperは、Fontの代わりにFontRuntimeを取るようになりました。Node::FontPropertyを削除し、その機能を次のように置き換えました:Node::FontFamilyPropertyFontStyleConcept::WeightPropertyFontStyleConcept::StyleProperty
これらのプロパティを
TextBlockConceptからFontStyleConceptクラスに移動し、名前を変更しました。Kanzi 3.7
Kanzi 3.8
TextBlockConcept::FontSizePropertyFontStyleConcept::SizePropertyTextBlockConcept::CharacterSpacingPropertyFontStyleConcept::CharacterSpacingPropertyTextBlockConcept::FixedCharacterWidthPropertyFontStyleConcept::FixedCharacterWidthPropertyTextBlockConcept::LineSpacingPropertyFontStyleConcept::LineSpacingPropertyFontManagerクラスにこれらの変更を加えました。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::setLineSpacingFontStyleDefinition::setLineSpacingTextFormat::getLineSpacing、TextLayouter::getLineSpacingFontStyleDefinition::getLineSpacingTextFormat::setCharacterSpacing、TextLayouter::setCharacterSpacingFontStyleDefinition::setCharacterSpacingTextFormat::getCharacterSpacing、TextLayouter::getCharacterSpacingFontStyleDefinition::getCharacterSpacingTextFormat::setFixedCharacterWidth、TextLayouter::setFixedCharacterWidthFontStyleDefinition::setFixedCharacterWidthTextFormat::getFixedCharacterWidth、TextLayouter::getFixedCharacterWidthFontStyleDefinition::getFixedCharacterWidthTextFormat::setShapingEnabled、TextLayouter::setShapingEnabledFontStyleDefinition::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.hppon_attached_trigger.hppon_property_changed_trigger.hpptimer_trigger.hpp
<KanziWorkspace>/Engine/include/kanzi/ui/node_component/triggerアクション:
dispatch_message_action.hppforwarding_action.hppplay_animation_action.hppset_property_action.hppwrite_log_action.hppset_focus_action.hppmove_focus_action.hpp
<KanziWorkspace>/Engine/include/kanzi/ui/actionアニメーションノードコンポーネント (Animation Node Components):
animation_player.hppproperty_driven_animation_player.hppproperty_field_target_interpolation_timeline_playback.hppproperty_target_interpolation_timeline.hppproperty_target_interpolation_timeline_playback.hppproperty_target_interpolator.hpp
<KanziWorkspace>/Engine/include/kanzi/ui/node_component/animationPanManipulator::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を使用してください。