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” | tableLINEAR: 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” | tableLINEAR: WebGLRenderingContext.LINEAR, NEAREST: WebGLRenderingContext.NEAREST |
| wrapS | enum | “REPEAT” | tableREPEAT: WebGLRenderingContext.REPEAT, MIRRORED_REPEAT: WebGLRenderingContext.MIRRORED_REPEAT, CLAMP_TO_EDGE: WebGLRenderingContext.CLAMP_TO_EDGE |
| wrapT | enum | “REPEAT” | tableREPEAT: 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 | tableRGBA: 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