KL2DFG コマンドラインユーティリティ

kl2dfg はコマンドラインEXEです。与えられた KL エクステンションから Canvas プリセットファイルを生成します。生成に成功すると kl2dfg.log という名の処理結果を記載したファイルが出力先のフォルダに作成されます。成果物のプリセットを Canvas で使用するには FABRIC_DFG_PATH 環境変数に指定したフォルダに配置します。もしくは、エクステンションフォルダ直下に dfgPresets サブフォルダを用意しCanvasプリセットファイルをおきます。 エクステンション・マニフェストファイル により詳しい情報があります。

KL2DFGを試すには、Favric環境変数が設定されたシェル( Fabric Engine ライセンスのインストール 参照)を開き、以下をタイプします。

kl2dfg

Result:

kl2dfg can be used to generate preset files out of KL extensions.
For more options use kl2dfg --help

kl2dfg はいくつかのオプションをサポートします。kl2dfg に help フラグを追加し一覧を表示します。

kl2dfg --help

Result:

kl2dfg can be used to generate preset files out of KL extensions.

Usage:    kl2dfg [options] FPMFILE OUTPUTDIR
Example:  kl2dfg Math.fpm.json /temp/presets/Math

Valid options:
  -list                 Lists all of the valid doxygen qualifiers.
  -inheritance          Enables inheritance for generated presets.
  -polyThis             Enables polymorphism with respect to 'this' for generated presets.
  -polyParams           Enables polymorphism with respect to parameters for generated presets.
  -genAllArrays         Automatically generates all array presets.
  -addExecutePort       Automatically adds a leading execute port for all presets.
  -polyThisInTypeDir    Place 'polyThis' presets in type directory.
  -noPolyThisInFuncDir  Do not place 'polyThis' presets in 'Func' directory.

利用可能なオプション:

リスト(list)

kl2dfg での振舞を指定する事のできる doxygen モディファイアのリストを提示します。関数内に doxygenスタイルのコメントとして Doxygen 修飾子を使用できます。以下に例を示します:

/// \dfgPresetTitle MyPresetName
function Boolean someFunction(Scalar a)

このようにすると、kl2dfgはその関数の名前ではなく、異なる別名をプリセットの名としてつかえます。修飾子の完全なリストを確認するには list フラグををたて実行してください。

kl2dfg -list

Result:

kl2dfg can be used to generate preset files out of KL extensions.

The kl code can be annotated within doxygen style comments to control
kl2dfg's behavior. Find a list of doxygen qualifiers below:

\dfgPresetCreate
Forces creation of preset

\dfgPresetOmit
Avoids creation of preset, obsolete if function also has \internal

\dfgPresetTitle "title"
Overrides the title of the preset

\dfgPresetFolder "myFolder"
Relative path for the folder to use for the preset

\dfgPresetCacheRule "Never"
Sets up the cache rule to use for the preset

\dfgPresetColor Color(255, 0, 0)
Overdrives the preset body + header color

\dfgPresetHeaderColor Color(0, 255, 0)
Overdrives just the preset header color, can be combined with dfgPresetColor

\dfgPresetTextColor Color(0, 255, 0)
Overdrives the color of the text inside the node

\dfgPresetDefault port Value
Sets up the default value to use for a given input port

\dfgPresetType port Type
Overrides the KL port type a given input port

\dfgReturnIfNull
If specified, the function preset will return if the object calling the function is null 

\dfgThrowExceptionIfNull
If specified, the function preset will throw an exception if the object calling the function is null 

\dfgPresetRange port (0.0, 1.0)
Defines the range to use for sliders, works with Floats and Integers

\dfgPresetCombo port ("label1", "label2", ...)
Enables the use of a combo box in the ui, works for Integers and Strings

\dfgPresetHidden port true
Hides a given port from the UI when editing a node (or shows it if set to false)

\dfgPresetTooltip
  My elaborate tooltip description for the node.
\enddfgPresetTooltip
Shows a tooltip on the node. If this isn't provided the plain text in the comment
above the function will be used for the tooltip.

\dfgCollapsedState state
Sets the default collapsed state for a node. Can be 0, 1 or 2.

\dfgDocUrl http:///www.mydomain.com/docs/mydoc.html
Sets up documentation links for the generated nodes.

\dfgAlwaysShowDaisyChainPorts true
Ensures that the daisy chain ports on the right of input ports are always shown.

\dfgCreateArrayPreset
If specified the array presets for the given type / function will be generated. This is independent of the -genAllArrays command line flag.

\dfgUseInheritance
If specified on a KL type (struct or object) all inherited methods will also be generated as presets. This is independent of the -inheritance command line flag.

\dfgAddExecutePort
If specified the function preset will contain an execute port, which allows to daisy chain functions. This is independent of the -addExecutePort command line flag

\dfgArrayPexMargin 10000
The margin used when switching from a linear loop to pex in array presets.

\dfgArrayPexDisable
If true disables the pex calls.

Examples:

Exts/Math/RotationOrder.kl
Exts/Math/RotationOrder/RotationOrder.canvas
Exts/Geometry/PolygonMesh/AddTeapot.canvas

