grimoirejs-core
はじめに
Grimoire.jsの本体であるgrimoirejs-coreについてのドキュメントです。
grimoirejs-coreは、Grimoire.jsで用いられるすべての基盤であり、あらゆるプラグインを管理、統括します。
grimoirejs-coreは主に以下の機能を持ちます。
- GomlNode,Componentの定義の管理
- webページがロードされたときの
goml
のパース - GomlNodeやComponentのツリー構造の管理
- Gomlノード間のメッセージング管理
このページではまず、主にwebページ上でGrimoire.jsを操作するために利用されるインタフェースについて解説します。
次に、各種プラグイン開発の際に必要となるであろう基本クラス群と、そこで利用されるデータ型について説明し、最後に、Grimoire.jsのシステムに関わるいくつかのクラスを紹介します。
インタフェース
Grimoire.jsの機能を利用するとき最も頻繁に利用するのは、globalにgr
という識別子で現れるGrimoireInterface
です。
Grimoire.jsのすべての設定はここから行います。GrimoireInterface
から、GomlInterface
,NodeInterface
を取得できます。
GrimoireInterface
GomlInterface
NodeInterface
基本クラス
grimoirejs-coreでは、すべてのオブジェクトはGomlNode
とComponent
,Attribute
などの構造で表現されます。
これらの設計指向については、ガイドを参照してください。
GomlNode
Component
Attribute
Converter
NSIdentity
NSDictionary
データ型
NodeDeclaration
ComponentDeclaration
AttributeDeclaration
その他
GomlLoader
GomlParser
Constants
コンバーター
String
出力型
1 | string |
入力可能なもの
- String ・・・ そのまま出力されます。
- Object ・・・ toString関数が存在する場合それが呼び出されます。
Number
出力型
1 | number |
入力可能なもの
- String・・・Number.parseNumberにより処理され出力されます。
- Number・・・そのまま出力されます。
Boolean
出力型
1 | boolean |
入力可能なもの
- String・・・”true”もしくは”false”のみ
- Boolean・・・そのまま出力されます。
Component
出力型
1 | <T> where T extends Component |
コンバーター引数
- target・・・取得対象のコンポーネント名
入力可能なもの
- String・・・クエリとして解釈されます。属するツリーから該当する最初の一つのノードを見つけ出し、そこから
target
に合致するコンポーネントを取得します。 - GomlNode・・・対象となるノードの中から最初の
target
に合致するコンポーネントを取り出します。 - Component・・・そのまま渡されます(名称が
target
に指定されたものでない時例外がでます)
Vector2
出力型
1 | Vector2 |
入力可能なもの
- String・・・Vector2.parseにより処理されます。
- Vector2・・・そのまま渡されます。
Vector3
出力型
1 | Vector3 |
入力可能なもの
- String・・・Vector3.parseにより処理されます。
- Vector3・・・そのまま処理されます。
Vector4
出力型
1 | Vector4 |
入力可能なもの
- String・・・Vector4.parseにより処理されます。
- Vector4・・・そのまま処理されます。
Color3
1 | Color3 |
入力可能なもの
- String・・・Color3.parseにより処理されます。
- Color3・・・そのまま処理されます。
- Color4・・・Alpha値を無視したColor3を生成して渡されます。
Color4
1 | Color4 |
入力可能なもの
- String・・・Color4.parseにより処理されます。
- Color4・・・そのまま処理されます。
- Color3・・・Alpha値を1.0としたColor4を生成して渡されます。
AssetLoadingManager コンポーネント
非同期的な解決を必要とするようなリソース群のロードを管理しているコンポーネント。
このコンポーネントにより、初期時にロード画面を表示します。
また、ロード終了後に他のコンポーネントに処理の開始を通知してレンダリングループを開始します。
属性
属性名 | コンバーター | デフォルト値 | その他 |
---|---|---|---|
loadingProgress | number | 0 | なし |
autoStart | boolean | true | なし |
loadingProgress 属性
converter
: numberdefaultValue
: 0
読み取り専用。現在のロード状況を100分率で返します。
autoStart 属性
converter
: booleandefaultValue
: true
リソースのロード終了後に自動的にレンダリングループを開始するかどうか。
これがfalseの場合、ユーザーが自らLoopManagerに対してbeginメソッドを呼ばなければ、一切の描画処理は行われません。
Camera コンポーネント
シーンの描画をするカメラの役割をするコンポーネントです。
シーン中の物体を描画する際にこのコンポーネントにより生成されたビュー行列や射影行列が用いられます。
属性
属性名 | コンバーター | デフォルト値 | その他 |
---|---|---|---|
fovy | number | 0.3 | なし |
near | number | 0.01 | なし |
far | number | 10 | なし |
aspect | number | 1.6 | なし |
fovy 属性
converter
: numberdefaultValue
: 0.3
視野角。ラジアン単位で指定します。
1/2π以上の値は指定できません。
near 属性
converter
: numberdefaultValue
: 0.01
近クリップ面(カメラから物体が映る最短の距離)を指定します。
必ず、正の値を指定する必要があります。
far 属性
converter
: numberdefaultValue
: 10
遠クリップ面(カメラから物体が映る最長の距離)を指定します。
遠ければ遠いほどいいわけではなく、近クリップ面との差があまりにも大きすぎると、物体の前後関係が曖昧になってしまう場所が発生し得ます。
aspect 属性
converter
: numberdefaultValue
: 1.6
スクリーン上のアスペクト比を指定します。
CanvasInitializer コンポーネント
キャンバスの初期化を司るコンポーネントです。
このコンポーネントに対してtreeInitializedが呼ばれた瞬間にスクリプトタグの存在した場所に対して<canvas>
タグの生成を試みます。
属性
属性名 | コンバーター | デフォルト値 | その他 |
---|---|---|---|
width | number | 640 | なし |
height | number | 480 | なし |
width 属性
converter
: numberdefaultValue
: 640
キャンバスの幅を指します。
height 属性
converter
: numberdefaultValue
: 480
キャンバスの高さを指します。
Geometry コンポーネント
あるプリミティブなどのジオメトリを含まれているGOML内でで使用可能にします。
このコンポーネントはtype
属性に合わせて必要な属性値を動的に生成します。
属性
属性名 | コンバーター | デフォルト値 | その他 |
---|---|---|---|
type | string | undefined | なし |
name | string | undefined | なし |
type 属性
converter
: stringdefaultValue
: undefined
生成するジオメトリのタイプです。任意のジオメトリをGeometryFactory.addType
から追加することによりユーザーが独自のパラメーターを割り当てたジオメトリを作成することができます。
name 属性
converter
: stringdefaultValue
: undefined
生成したジオメトリにつける名前です。これを用いてGeometryConverter
は対象となるジオメトリを識別します。
例えば、MeshRenderer
のgeometry
属性などに指定する名前になります。
GeometryRegistory コンポーネント
Geometryの登録に関する処理をあらかじめ行うためのコンポーネントです。
gomlノードにあらかじめ含められており、ユーザーが直接いじる必要はほぼありません。
属性なし
LoopManager コンポーネント
レンダリングループを管理するコンポーネントです。
loopEnabledがtrueである場合、自動的にそのブラウザのrequestAnimationFrameの際に処理を実行します。
属性
属性名 | コンバーター | デフォルト値 | その他 |
---|---|---|---|
loopEnabled | boolean | false | なし |
loopEnabled 属性
converter
: booleandefaultValue
: false
ループが有効かどうか。
通常、この属性を編集する必要はありません。AssetLoadingManagerコンポーネントがロード終了時に自動的にtrueにマークします。
Material コンポーネント
属性
属性名 | コンバーター | デフォルト値 | その他 |
---|---|---|---|
type | string | undefined | なし |
type 属性
converter
: stringdefaultValue
: undefined
MaterialContainer コンポーネント
属性
属性名 | コンバーター | デフォルト値 | その他 |
---|---|---|---|
material | material | undefined | componentBoundTo “_materialComponent” |
material 属性
converter
: materialdefaultValue
: undefined
MaterialImporter コンポーネント
属性
属性名 | コンバーター | デフォルト値 | その他 |
---|---|---|---|
type | string | undefined | なし |
src | string | undefined | なし |
type 属性
converter
: stringdefaultValue
: undefined
src 属性
converter
: stringdefaultValue
: undefined
MaterialManager コンポーネント
属性なし
MeshRenderer コンポーネント
属性
属性名 | コンバーター | デフォルト値 | その他 |
---|---|---|---|
geometry | geometry | “quad” | なし |
targetBuffer | string | “default” | なし |
layer | string | “default” | なし |
drawCount | number | Number.MAX_VALUE | なし |
drawOffset | number | 0 | なし |
geometry 属性
converter
: geometrydefaultValue
: “quad”
targetBuffer 属性
converter
: stringdefaultValue
: “default”
layer 属性
converter
: stringdefaultValue
: “default”
drawCount 属性
converter
: numberdefaultValue
: Number.MAX_VALUE
drawOffset 属性
converter
: numberdefaultValue
: 0
MouseCameraControl コンポーネント
属性
属性名 | コンバーター | デフォルト値 | その他 |
---|---|---|---|
rotateX | number | 1 | なし |
rotateY | number | 1 | なし |
moveZ | number | 1 | なし |
moveSpeed | number | 1 | なし |
rotateX 属性
converter
: numberdefaultValue
: 1
rotateY 属性
converter
: numberdefaultValue
: 1
moveZ 属性
converter
: numberdefaultValue
: 1
moveSpeed 属性
converter
: numberdefaultValue
: 1
RenderBuffer コンポーネント
属性
属性名 | コンバーター | デフォルト値 | その他 |
---|---|---|---|
name | string | undefined | なし |
name 属性
converter
: stringdefaultValue
: undefined
Renderer コンポーネント
属性
属性名 | コンバーター | デフォルト値 | その他 |
---|---|---|---|
camera | component | “camera” | target “CAMERA” |
viewport | viewport | “auto” | なし |
camera 属性
converter
: componentdefaultValue
: “camera”
viewport 属性
converter
: viewportdefaultValue
: “auto”
RendererManager コンポーネント
属性
属性名 | コンバーター | デフォルト値 | その他 |
---|---|---|---|
bgColor | color4 | new Color4(0, 0, 0, 1) | なし |
bgColor 属性
converter
: color4defaultValue
: new Color4(0, 0, 0, 1)
RenderQuad コンポーネント
属性
属性名 | コンバーター | デフォルト値 | その他 |
---|---|---|---|
out | string | “default” | なし |
depthBuffer | string | undefined | なし |
targetBuffer | string | “default” | なし |
clearColor | color4 | “#0000” | なし |
clearColorEnabled | boolean | true | なし |
clearDepthEnabled | boolean | true | なし |
clearDepth | number | 1.0 | なし |
out 属性
converter
: stringdefaultValue
: “default”
depthBuffer 属性
converter
: stringdefaultValue
: undefined
targetBuffer 属性
converter
: stringdefaultValue
: “default”
clearColor 属性
converter
: color4defaultValue
: “#0000”
clearColorEnabled 属性
converter
: booleandefaultValue
: true
clearDepthEnabled 属性
converter
: booleandefaultValue
: true
clearDepth 属性
converter
: numberdefaultValue
: 1.0
RenderScene コンポーネント
属性
属性名 | コンバーター | デフォルト値 | その他 |
---|---|---|---|
layer | string | “default” | なし |
depthBuffer | string | undefined | なし |
out | string | “default” | なし |
clearColor | color4 | “#0000” | なし |
clearColorEnabled | boolean | true | なし |
clearDepthEnabled | boolean | true | なし |
clearDepth | number | 1.0 | なし |
material | material | undefined | componentBoundTo “_materialComponent” |
layer 属性
converter
: stringdefaultValue
: “default”
depthBuffer 属性
converter
: stringdefaultValue
: undefined
out 属性
converter
: stringdefaultValue
: “default”
clearColor 属性
converter
: color4defaultValue
: “#0000”
clearColorEnabled 属性
converter
: booleandefaultValue
: true
clearDepthEnabled 属性
converter
: booleandefaultValue
: true
clearDepth 属性
converter
: numberdefaultValue
: 1.0
material 属性
converter
: materialdefaultValue
: undefined
Scene コンポーネント
属性なし
Texture コンポーネント
属性
属性名 | コンバーター | デフォルト値 | その他 |
---|---|---|---|
src | string | undefined | なし |
minFilter | enum | “LINEAR” | table LINEAR: WebGLRenderingContext.LINEAR, NEAREST: WebGLRenderingContext.NEAREST, NEAREST_MIPMAP_NEAREST: WebGLRenderingContext.NEAREST_MIPMAP_NEAREST, NEAREST_MIPMAP_LINEAR: WebGLRenderingContext.NEAREST_MIPMAP_LINEAR, LINEAR_MIPMAP_NEAREST: WebGLRenderingContext.LINEAR_MIPMAP_NEAREST, LINEAR_MIPMAP_LINEAR: WebGLRenderingContext.LINEAR_MIPMAP_LINEAR |
magFilter | enum | “LINEAR” | table LINEAR: WebGLRenderingContext.LINEAR, NEAREST: WebGLRenderingContext.NEAREST |
wrapS | enum | “REPEAT” | table REPEAT: WebGLRenderingContext.REPEAT, MIRRORED_REPEAT: WebGLRenderingContext.MIRRORED_REPEAT, CLAMP_TO_EDGE: WebGLRenderingContext.CLAMP_TO_EDGE |
wrapT | enum | “REPEAT” | table REPEAT: WebGLRenderingContext.REPEAT, MIRRORED_REPEAT: WebGLRenderingContext.MIRRORED_REPEAT, CLAMP_TO_EDGE: WebGLRenderingContext.CLAMP_TO_EDGE |
src 属性
converter
: stringdefaultValue
: undefined
minFilter 属性
converter
: enumdefaultValue
: “LINEAR”
magFilter 属性
converter
: enumdefaultValue
: “LINEAR”
wrapS 属性
converter
: enumdefaultValue
: “REPEAT”
wrapT 属性
converter
: enumdefaultValue
: “REPEAT”
TextureBuffer コンポーネント
属性
属性名 | コンバーター | デフォルト値 | その他 |
---|---|---|---|
name | string | undefined | なし |
format | enum | WebGLRenderingContext.RGBA | table RGBA: WebGLRenderingContext.RGBA, RGB: WebGLRenderingContext.RGB |
name 属性
converter
: stringdefaultValue
: undefined
format 属性
converter
: enumdefaultValue
: WebGLRenderingContext.RGBA
Transform コンポーネント
属性
属性名 | コンバーター | デフォルト値 | その他 |
---|---|---|---|
“position” | vector3 | Vector3.Zero | なし |
“rotation” | rotation3 | Quaternion.Identity | なし |
“scale” | vector3 | Vector3.One | なし |
“position” 属性
converter
: vector3defaultValue
: Vector3.Zero
“rotation” 属性
converter
: rotation3defaultValue
: Quaternion.Identity
“scale” 属性
converter
: vector3defaultValue
: Vector3.One