Welcome on the KUI module's documentation.
Kui is meant to be used with an OpScript node.
You will first need to register the lua module, then you will need to choose how you want to import the module in Katana:
- Use the pre-built nodes for fast and easy setup. See CONFIG_NODE.
- Manually config the scene. See CONFIG_MANUAL.
It is recommended to read at leat CONFIG_MANUAL fully and then CONFIG_NODE to properly understand how KUI works.
Kui is shipped as a lua module.
Kui also require the lllogger module to work.
To register the kui module, you need to put the kui directory in a
location registered by the LUA_PATH
environment variable.
For exemple we put the kui
directory in :
Z:\config\katana
└── kui
├── array.lua
├── hierarchical.lua
└── ...
then our variable will be
set "LUA_PATH=%LUA_PATH%;Z:\config\katana\?.lua"
export LUA_PATH=$LUA_PATH:'/z/config/katana/?.lua'
See Lua | 8.1 – The require Function for more details.
The same need to be done for the lllogger
module that you can find here :
You need to place in the root of the registered folder like :
Z:\config\katana
├── llloger.lua
└── kui
└── ...
So we can simply do local logging = require("lllogger")
(this line is used in all the modules).
You can then have a look at the CONFIG pages for the next steps.
Once installed you can use the pre-made node for a fast and easy setup or configure manually the scene. See CONFIG_NODE.md and CONFIG_MANUAL.md.
KUI has been developed on Katana 4.5.1, tested on 4.0.2 and 3.6.5. Lower versions should be supported but with no guarantees.
The code use Lua tables that cannot store more than 2^27 (134 million) values.
I hope you never reach this amount of values. (something like 44mi points
with XYZ values and 8,3 mi points for a Matrix attribute). A fix would be
to instead use Katana's Array
attribute class internally. Which is already
logged as issue #3
Performances were measured only for hierarchical for now, as it the most heavy method. I should also specify that this is not some highly accurate measurement. It was only to give me a rough idea or wether I needed to run some optimisation on the code or not.
time given is Geolib Pre-traversal Report total time for a preview render using Arnold.
For Hierarchical :
version | time |
---|---|
3.6.5 | ~10s |
4.5.1 | ~15s |
Time to process for Array method is too short to be worth measured.
You can have a look at all the tests I runned, compared to my original "straight-forward" script, here :
https://liamcollod.notion.site/kui-tests-afa7d35c08eb4c36be68e96c98923b47