Known issues¶
Known issues in Kanzi Engine¶
Some parts of Kanzi API are written in C. In the future Kanzi releases we will continue the effort of converting the API to C++.
When linking applications to the libraries provided with SDK without sources generates warning about missing debug information.
Clipping of rotated child 2D nodes is ignored because of performance reasons. For example, if an Image node has a child Image node, and you rotate the child Image node, the parent Image node does not clip the child Image node.
Current limitation of the Kanzi Engine is that if a 2D node is forced to render to a render target (for example, Viewport 2D with rotation), clipping is applied even when you disable clipping in a 2D node.
When you change the Samples property of a Render Target Texture you have to restart the Preview to apply the change.
When the glyph cache texture in Kanzi Studio is full, the application performance decreases in Kanzi Studio. This does not affect the performance of your Kanzi application when you build it and appropriately adjust the size of the glyph cache texture for your target platform. See Glyph cache texture size.
The
Node2D_plugin
example prints warnings when you run it in the Preview.Kanzi application freezes when user scrolls a Trajectory List Box 3D with negative item spacing absolute value of which is higher than the width of list box items.
Setting the recognition threshold for the pinch gesture using the
PinchManipulator::setScaleRecognitionThreshold
andPinchManipulator::setRotationRecognitionThreshold
functions does not work.When you create a Prefab Placeholder 3D node, in some cases Kanzi selects a prefab that it cannot instantiate. This can cause undefined behavior and the Preview to show incorrect content.
Workaround:
Press F8 to exit the Preview.
In the Prefab Placeholder 3D node set the prefab to the correct prefab.
Press F5 to start the Preview.
- On platforms that support only ES2 in some cases Kanzi does not render the content accurately.
There is an issue in Kanzi Engine Java API that causes a memory leak when you use
ObjectRef
without explicitly closing it after use.Workarounds:
Instantiate
ObjectRef
in try-with-resource blocks.After use, explicitly call
close()
onObjectRef
instances.
See Object lifetime.
Known issues in Kanzi Studio¶
Kanzi installer fails to install VC++ 2017 x64 redistributable if you have already installed it on top of VC++ 2015 x64 or x86 redistributable.
Workaround: Manually run the VC++ 2017 x64 redistributable installer and select to the option to repair the installation. The easiest way to do this is to run the Add or Remove Programs, click modify next to the VC++ 2017 x64 redistributable, and then repair.
When you import the same dds file twice, Kanzi Studio creates an invalid texture and shows invalid content in the Image property dropdown menus.
Workaround: Update the file in Windows Explorer, or delete the dds file and its texture before importing them again.
The device driver for the AMD Radeon R9 M370X included in the Boot Camp update 6.0 causes the Preview to not work. To fix the issue, use the Windows Device Manager to roll back to the previous version of the driver.
Importing fbx files which contain animations that use custom pivot points, can cause Kanzi Studio to terminate. This is caused by a defect in the FBX importer provided in the Autodesk's FBX SDK.
After the import fails, open the Kanzi Studio project:
In the Library > Resource Files > 3D Assets select the fbx file that caused Kanzi Studio to terminate.
In the Properties disable the Convert Pivot Points property.
When disabled, Kanzi Studio ignores the custom pivot points in the fbx file, which can affect the rotation and scale animations for nodes that use custom pivot points.
When enabled, Kanzi Studio resets the pivot points to the default positions without making visual changes to animations. This is the recommended setting because Kanzi Studio does not support custom pivot points.
Custom pivot points contain an additional transform which Kanzi Studio bakes into a single transform. In some cases, custom pivot points do not contain any data, so disabling this option does not affect the content.
In the Library > Resource Files > 3D Assets right-click the fbx file that caused Kanzi Studio to terminate, and select Import 3D Asset File to import the file.
Kanzi Studio does not support importing of animated pivot points.
Kanzi Studio does not support these glTF 2.0 features:
Double-sided materials
Point and line primitives
Samplers with differing wrap modes for S and T dimensions. Kanzi Studio uses the wrap mode for S dimension for both.
OpenGL ES (IMG) graphics API is not stable enough to be used for development. Use the IMG graphics API only for testing. For content development use the OpenGL. Set the Default Preview OpenGL ES Wrapper in the Edit > User Preferences > Advanced > Default Preview OpenGL ES Wrapper.
When you run Kanzi Studio in Parallels or VMWare Fusion, the IMG Preview OpenGL ES Wrapper does not work because of a bug in the IMG wrapper.
Workaround: Use the GL wrapper.
Kanzi Studio is compatible only with screen DPI settings set to 100%.
When you close the Node Tree window, the selection in the window does not update correctly.
Thumbnails are not rendered correctly for all assets.
Copy-pasting in the Node Tree a Scene prefab that contains a skinned mesh does not work.
Workaround: Drag and drop the Scene prefab from the Prefabs to the location in your project where you want to use it.
When you use the keyboard to move the free camera in the Preview, the Camera tool Reset Camera command does not correctly reset the camera.
Workaround: Use the mouse to rotate the camera and then use the Reset Camera command in the Preview.
When you reload the changes from a referenced Kanzi Studio project that is opened in another instance of Kanzi Studio, Kanzi Studio can become unstable.
Workaround: Close the referenced project before you reload the changes in the project where the project is referenced.
When a node contains multiple instances of the same prefab, you cannot create a binding from the node that contains these prefabs to the properties of nodes inside an instance of that prefab.
Workaround: Make the properties to which you want to bind available in the root of the prefab and create the bindings in the root of the prefab instance. See Customizing instances of a node prefab.
When you change the value of the Prefab Template property of a Prefab View, Kanzi fails to show the default values of the properties of the prefab template. This happens when you change the value of the property in any other way than by setting it in the Properties, such as when you use a state manager or application code. The same issue occurs when you change the value of the Render Pass Prefab property in a Render Pass View.
Workaround: In Kanzi Studio add to the Prefab View or Render Pass View the properties of each prefab template or render pass prefab that you set the Prefab View or Render Pass View to use.
Kanzi Studio does not support setting the Mesh Material property of a primitive mesh to a material from a referenced project.
Workaround: Use the Material (Model3D.Material) property to set the material. The value of the Material property overrides the value of the Mesh Material property.
When you disable or delete a To Source binding, the Preview does not show the result of the disabling or deleting.
Workaround: To see the result, restart the Preview.
Known issues in the Kanzi SDK¶
The Coin example does not run on the x86/x86_64 Android emulator.
Known issues when using Kotlin and the Kanzi Android framework¶
When using Android Studio to convert a Java project to Kotlin, the default generated gradle script uses the latest version of Kotlin by default. This can result in an error similar to:
The minCompileSdk (31) specified in a dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties) is greater than this module's compileSdkVersion (android-28). Dependency: androidx.core:core-ktx:1.8.0-alpha01.
Workaround: Kanzi was tested with Kotlin version 1.6.0. Explicitly select the version of Kotlin in the Gradle script.
Replace
implementation "androidx.core:core-ktx:+"
with
implementation "androidx.core:core-ktx:1.6.0"
or
implementation "androidx.core:core-ktx:$kotlin_version"
When adding custom types defined in Kotlin, standard requirements for metadata and the create method cannot be static as they are in Java because Kotlin does not have static methods or members.
Workaround: Move the static members into a Kotlin companion object. The
@JvmStatic
annotation is required for the create method. The@JvmField
annotation is required on metadata. For example:class MyDataSource private constructor(domain: Domain, handle: Long, metaclass: Metaclass) : DataSource(domain, handle, metaclass) { ... companion object { @Metadata @JvmField val metaclass = Metaclass("MyDataSource", MyDataSource::class.java) @JvmStatic fun create(domain: Domain?, name: String?): ObjectRef<MyDataSource> { return createDerived(domain, name, metaclass) } } ... }
When using the
exportJarDebug
orexportJarRelease
Gradle tasks to generate a jar file for use with the Kanzi Preview, the Kotlin runtime libraries are not included causing it to fail at runtime.Workaround: Modify the plugin Gradle script to also bundle the Kotlin runtime with the generated jar file. Add this code to the Gradle script after the line
from("build/intermediates/javac/${buildType.name}/classes/")
:from("build/tmp/kotlin-classes/${buildType.name}/") from { configurations.debugRuntimeClasspath.collect { if (it.name.contains("kotlin-stdlib")) { zipTree(it) } } } { exclude "META-INF/**/module-info.class" include "**/*.class" exclude "*" }
When you use Kotlin to define a custom property definition of type
Int
,Float
, orBoolean
, the plugin terminates at runtime with an error message similar toAssertion Failed: Property type invalid: boolean
. This is due to a difference between the these types in Kotlin and Java. There is no workaround for this issue.
Known issues on platforms¶
When you use QNX 7.0.0 and update your QNX software through the QNX Software Center, the compilation of Kanzi applications fails with error
Kanzi-3_6_5-qnx700_screen_aarch64-es3-freetype-static/Engine/include/kanzi/core/cpp/cstdio.hpp:42:12: error: 'std::snprintf' has not been declared
QNX introduced this error in an update of their software development platform where the
std::snprintf
is missing in header files.Workaround: To remove the compilation error, add to the preprocessor flags the
-DKZ_USE_C99_SNPRINTF
definition.