API Foundation

Yurlungur foundations.

基本となるコンセプトは、Pythonインターフェースによるシュガーシンタックスです。 Object(Node) クラス、Attribute クラス、File クラスの基本を知れば、 汎用的な操作ができる設計になっています。

modules:

Object & Node

数多くの3Dアプリケーションも、APIのレベルではノードベースとスタックベースに分けることができます。

UnityはComponent、BlenderはModifierでオブジェクトの振る舞いを制御しますが、 Maya や Houdini といったノードベースのアプリケーションでは、接続する同士の相互作用によって 全体の振る舞いを制御します。

前者のスタックベースのアプリケーションを使う際には YObject、 後者のノードベースのアプリケーションを使う際には YNode がインターフェースの デザインとして違和感なく使うことが出来ます。

アプリケーションが持つ性質を意識して、 Node と Object をそれぞれ使いわけてプログラミングすると良いでしょう。

# 標準ではPython
import yurlungur as yr

obj = yr.YObject("defaultResolution")

# or

node = yr.YNode("defaultResolution")

YNode is eble to initialize that is subclass for YObject. You have to str object. Node オブジェクトのみ connection 関係のメソッドを複数持つ

node = yr.YNode(obj.name)

Attribute

Object based container. これはPyMELをベースにした柔軟なAttributeクラスです。 すべてオブジェクトで扱えるようにアプリケーション間の戻値をラップしています。 これは、getter / setter のインターフェースは、アプリケーション間で異なるためです・

attr(“str”) は文字列ベースのアクセスになるので、予め文字列要素で構成した リストを準備すれば短く書くことができるでしょう。

width = obj.attr("width") # object YAttr
yurlungur.log(width.value)

__getitem__ によるアクセスもサポートしているため、 ユーザー側が今操作しているオブジェクトの状態を気にすることなく はじめからそのプロパティを持っていたかのように振る舞います。

width = obj.width
yr.log(width.value)

width.set(700)

Attribute クラスをわざわざ別設計したように、戻り値はすべてオブジェクトです。 引数に渡したり set するためには、value プロパティを使って、基本データ型に変更する 必要があります。

File

現在のスタンダードはアプリケーション間のデータストリームですが、 ファイルIOを一つのインターフェースでまとめておくことは、 今後どのアプリケーションを使う上でも役に立つものでしょう。

yurlungur.YFile.load()

yurlungur.YFile.save()

Alembic や FBX など汎用ファイルフォーマットのサポートは アプリケーションに依存します。(例えばゲームエンジンでは、一般的なファイルエクスポート機能はサポートされません) staticベースによる実装がyurlungur.command モジュールにまとめられています。

基本となるAPIはここで終わりです。