polyThis

あるエクステンションに含まれる同じ表記(notation)をもつ複数のメソッド ―― 一般的な”this”型(あるいは返り型、以下の例では関数に関しては)―― に対し、kl2dfg は1つのプリセットを生成します。以下例示

function SInt32 Vec3.getMySum() { ... }

function SInt32 Vec4.getMySum() { ... }

この例では1つの Canvas プリセットファイル、 Func.getMySum が出力されます。 Vec3Vec4 2つに別れたプリセットではありません。

注釈

多態性を持つノード(Polymorphic nodes) に多態性の及ぼす重大性についての情報があります。

polyParams

kl2dfg では、エクステンション内の、パラメータの型に関して、同じ表記をもつメソッドを1つのプリセットとして生成します。

function SInt32 MyType.someFunc(Integer x) { ... }

function SInt32 MyType.someFunc(Float32 x) { ... }

一つの Canvasプリセットファイル、 MyType.someFunc が出力され、ひとつ目の引数パラメータの型が多態となります。

注釈

多態性を持つノード(Polymorphic nodes) に多態性の及ぼす重大性についての情報があります。

継承(inheritance)

メソッドの継承を伴うプリセットの生成を有効にする例:

interface i {
  String getName();
};

object a : i {
  SInt32 index;
};

function a.getName() {
  return 'a'+this.index;
}

object b : a {
};

function b.reportSomething() {
  report('something');
}

継承を無効にしたプリセットの生成結果:

a.getName
b.reportSomething

継承を有効にしたプリセットの生成結果:

a.getName
b.getName
b.reportSomething

プリセット毎にこの機能を有効にするには、 dfgUseInheritance doxygen 修飾子を使用します。

genAllArrays

与えられたメソッドの、配列プリセットの生成を有効にします。これにより Canvas 内部で配列をより容易に扱えるようになります。この機能を各プリセット毎に有効にするには dfgCreateArrayPreset doxygen 修飾子を使用します。

注釈

この機能は将来の kl2dfg バージョンでは非推奨となる予定です。

addExecutePort

注釈

非推奨となったオプションです。バージョン2.2.0以降では Canvas中の全インスタンスノードは1番目のポートに自動で 「exec」の名前の Execute ポートが付属します。

Canvas プリセットでのデイジーチェーン(カスケード)を容易にするため、kl2dfg は Canvas プリセットの第一ポートとなるエクストラポートの追加をサポートしています。この機能をプリセット毎に使用するには dfgAddExecutePort doxygen 修飾子を使用します。

polyThisInTypeDir

既定では、’this’中の多態プリセットは通常のターゲットディレクトリの ‘Func’ サブディレクトリにのみ配置されます。このフラグを使用すると、’this’ が適用される型のディレクトリそれぞれにに配置されるようになります。

noPolyThisInFuncDir

既定では、’this’中の多態プリセットは通常のターゲットディレクトリの ‘Func’ サブディレクトリにのみ配置されます。このフラグを使用すると、この挙動を無効にします。

全ての math プリセットを一時的な場所に生成します:

kl2dfg $FABRIC_DIR/Exts/Builtin/Math/Math.fpm.json $TEMP

Result:

[FABRIC:MT] Fabric Engine version 2.4.0 (development)
[FABRIC:MT] Loading DFG presets from D:\fabric\release\Presets\DFG
[FABRIC:MT] Loading DFG presets from D:\fabric\release\Tools\Kraken\Presets\DFG
[FABRIC:MT] Registered extensions {Alembic:1.1.0,AlembicImporter:1.0.0,AlembicWrapper:1.7.0,Animation:1.1.1,AttributeHelpers:1.0.1,BinPacking:1.0.0,Bullet:1.0.3,BulletHelpers:1.0.0,Characters:1.2.0,Containers:1.2.0,DFGWrapper:1.2.0,FabricInterfaces:1.1.0,FabricSynchronization:1.2.0,Fbx:1.2.1,FbxHelpers:1.1.0,FbxImporter:1.0.0,FileIO:1.3.1,FreeTypeGL:2.3.0,GenericImporter:1.0.0,Geometry:1.6.0,Images:2.1.0,InlineDrawing:1.6.0,JSON:1.1.0,LA:1.0.0,Manipulation:1.2.1,Math:1.5.0,FabricOBJ:1.1.0,ObjImporter:1.0.0,OGLWrappers:1.2.0,FabricOGL:1.1.0,OpenImageIO:1.1.0,OSOGL:1.1.0,Parameters:1.1.0,Singletons:1.1.2,FabricStatistics:1.1.1,Text:2.4.0,Util:1.4.1} in directory: D:\fabric\release\Exts
[FABRIC:MT] Registered extensions {Kraken:1.2.0,KrakenAnimation,KrakenForCanvas} in directory: D:\fabric\release\Tools\Kraken\Exts
[FABRIC:MT] IRCache: Not pruning since last prune was less than 24 hours ago
Error when loading extension: KLExtension: 'release/Exts/Builtin/Math/Math' uses a non existing KL file 'Math.kl'.