Kanzi 4.0.0 リリースノート¶
このリリースノートでは、Kanzi 4.0.0 のアルファリリースおよびベータリリースにおけるすべての機能、変更点、主な修正点を記載しています。
Kzm ファイルフォーマット¶
Kanzi Studio で、kzproj ファイルフォーマットに代わる kzm ファイルフォーマットを導入しました。kzm ファイルフォーマットを使用すると、Kanzi Studio はプロジェクトを単一のプロジェクトファイルではなく、複数の kzm ファイルに保存します。
kzm ファイルフォーマットの目的は、次のようにして Kanzi Studio プロジェクトにおける変更のレビュー、チームワーク、コラボレーションを改善することです。
粒度が細かく人間が読めるファイルを提供することで、何が変更されたかを正確に確認してレビューできるようにする
マージの競合を減らし、残った競合も解決しやすくする
異なるプロジェクト間でのプロジェクトアイテムの共有を簡単にする
差分を取りやすいファイルにより、スクリプトによる変更を可能にする
Kanzi Studio は、すべての新規プロジェクトを kzm ファイルフォーマットで保存するようになりました。Kzm ファイルフォーマット を参照してください。
Kanzi Studio では引き続き kzproj プロジェクトを開くことができますが、そのようなプロジェクトを保存すると、Kanzi Studio は自動的にプロジェクトを kzm に変換し、kzproj ファイルを削除します。この変換は元に戻せません。プロジェクトを一度 kzm フォーマットで保存すると、そのプロジェクトを kzproj フォーマットに戻すことはできなくなります。
Kanzi Studio は、保存操作を完了する前に、変換について知らせる通知を表示します。
Kanzi グラフィックス¶
Kanzi のレンダーハードウェアインターフェイス (RHI) である Kanzi グラフィックス (kzgfx) を導入しました。Kanzi グラフィックスは、OpenGL 3.3 以降、OpenGL ES 3.0 以降、または Vulkan 1.1 以降で動作する Kanzi アプリケーションをサポートします。Kanzi グラフィックス を参照してください。使用する API の選択方法については、グラフィックスライブラリ を参照してください。
Project > Properties で、Preview Graphics API Configuration プロパティを使用して、Kanzi Studio の Preview が使用する API を設定します。たとえば、OpenGL レンダラーを使用するには、このプロパティを OpenGL に設定します。
アプリケーション構成では、次のことができます。
Kanzi の Vulkan バックエンドで使用する優先 GPU タイプを設定します。優先する Vulkan GPU を参照してください。
Kanzi グラフィックスライブラリの統計レイヤーと検証レイヤーを有効にします。この情報を使用して、アプリケーションがグラフィックス API を正しく使用しているかどうかを確認します。GraphicsStatisticEnabled と GraphicsValidationEnabled を参照してください。
サポートされる ASTC グラフィックスフォーマットが拡張され、HDR フォーマットが含まれるようになりました。これらは Kanzi Studio でテクスチャフォーマットとして公開されています。ASTC アルゴリズムの使用 を参照してください。
Kanzi アプリケーションを移行するには、Kanzi Graphics の導入 を参照してください。
Prism グラフエディタ¶
レンダーグラフを作成するためのビジュアルノードツールである Prism グラフエディタを導入しました。レンダリングノードを追加または削除して、視覚効果をすばやく反復的に調整できます。グラフはレンダリング操作の明確な概要を示し、プロパティを調整でき、結果を即座に表示します。Prism グラフ を参照してください。
Android¶
すべての Android アプリケーションテンプレートを、最新の Gradle 8 以降のツールを使用するように更新しました。テンプレートは Android Studio Ladybug と JDK 21 をサポートするようになりました。
Gradle への Kanzi の統合をリファクタリングし、Kanzi Gradle プラグインを、透過的で変更およびコピーが可能なサブプロジェクトに置き換えました。これにより、このサブプロジェクトを Android アプリケーションにコピーすることで、Kanzi を Android アプリケーションに導入できます。Android アプリケーションに Kanzi Android framework (droidfw) を追加する を参照してください。
Android library テンプレートを導入しました。このテンプレートを使用すると、ビルド済みの Kanzi C++ ライブラリを含む AAR をエクスポートできます。これは任意の数の Android アプリケーションから使用できます。つまり、アプリケーションプロジェクトがパッケージ管理システムまたはバージョンコントロールからビルド済みの Kanzi AAR にアクセスできる限り、アプリケーションのビルドに Kanzi のインストールへのアクセスは不要です。
このワークフローの詳細については、Kanzi をビルド済みライブラリ (AAR) として統合する を参照してください。
Android NDK のバージョンを 26.3.11579264 に更新しました。Android NDK バージョンの変更 を参照してください。
Android アプリケーションテンプレートと例を、CMake のバージョンを明示的に設定するように更新しました。
Kanzi application framework (appfw) と Kanzi Android framework (droidfw) の両方の Java 言語バージョンを 11 にアップグレードしました。
フォールバックフォントのサポート¶
Kanzi で、フォントファミリーのフォールバックフォントのチェーンを定義できるようになりました。プライマリフォントにグリフがない場合、Kanzi はリスト内の次のフォントを使用してそのグリフをレンダリングします。フォントフォールバック を参照してください。
カラーフォント¶
Kanzi で、絵文字やその他のカラーグリフを含むフォントでテキストをレンダリングできるようになりました。カラーフォント を参照してください。
テキストレイアウトの最適化¶
Kanzi はシェーピング済みのテキストをキャッシュするようになりました。これにより、同じテキストを異なる制約でレンダリングする際のレイアウトパフォーマンスが向上します。
テキストのレンダリング時に、Kanzi はパディング領域内に収まるもののテキストレイアウト領域を超えるテキストをクリップしなくなりました。
リソース (Resources)¶
新しい Asset Toolkit を導入しました。これには、類似した構造とプロパティセットを持つ、使いやすい既製のコンポーネントとマテリアルが含まれており、Kanzi アプリケーションをより迅速に作成するために使用できます。Asset Toolkit を参照してください。
Kanzi Studio プレビュー¶
Kanzi Studio で、Screenshot ボタン
を使用して、Preview ウィンドウから直接スクリーンショットを撮れるようになりました。プレビューのスクリーンショットの撮影 を参照してください。
Kanzi Studio で、デバッグオブジェクトの視覚化が更新されました。
Kanzi Studio で、デバッググリッドの視覚化が更新されました。
User Preferences > Experimental タブで、エクスペリメンタルなセレクションアウトラインを有効にできるようになりました。
Kanzi Studio のユーザビリティ¶
Kanzi Studio でのツールチップの改善:
ツールチップから機能および Kanzi Engine C++ API リファレンスドキュメントにアクセスできるようになりました。
ツールチップには、デフォルトおよびカスタムの Kanzi Studio ショートカットキーが表示されるようになりました。デフォルトのショートカットキーの一覧とカスタムショートカットキーの設定方法については、Default shortcut keys を参照してください。
ツールチップで Kanzi Engine プロパティタイプ名をコピーできるようになりました。
Kanzi Studio で、ドロップダウンメニュー内のプロパティタイプのツールチップが表示されるようになりました。
選択したアイテムに関連するノードとリソースを、ドッキング可能な Related Items ウィンドウで表示できるようになりました。このウィンドウから関連アイテムに直接移動できます。
このウィンドウは、任意のノードまたはリソースのコンテキストメニュー、あるいは Window メインメニューから開きます。
Node Tree では、ステートマネージャー、バインディング、データソースバインディング、またはアニメーションによってノードの一部のプロパティの値が設定されている場合、そのノードの横にインジケーターが表示されるようになりました。
Library ウィンドウでアイテムを検索およびフィルタリングできるようになりました。
複数のノードの同一のバインディングを一度に追加、編集、削除できるようになりました。
プロパティから直接バインディングの作成を開始したり、プロパティのコンテキストメニューからそのプロパティに影響するすべてのバインディングを表示したりできるようになりました。
単純なバインディングを作成する を参照してください。
Kanzi Studio の New Project ウィンドウが再設計され、新しいプロジェクトの作成が簡単になりました。プロジェクトの作成 を参照してください。
プロジェクトの名前を変更すると、Kanzi Studio はプロジェクトを保存する際にメインプロジェクトファイルの名前を更新するようになりました。
Kanzi Studio のロックファイルの名前が
KanziStudio.lockに固定されました。SaveProjectコマンドとNewProjectコマンドが、プロジェクトファイルのパスではなくディレクトリパスを受け付けるように変更されました。Kanzi Studio スクリプトを移行するには、Kanzi Studio コマンドの変更 を参照してください。Kanzi Studio では、Scene ノードが常に Viewport2D ノードの最初の子であることが必要になりました。これにより、フォーカスを適切に処理でき、アプリケーションのパフォーマンスが向上します。この変更に伴うプロジェクトの移行は不要ですが、Kanzi Studio はこの要件に従っていない Scene ノードをハイライト表示します。
Kanzi Studio から Android パッケージをビルドする際、Kanzi Studio はプロジェクトの Binary File Name プロパティに基づいて cfg ファイルをエクスポートするようになりました。移行手順については、Kanzi Studio の Android パッケージエクスポートの変更 を参照してください。
すべてのプレハブのルートノードから、スクリーンノードのリソースディクショナリにアクセスできるようになりました。これにより、ノードプレハブ内のバインディングで、スクリーンノードのディクショナリに定義されたエイリアスを参照して使用できます。
Animation Clip Editor で Keyframe tool
を使用すると、Kanzi Studio は最後に作成されたキーフレームを自動的に選択するようになりました。これにより、先に Move tool
に切り替えてキーフレームを選択しなくても、キーフレームの値を編集できます。Prefabs ウィンドウでは、省略記号ボタンで追加メニューが開き、参照されていないアイテムの削除や、ツリーの折りたたみと展開ができます。
Animation Clip Editor で Move tool
を使用してノードまたはカーブを選択する際、複数のコントロールポイントがある場合、Kanzi Studio はカーソルに最も近いコントロールポイントを選択するようになりました。State Manager で Mesh Material プロパティのステートを設定しようとすると、Kanzi Studio は代わりに回避策の手順を含む警告を表示するようになりました。
Asset Packages で同じアセットパッケージをインポートすると、Kanzi Studio は既存のアセットパッケージを置き換えるのではなく、そのプレハブを複製して名前の番号をインクリメントするようになりました。
Kanzi Studio で Ctrl を押しながらエキスパンダーをクリックすると、その下にあるすべてのツリーアイテムが展開または折りたたまれるようになりました。
Kanzi Studio で Kanzi Account にサインインできるようになりました。Kanzi Hub と Kanzi Account を参照してください。
Kanzi Studio の Node Tree で、Kanzi Studio プロジェクト内のオーバーライドインジケーターを右クリックし、コンテキストメニューから移動先のソースを選択できるようになりました。
Kanzi インストーラーは、
.kzmファイルを Kanzi Studio に関連付けるレジストリ項目を追加するようになりました。Kanzi インストーラーは、
.kzmKanzi Studio プロジェクトファイル形式に必要な、Windows と Git の長いファイルパスのサポートを有効にするレジストリ項目を追加するようになりました。Project Merge で、ソースプロジェクトにのみ存在するアイテムを選択すると、Kanzi Studio はそのアイテムのプロパティを表示するようになりました。
ルートディレクトリ、または既存のプロジェクトの子ディレクトリや親ディレクトリには、プロジェクトを作成できなくなりました。
Kanzi Studio は、プロジェクトのロード中にメッシュデータのバージョンを更新しなくなりました。
新しい Animation を作成すると、Kanzi Studio は 2 つのデフォルトキーフレームを自動的に追加するようになりました。
Kanzi Engine プラグインから、セレクター内のコンピュートマテリアルにアクセスできるようになりました。メタデータでは、
MaterialComboBox.ComputeMaterialSelectorエディタを使用します。Kanzi Engine プラグインで宣言されたプロパティタイプのための Kanzi Studio プロパティエディタ を参照してください。
ドキュメント¶
Documentation の AI ツールから Kanzi に関する回答を得られます。Documentation で次の操作を行います。
Ask AI をクリックして、Kanzi AI アシスタントとの会話を開始します
AI アシスタントツールを使用して、お使いの AI ツールに Kanzi のコンテキストを設定します。たとえば、Claude Desktop または Visual Studio Code から Documentation MCP サーバーに接続します。
Kanzi のサンプルプロジェクトとチュートリアルプロジェクトは、Kanzi インストーラーに含まれなくなりました。チュートリアルプロジェクトとサンプルプロジェクトは、Kanzi Studio の Quick Start ウィンドウの該当するセクションからダウンロードできます。
すべてのサンプルプロジェクト、チュートリアルプロジェクト、およびアセットプロジェクトが kzm ファイル形式に移行されました。
Node2D_pluginの例は、コードを変更せずに任意の Kanzi プロジェクトで動作するようになりました。Android data sourceの例がチュートリアルのコードと一致するようになりました。
プラットフォーム¶
Kanzi Engine は QNX でマウスホイールイベントを報告するようになりました。
EGL アトリビュートをカンマ区切り形式で一覧表示できるようになりました。
listEGLAttributesを参照してください。EGL エラーコードを文字列に変換できるようになりました。Kanzi Engine C++ API リファレンス で
kzsEGLErrorStringを参照してください。QNX EGL グラフィックス出力 API を C から C++ に変換しました。
Kanzi Engine C++ API リファレンスで、
qnx::DefaultQnxEGLGraphicsOutputを参照してください。アプリケーションのウィンドウクラス名を設定できるようになりました。WindowClassName を参照してください。
Kanzi Engine C++ API で Wayland XDG シェルのアプリケーション ID を設定できるようになりました。
kanzi::wayland::XDGToplevel::setIdとkanzi::wayland::XDGShell::setAppIdを参照してください。グラフィックス出力のオプションとして、
wayland::WaylandIVIEGLGraphicsOutputを Wayland プラットフォームパッケージに追加しました。QNX で、Kanzi アプリケーションに使用させたいコンテキストタイプフラグを設定できるようになりました。QNX コンテキストタイプの選択 を参照してください。
qnx::DefaultQnxEGLGraphicsOutputが、使用するウィンドウバッファの数を設定するQnxWindowBufferCount構成オプションをサポートするようになりました。互換性を確保するため、この構成オプションを明示的に設定しない場合、Kanzi はWindowBufferCount構成オプションの値を使用します。QnxWindowBufferCount と WindowBufferCount を参照してください。qnx::DefaultQnxEGLGraphicsOutputは以下を考慮するようになりました。デフォルトのウィンドウの位置とサイズの設定
デフォルトのウィンドウの Z オーダーの設定
ウィンドウグループ名
デフォルトのディスプレイインデックス
サーフェスのパディングビットの設定
Kanzi は QNX 開発プラットフォーム 7.0.0 をサポートしなくなりました。
POSIX システムのイベントファイルディスクリプタの値が
FD_SETSIZEによって制限されなくなりました。XDG と IVI に関連する Wayland のクラス名を、CamelCase 表記に従うように変更しました。たとえば、
XDGToplevelはXdgToplevelに変更されました。すべてのプラットフォームで、デフォルトで Kanzi グラフィックスを使用するようになりました。Kanzi アプリケーションを移行するには、Kanzi Graphics の導入 を参照してください。
次のバックエンドは、EGL ウィンドウサーフェスの色空間アトリビュートを正しく設定するようになりました。
Android WS
Emscripten
QNX/PBuffer
X11/EGL
プラットフォームレイヤーの追加のデバッグログを有効にする構成オプションを追加しました。PlatformLoggingEnabled を参照してください。
Linux DRM/GBM プラットフォームで、DeviceIdentifier 設定が DRM モジュールの識別よりも優先されるようになりました。以前は、DeviceIdentifier はすべての DRM モジュールのオープンに失敗した場合にのみ使用されていました。
Kanzi は、浮動小数点数用の from_chars() をサポートしていない古いツールチェーン向けに、独自の from_chars() 実装を提供するようになりました。
Wayland IVI バックエンドのサーフェスのオパシティ設定は、整数ではなく浮動小数点数として解釈されるようになりました。
wayland::IviSurfaceProps::opacityとwayland::IviLayerProps::opacityを参照してください。QNX で、Kanzi アプリケーションウィンドウに対して QNX Screen プロパティのセルフレイアウトモードを有効にできるようになりました。QnxWindowSelfLayout を参照してください。
プラットフォームに依存するウィンドウ処理とインプットのコードをすべて別のライブラリ (kzplatform) に移動しました。kzplatform の外部向け API はすべてエクスペリメンタルと見なされ、今後のリリースで変更される可能性があります。システムライブラリは、kzcoreui ではなく kzplatform にリンクされるようになりました。
Kanzi Engine C++ API¶
spanを扱うための以下のヘルパーメソッドを追加しました。as_bytesは、span をバイトの span に変換します。fromBytesは、バイトの span を型付きオブジェクトの span に変換します。toSpanは、コンテナをそのコンテナを対象とする span に変換します。asSpanとasConstSpanは、単一の要素をその要素を対象とする span に変換します。
エヌメレーションを基になる型にキャストする
to_underlyingを追加しました。ファイルの内容をバイトのベクターに読み込む
readAsBytesを追加しました。ビットフィールドのエヌメレーションに特定のフラグが含まれているかどうかをテストする
containsFlagとcontainsAnyFlagを追加しました。キーとバリューのペアの小さなリストをベクターに格納する
VectorMapを追加しました。PinchManipulatorから、効果のなかったsetScaleRecognitionThreshold関数とsetRotationRecognitionThreshold関数を削除しました。ピンチマニピュレータ (Pinch Manipulator) の変更 を参照してください。
Rendererクラスで、setActiveGLGraphicsOutputメソッドの名前をRenderer::setActiveGraphicsOutputに変更しました。Renderer API の変更 を参照してください。Rendererまたはkanzi::Renderer3Dをパラメータとして持つすべてのメソッドから、CompositionStackパラメータを削除しました。CompositionStackインスタンスにはRenderer::getCompositionStackからアクセスできるようになりました。Composition Stack の変更 を参照してください。CompositionStackを変更し、CompositionStack::pushCompositionでNativeFramebufferHandleではなくFramebufferクラスを使用するようにしました。Composition Stack の変更 を参照してください。GlRenderValueクラスとGlBlendModeRenderValueクラス、およびupdateRenderValue関数を削除しました。Renderer API の変更 を参照してください。GraphicsPrimitiveTypeエヌメレーションからGraphicsPrimitiveTypeLineLoopオプションを削除しました。Renderer API の変更 を参照してください。Rendererクラスのフレームバッファ関連のメソッドを簡素化しました。Renderer API の変更 を参照してください。kanzi::Renderer3Dクラスを削除しました。以下の関数にはRendererクラスからアクセスできるようになりました。Renderer API の変更 を参照してください。
サスペンションのウェイクアップシグナルソースに、
WakeupSignalSourceでクエリできるインターフェイスが追加されました。サスペンド処理の変更 を参照してください。Applicationクラスを使用してイベントソースをドメインにアタッチしても、関連するイベントハンドルがメインループスケジューラーに登録されなくなりました。イベント処理の変更 を参照してください。Windows の動的ライブラリからいくつかの低レベル関数を公開しました。
複数の Kanzi Engine API のパラメータと戻り値の型を、
unsigned intではなくsize_tデータタイプを使用するように更新しました。複数の Kanzi Engine API の変更 を参照してください。kanzi::optional(optional.hpp) とkanzi::string_view(string_view.hpp) をstd::optionalとstd::string_viewに変更しました。以前のバージョンの Kanzi では、一部のプラットフォームでこれらはboost::optionalとboost::string_viewでした。複数の Kanzi Engine API の変更 を参照してください。kanzi::byte(cstddef.hpp) をstd::byteに変更しました。以前のバージョンの Kanzi では、一部のプラットフォームでこれはunsigned charでした。複数の Kanzi Engine API の変更 を参照してください。Application::loadKzbFile(ConstByteSpan fileData, bool setStartupPrefab)を使用して、メモリバッファから kzb ファイルを読み込めるようになりました。メモリバッファは、アプリケーションを破棄するまで保持してください。CompositionStackからデフォルトのスタックステートを削除しました。すべてのスタックステートを明示的にスタックにプッシュする必要があります。Composition Stack の変更 を参照してください。非推奨の関数
Renderer::getColorReadFormatとRenderer::getColorReadTypeを削除しました。Renderer API の変更 を参照してください。
非推奨のクラス
kanzi::TextureSwizzleMaskを削除しました。ノード内のタグを操作するための抽象化である
kanzi::Tagクラスを削除しました。タグの変更 を参照してください。MainLoopScheduler::setCustomSleepFunctionForYieldを使用してMainLoopScheduler::yieldにカスタムのスリープロジックを設定できるようになり、特定のプラットフォーム向けに最適化できるようになりました。CompositionStackからすべての apply 関数を削除しました。設定は、すべてのプッシュおよびポップ操作の直後に自動的に適用されます。Composition Stack の変更 を参照してください。標準化された PBR シェーダープロパティ用の API 関数を追加しました。
RendererからcheckGLSupportメソッドとcheckGLESSupportメソッドを削除しました。Renderer API の変更 を参照してください。TaskDispatcherBase::executeTasksは、実行中に再度呼び出された場合、またはディスパッチャーが属していないスレッドから呼び出された場合に例外をスローするようになりました。以前は、いずれの場合も未定義の動作となっていました。Textureおよび関連する型からRenderTargetModeを非推奨にし、そのすべての痕跡を削除しました。Renderer API の変更 を参照してください。ProgressiveRenderingViewport2D.MultisampleLevelを非推奨にし、削除しました。プログレッシブレンダリングビューポート2Dプロパティの変更 を参照してください。kanzi/core/platform/cpp/win32/string_conversion.hppにある Win32 文字列 (String) ユーティリティを、kanziネームスペース (Namespace) からwin32に移動しました。
構成が存在しない場合の Kanzi Engine アプリケーションのデフォルトの
SurfaceColorSpaceを、SurfaceColorSpace::sRGBからSurfaceColorSpace::Standardに変更しました。この値は、新しい Kanzi Studio プロジェクトでデフォルトで構成されるカラーワークフローと一致します。
フォールバックフォントチェーンを管理するための
FontFamilyおよびFontRuntimeのメソッドを導入しました。
GlyphRunおよびTextFormatのメソッドのシグネチャを変更しました。テキストレンダリングの変更 を参照してください。
トリガーテンプレートにアクションと条件を追加できるようにする
TriggerTemplateへのインターフェースを追加しました。
アクティビティ¶
アクティビティに OptimizeMemory パラメーターを導入しました。これを有効にすると、Kanzi はアクティビティが非アクティブ化された時点で、そのアクティビティが使用しているリソースを自動的にアンロードします。
仮想化 を参照してください。
ActivityCodeBehindクラスを変更しました。Kanzi C++ API の
ActivityCodeBehindクラスで、onActive、onInactive、onActivating、onDeactivatingコールバックをActivityCodeBehind::onStatusChangeに置き換えました。Kanzi C++ (
ActivityCodeBehind) と Kanzi Java API (ActivityCodeBehind) の両方で、registerStatusChange、registerStatusChangeOverride、unregisterStatusChange、unregisterStatusChangeOverrideを削除しました。
Kanzi アプリケーションを移行するには、ActivityCodeBehind クラスへの変更 を参照してください。
ActivityElementImplクラスとActivityHostConceptImplクラスを変更しました。ActivityHostConceptImplクラスから以下のメソッドを削除しました。getActiveOrAttachedActivatinggetAttachedActivityNodesgetActivityInfo
ActivityElementImpl::onAttachedOverrideメソッドは仮想メソッドではなくなりました。
ActivityElementImplクラスとActivityHostConceptImplクラスは CRTP パターンを使用しているため、派生クラスでこれらのメソッドをオーバーライドしてはなりません。Kanzi アプリケーションを移行するには、ActivityElementImpl クラスと ActivityHostConceptImpl クラスへの変更 を参照してください。
Data-Driven Exclusive Activity Host にアクティビティを手動で追加することはできなくなりました。Data-Driven Exclusive Activity Host の使用方法については、チュートリアル: データソースからUIを生成する と データ駆動型エクスクルーシブアクティビティホスト を参照してください。
プロジェクトを移行するには、データ駆動型エクスクルーシブアクティビティホストの変更 を参照してください。
Exclusive Activity Host に Fallback State を導入しました。Exclusive Activity Host でどのアクティビティもアクティブにしたくない場合は、Fallback State を使用します。
フォールバックステートの使用 を参照してください。
アクティビティとアクティビティホストのデフォルトの配置設定が、水平方向、垂直方向、および奥行き方向にストレッチするように設定されるようになりました。
アニメーション (Animations)¶
Animation Clip Editor でベジェ補間を設定する際に、1 つ以上のベジェハンドルに正確な値を入力できるようになりました。キーフレーム間のイージングファンクションを設定する を参照してください。
バインディング (Bindings)¶
ブール型、整数型、浮動小数点型、ベクター型、カラー型、マトリックス型を、次のいずれのパラメータとしても使用できるようになりました。
算術演算子
+、-、*、および/。算術演算子 を参照してください。数学関数 クランプ (Clamp)、最大 (maximum)、最小 (minimum)、mod(モジュロ)、pow(べき乗)、および 剰余 (remainder)。
補間関数 ミックス (Mix)、ステップ (Step)、リニアステップ、スムーズステップ、および スムーザーステップ。
プロパティとバインディングにおける Boolean 値の文字列変換の結果が、小文字の
trueまたはfalseになりました。バインディング式において、Boolean 定数から文字列への暗黙的なキャストの結果が、
TrueまたはFalseではなく小文字のtrueまたはfalseになりました。Kanzi Engine C++ API において、Boolean から文字列へのプロパティバインディングが、1 または 0 ではなく
trueまたはfalseを書き込むようになりました。
プロパティとバインディングの変更 を参照してください。
フォーカス¶
カスタムフォーカススコープで、フォーカス候補の選択をオーバーライドできるようになりました。FocusScope::selectFocusCandidate を参照してください。
Kanzi Engine アプリケーション構成¶
Kanzi Engine が暗黙的なマルチサンプリングをサポートしなくなったため、アプリケーション構成ファイルのオプション
MultisamplePreferenceを削除しました。アプリケーション構成でサーフェスのプレゼントモードを設定できるようになりました。PresentMode を参照してください。
アプリケーション構成で PerformanceInfo HUD のフォントサイズを設定できるようになりました。PerformanceInfoFontSize を参照してください。
CBDT テーブルを持つカラーフォントなど、スケーラブルでないフォント用のグリフキャッシュテクスチャのサイズを指定する構成オプションを追加しました。グリフキャッシュテクスチャのサイズ を参照してください。
Kzb バージョン (Kzb Version)¶
kzb ファイル形式のバージョンを 36.0 に変更しました。
リストボックス (List Box)¶
以下の List Box メッセージの名前を変更しました。
List Box: Item Hidden から List Box: Item Unloaded へ
List Box: Item Visible から List Box: Item Loaded へ
Kanzi アプリケーションのコードを移行するには、リストボックス (List Box) の変更 を参照してください。
リストボックス (List Box) ノード¶
デフォルトの方向ナビゲーションキーで、Grid List Box ノードと Trajectory List Box 3D ノード内のキーフォーカスが移動するようになりました。List Box ノードでのキー入力フォーカスの処理 を参照してください。
アプリケーションを移行するには、リストボックス (List Box) ノードへの変更 を参照してください。
レンダリング¶
Legacy カラーワークフローの名前を Standard に変更し、新規プロジェクトのデフォルト設定にもしました。カラーワークフロー を参照してください。
Kanzi は、24 ビット RGB の PNG 画像および JPEG 画像を、デフォルトのアルファチャンネルを持つ RGBA としてメモリにロードするようになりました。
2D ノードの自動生成されるコンポジションターゲットのミップマップモードを指定できるようになりました。コンポジション時にミップマップを生成するには、2D ノードの Mipmap Mode プロパティ (
Node2D::MipmapModeProperty) を設定します。デフォルトの動作は変更されておらず、ミップマップは生成されません。Render Target プロパティ (
Node2D::RenderTargetProperty) を使用してコンポジションターゲットを明示的に指定した場合は、そのテクスチャに設定されたミップマップモードが優先されます。この変更により、コンポジションをブリットする前にミップマップが生成されない問題も修正されました。
Factory Content に、3D シーンにキューブマップの背景を描画できる Skybox Render Pass が含まれるようになりました。
アプリケーション構成で、Preferred Vulkan GPU オプションのデフォルト値が、列挙された First デバイスを使用するように設定されるようになりました。これにより、通常はコントロールパネルアプリケーションを通じて、ユーザーがデバイスの選択を制御できます。以前の動作に戻すには、LargestMemory オプションを使用します。
プラットフォーム固有の "Gl" プレフィックスを除くために、
kanzi::GlRenderStateクラスの名前をRenderStateに変更しました。レンダーステートの抽象化は OpenGL 固有のものではありません。Kanzi Graphics の導入 を参照してください。
トレーシング¶
Kanzi Engine にトレースシステムを追加しました。トレースシステムを使用すると Kanzi Engine の内部を調査でき、パフォーマンスの問題を特定するのに役立ちます。トレースシステムはプロファイリングシステムに代わるものです。リリースビルドではトレースは無効です。Tracing および トレーシング を参照してください。
Kanzi Engine Lua API¶
PropertyTypeアーギュメントを受け取る関数は、他の型のオブジェクトが渡された場合にnilを返して暗黙的に失敗することがなくなりました。代わりにスクリプトの実行を終了し、警告をログに出力します。Kanzi のログ関数を備えた
logモジュールを追加しました。ロギング を参照してください。DataObjectツリーにアクセスして変更するためのDataSourceメソッドを追加しました。
Lua データソース¶
Lua スクリプトを使用して、アプリケーションの外部データへの依存関係を Kanzi Studio でデザインと並行して定義およびシミュレートできるようになりました。ネイティブコードを記述したりコンパイルしたりする必要はありません。Lua を使用したデータソースの定義 を参照してください。
ウィンドウ管理 (Windowing)¶
Wayland バックエンドにおいて、コンポジタから送信される
frame()イベントを無視し、入力を即座に処理するオプションを追加しました。これは、コンポジタがframe()イベントを適切に送信しない場合に有用です。Wayland入力モード を参照してください。QNX Screen プロパティの使用フラグをプログラムで設定できるようになりました。QnxUsageFlags を参照してください。
変更点¶
Kanzi には Visual Studio 2022 が必要になりました。Kanzi には Visual Studio 2017 および 2019 用のライブラリが含まれなくなりました。Visual Studio 2022 へのアップグレード を参照してください。
Kanzi には C++17 が必要になりました。
Boost を 1.77.0 から 1.85.0 に更新しました。
libjpeg 9d を libjpeg-turbo 3.0.3 に置き換えました。
Page ノードと Page Host ノードは非推奨となり、Kanzi の次のバージョンで削除されます。ページ (Page) およびページホスト (Page Host) ノードの非推奨化 を参照してください。
ICU ライブラリをバージョン 62.1 から 69.1 にアップグレードしました。未使用の ICU データと機能を削除し、ターゲットプラットフォームに応じてライブラリのファイルサイズを最大 4 分の 1 に削減しました。
テクスチャの圧縮用の ATC および PVRTC アルゴリズムを削除しました。
タグが変化しない場合に、タグを使用して
NodeListをフィルタリングする際のレンダリングパフォーマンスを大幅に向上しました。タグプロパティは継承されなくなり、変更フラグにはタグの状態の変更を示す個別のフラグが含まれるようになりました。このため、古いタグ設定でエクスポートされた以前の KZB とは互換性がありません。KZB のバージョン番号を引き上げました。
データテクスチャを使用する必要がないほど少数のモーフをレンダリングする場合、モーフデータが完全にインターリーブされるようになりました。
Fonts に Keep Alive Behavior プロパティを追加できるようになりました。これにより、フォントが使用されていないときでもフォントファイルをメモリに保持できます。Kanzi Engine が個々の未使用リソースをどのように処理するかを設定する を参照してください。
論理値のアプリケーション構成の処理を更新しました。Kanzi は、論理値の構成オプションの有効な値として
false、true、0、1のみを受け付けるようになりました。わかりやすくするために、OpenGL コンテキスト API を参照するエンティティの名前を変更しました。
kanzi::platform::OpenGLPlatformの名前をkanzi::platform::GlContextApiに変更しました。kanzi::platform::createDefaultOpenGLPlatformの名前をkanzi::platform::createDefaultGlContextApiに変更しました。
Monotype iType ライブラリをバージョン 6.3.1 に、WorldType Shaper をバージョン 5.3 に更新しました。
すべてのプラットフォームを SCons ではなく CMake を使用するように移行しました。
各
kanzi::Mesh::Clusterがそれぞれインデックスバッファを持つのではなく、kanzi::Meshのインデックスバッファを Mesh オブジェクト自体の 1 つに統合しました。トレースシステムにフレームベースのインターバルオプションを追加しました。TracingFrameInterval および TracingTimeInterval を参照してください。
TracingInterval構成オプションの名前を変更しました。アプリケーション構成の変更 を参照してください。Level Of Detailノードを削除しました。今後のリリースで変更される可能性のある機能を示すための KZ_EXPERIMENTAL マクロを追加しました。
注目すべき修正点¶
Kanzi Engine¶
スクロール中に、Kanzi Engine が Scroll Position プロパティを通じて Scroll View の位置を上書きできなかった問題を修正しました。(FMW-688)
Actions のいずれかが同じ Message Trigger を再度トリガーした場合に、Kanzi が Message Trigger でメッセージアーギュメントを誤って転送する問題を修正しました。(FMW-707)
constexpr 関数で kzAssert マクロを使用できなかった問題を修正しました。(454808)
kzCameraNormalMatrixユニフォームに変換コンポーネントがある場合に、getCameraNormalMatrix シェーダーユニフォームバインディング関数が不正な行列を返す問題を修正しました。(RENDERING-570)Kanzi Engine が、Parallel Activity Host または Exclusive Activity Host 内でアクティブ化しているアクティビティが On Attached トリガーを使用して自分自身を非アクティブ化しようとしたときに終了したり、誤動作したりする問題を修正しました。(SDK-9210)
2Dノードにおいて、最初のレイアウトパスの前に、Actual Width および Actual Height プロパティが
infではなく正しく0.0に設定されるようになりました。(RENDERING-589)ノードが Color Brush の透明な Brush Color プロパティの値を不透明な色で上書きした場合に、Kanzi がその Color Brush をレンダリングできなかった問題を修正しました。(RENDERING-596)
Blend Mode プロパティ値がランタイムで更新されたときに、2Dノードで Kanzi が誤ったブレンドモードを使用する原因となっていた問題を修正しました。(RENDERING-597)
Kanzi が GPU リソースの無効化後にレンダーターゲット Texture をリロードできなかった問題を修正しました。(RENDERING-669)
Kanzi Engine がデータトリガー条件式でシンプルなデータソースバインディングを使用した際に終了してしまう問題を修正しました。(SDK-9232)
Kanzi が以前にコンテンツテクスチャなしでレンダリングされた Texture Brush のコンテンツテクスチャをレンダリングできなかった問題を修正しました。(RENDERING-683)
Texture Brush のレンダリングにおける問題を修正しました。この問題により、Kanzi が Brush Vertical Tiling および Brush Horizontal Tiling のプロパティ値の変更を無視していました。(RENDERING-675)
kzWindowSizeユニフォームが、フレームバッファサイズよりも小さい絶対サイズを持つ場合に、スクリーンノードのサイズと等しくならない問題を修正しました。(RENDERING-415)Kanzi がバイナリシェーダーフォーマットをサポートしないターゲットプラットフォームに対してシェーダーバイナリキャッシュを誤って無効にしてしまう問題を修正しました。シェーダーバイナリキャッシュはシェーダーバイナリプログラムのみを必要とします。(RENDERING-693)
Word Wrap プロパティが有効で Horizontal Margin プロパティが設定された Text Block ノードが、垂直方向に配置された Stack Layout 内で正しく表示されなかった問題を修正しました。(SDK-8946)
Node::lookupNode関数が、Node::getPath関数で取得した絶対パスで機能しなかった問題を修正しました。(SDK-9570)Kanzi アプリケーションがスリープから復帰した後のコンポジションターゲットの復元を修正しました。(RENDERING-1772)
特定のフォントで iType フォントレンダラーがアラビア語の発音区別符号をレンダリングしない問題を修正しました。(SDK-9968)
StateManagerリソースとPrefabTemplateNodeリソースに対して、Object::getDynamicMetaclassメソッドがベースのResourceメタクラスを返す問題を修正しました。(SDK-9987)Text Box に特定の入力を行うと、デバッグモードで Kanzi Engine がアサーションにより終了する問題を修正しました。(SDK-10001)
WindowsImeBackendが Unicode の補助文字を含むキー入力を処理できない問題を修正しました。(FMW-128)Text Box のカーソルが誤った位置にレンダリングされる問題を修正しました。(SDK-9952)
kzProfiling* マクロを使用するファイルでアラインメントのずれが発生する問題を修正しました。(INTE-833)
Performance HUD で、Kanzi が Timer のサブスクリプション数と Recurring Tasks の数の情報を取得できなかった問題を修正しました。(FMW-58)
複雑な文字体系 (Complex Scripts) を使用する場合に、Kanzi が Text Box 内の文字を誤って選択および削除する問題を修正しました。(FMW-127)
Kanzi Studio¶
組み込みマテリアルを使用する BlitRenderPass を作成すると、Kanzi が DefaultBlitMaterial をインポートする問題を修正しました。(FMW-416)
以下のバインディングの問題を修正しました (FMW-553):
ソースノードの親ノードの親が変更されたか名前が変更された場合、またはプロジェクトを再度開いた後にソースノード自体の親が変更された場合に、バインディングのソースプロパティを変更してもターゲットプロパティが更新されない問題を修正しました。
ソースノードの親ノードがプレハブに移動された場合に、バインディングを持つノードの検証が行われない問題を修正しました。
Binding Editor でアポストロフィ文字
'を使用すると、デバッグモードで Kanzi Studio がアサーションエラーにより失敗する問題を修正しました。(EDITORS-320)Shift キーを押しながら UI のドロップダウンに入力した文字が、Kanzi Studio で失われる問題を修正しました。(EDITORS-292)
ターゲットプロパティタイプが < Null > のバインディングを作成すると、Kanzi Studio が終了する問題を修正しました。(FMW-632)
プロジェクト名にダッシュやスペースなどの使用できない文字が含まれている場合に、Kanzi Studio がアプリケーションコード内で誤った KZB 名を生成する問題を修正しました。(FMW-620)
コマンドライン引数として指定したプロジェクトを、Kanzi Studio がロードできないことがある問題を修正しました。(FMW-585)
Smart Materials のプロジェクトマージの競合を解決する際に、Kanzi Studio がランタイム例外により終了する問題を修正しました。(FMW-671)
Activity Browser で、以下の場合に Kanzi Studio が例外により終了する問題を修正しました。
名前が
.文字で始まるか終わる、または.文字が複数連続する Activity Property を作成しようとした。(FMW-618)
ファイル名に使用できない文字を名前に含むアクティビティに C++ Code Behind を追加しようとした場合。(FMW-722)
バインディングを持つノードに対する親の変更コマンドをアンドゥしようとすると、Kanzi Studio が Log ウィンドウにエラーメッセージを出力する問題を修正しました。(FMW-691)
Kanzi Studio で、Code Behind のビルドが失敗した場合に CMake のエラーが Log ウィンドウに出力されない問題を修正しました。(FMW-720)
プロジェクトの名前を変更すると、Kanzi Studio が以前のファイル名のプロジェクトマニフェストファイルをプロジェクトディレクトリに残す問題を修正しました。(FMW-735)
プロジェクトから FBX ファイルを削除すると、Kanzi Studio がメッシュデータを無効化し、Imported from プロパティが無効なパスを参照していると報告する問題を修正しました。(FMW-692)
Kanzi Studio がプロジェクトファイル内のメッシュデータを重複させる問題を修正しました。(FMW-78)
リソースファイルのディレクトリ名で始まる名前のプロジェクトをロードすると、Kanzi Studio が終了する問題を修正しました。(FMW-783)
Kanzi Studio で、子アイテムを含むプロジェクトアイテムの名前を変更した後、古いディレクトリがファイルシステムから削除されない問題を修正しました。(FMW-721)
Kanzi Studio で、Studio の UI が無効になっているときにホットキーを使用できてしまう問題を修正しました。(FMW-804)
Kanzi Studio が kzb ファイルをエクスポートおよびインポートする際に Kanzi Engine Java プラグインファイルの絶対パスを使用してしまう問題を修正しました。(ANDROID-380)
Kanzi Studio プレビューで 100% ズーム時に
gl_FragCoordおよびkzWindowSizeユニフォームが正しくない原因となっていた問題を修正しました。(RENDERING-415)Kanzi のデフォルトの物理ベースのマテリアルタイプで、
KANZI_SHADER_RECEIVE_POINT_SHADOWプリプロセッサ定義を有効にすると、Kanzi Studio は PointShadowMap カスタムプロパティタイプのバインディングの作成に失敗しなくなります。(RENDERING-626)複数のモーフターゲットを有効にすると、Kanzi Studio が生成するモーフターゲットの法線で視覚的な劣化が徐々に進むことがあります。この問題を解決するために、
KANZI_SHADER_USE_MORPH_NORMAL_LIMITプリプロセッサ定義を使用できるようになりました。モーフターゲット法線の使用 を参照してください。(RENDERING-772)On Property Changed トリガーで Property Type の値を適切な値に設定しない場合、Kanzi が警告を表示するようになりました。(PRODUCT-354)
Texture フォルダのコンテキストメニューの Import Images コマンドで HDR 以外の画像のみをインポートする際に、インポート時間が長くなり、警告が出力される問題を修正しました。(PRODUCT-1185)
フォントファイルを Library > Font Families > <FolderName> > Font Family にインポートすると、Kanzi Studio が終了する問題を修正しました。(SDK-9963)
Font Family 内の削除した Font File を、Kanzi Studio が完全に削除せずに ProjectItemReference: null ABSOLUTE としてマークする問題を修正しました。(SDK-9902)
あるプレハブから別のプレハブにバインディングをコピーすると、Preview が終了する問題を修正しました。(PRODUCT-1291)
Preview のシャットダウン時に、解放されないリソースが残る問題を修正しました。(PRODUCT-1282)
ドロップダウンを素早く開くと、ツールチップがドロップダウンに重なる問題を修正しました。(PRODUCT-1294)
Kanzi Engine プラグインで定義された Action が正しく表示されない問題を修正しました。(PRODUCT-1302)
Kanzi Studio がアセットのミップマップをインポートできない問題を修正しました。(PRODUCT-1299)
マテリアルを Preview ウィンドウにドラッグアンドドロップしたときに、Kanzi Studio がマテリアルを誤ったクラスタに割り当てる問題を修正しました。(PRODUCT-1026)
Kanzi Studio プロジェクト間で Cluster Materials を共有できない問題を修正しました。(PRODUCT-800)
子ノード上の State Manager のコントローラプロパティにトランジションを追加できない問題を修正しました。(PRODUCT-1317)
誤ったビットマップフォーマットの画像ファイルを使用して HDR キューブマップのテクスチャを生成すると、Kanzi Studio が終了する問題を修正しました。(PRODUCT-1340)
期間限定のサブスクリプションライセンスを再アクティベートする最初の試行時に、Kanzi Studio がエラーを表示する問題を修正しました。(PRODUCT-1349)
Kanzi Studio の外部でシェーダーファイルを変更した後、Kanzi Studio がそのシェーダーファイルを更新して適用できない問題を修正しました。(PRODUCT-1353)
Kanzi Studio が削除されたキューブマップをプロジェクトファイルに保持し、kzb ファイルにエクスポートしていた問題を修正しました。(PRODUCT-1323)
アセットのインポートをアンドゥすると、Kanzi Studio が終了する問題を修正しました。(PRODUCT-1368)
不正なメタデータを持つ Kanzi Engine プラグインをインポートする際に、Kanzi Studio がハングする問題を修正しました。(FMW-50)
別のプロジェクトからマージしたキューブマップテクスチャファイルを Kanzi Studio がインポートできない問題を修正しました。(FMW-79)
カスタムの表示スケールのシステム設定を使用している場合に、Bindings Editor で行番号と対応するテキストの位置がずれる問題を修正しました。(EDITORS-56)
ライブラリ (Library) で名前を変更したときに、アニメーションクリップエディタ (Animation Clip Editor) のウィンドウタイトルがそれに応じて更新されない Kanzi Studio の問題を修正しました。(EDITORS-55)
Ctrl を押さずに選択した場合に、Kanzi Studio の Animation Clip Editor の Move tool
が複数のカーブを選択したままにする問題を修正しました。(EDITORS-11)ツールチップに改行を含む Kanzi Engine プラグインのメタデータが、プロジェクトを再度開いた後に常に古いものとしてマークされる Kanzi Studio の問題を修正しました。また、Kanzi Studio はメタデータにサポートされていない文字が含まれている場合に警告するようになりました。(FMW-261)
Kanzi Studio で Related Items ウィンドウが開かない問題を修正しました。(EDITORS-130)
Kanzi Studio の Animation Clip Editor で、最初にドラッグアンドドロップしたプロパティが、そのプロパティが属するノードではなく Animation Clip の子として直接追加される問題を修正しました。(EDITORS-132)
Kanzi Studio の Related Items ウィンドウでバインディングが正しく表示されない問題を修正しました。(EDITORS-52)
Preview の起動中に、Kanzi Studio が Code Behind のビルド通知を報告しない問題を修正しました。(FMW-202)
編集モードが有効な場合に、TextBox3D ノードが Preview ウィンドウでユーザー入力キーを処理する問題を修正しました。(FMW-289)
選択範囲の背景色のアルファを 0 に設定して Kanzi Graphics レンダラーを使用した場合に、TextBox3D が選択されたテキストを正しくレンダリングしない問題を修正しました。(FMW-355)
Win32 で WriteOnlyDiskFile が非 ASCII 文字を含むファイル名を正しく扱わない問題を修正しました。(EDITORS-288)
Kanzi Android framework (droidfw)¶
Android からマルチタッチジェスチャーのキャンセルを受け取った後、Kanzi Android framework (droidfw) ベースのビューがユーザー入力の処理を停止する問題を修正しました。(ANDROID-1386)
KanziViewAdapter.handleVisibilityChangeで非表示にした後も、KanziViewAdapter インスタンスがレンダリングとユーザー入力の処理を続ける問題を修正しました。(ANDROID-1317)Kanzi Android framework (droidfw) ベースのアプリケーションで Performance HUD の位置が正しくない問題を修正しました。(ANDROID-1166)
Kanzi Engine Lua API¶
必要な依存関係を Kanzi のインストールに含めることで、Kanzi Engine Lua API の静的リンクが失敗する問題を修正しました。(ANDROID-1630)
プラットフォーム¶
アイドル状態中の Wayland イベントのポーリングにより、libwayland の内部リングバッファがオーバーフローする問題を修正しました。(INTE-806)
Wayland でのタッチにおいて、同じタッチフレーム内でタッチ ID を再利用すると、デバッグモードでコンパイルした場合に Kanzi がアサーションにより終了する問題を修正しました。(INTE-795)