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では、すべてのオブジェクトはGomlNodeComponent,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: number
  • defaultValue: 0

読み取り専用。現在のロード状況を100分率で返します。

autoStart 属性

  • converter: boolean
  • defaultValue: true

リソースのロード終了後に自動的にレンダリングループを開始するかどうか。
これがfalseの場合、ユーザーが自らLoopManagerに対してbeginメソッドを呼ばなければ、一切の描画処理は行われません。

Camera コンポーネント

シーンの描画をするカメラの役割をするコンポーネントです。
シーン中の物体を描画する際にこのコンポーネントにより生成されたビュー行列や射影行列が用いられます。

属性

属性名 コンバーター デフォルト値 その他
fovy number 0.3 なし
near number 0.01 なし
far number 10 なし
aspect number 1.6 なし

fovy 属性

  • converter: number
  • defaultValue: 0.3

視野角。ラジアン単位で指定します。
1/2π以上の値は指定できません。

near 属性

  • converter: number
  • defaultValue: 0.01

近クリップ面(カメラから物体が映る最短の距離)を指定します。
必ず、正の値を指定する必要があります。

far 属性

  • converter: number
  • defaultValue: 10

遠クリップ面(カメラから物体が映る最長の距離)を指定します。
遠ければ遠いほどいいわけではなく、近クリップ面との差があまりにも大きすぎると、物体の前後関係が曖昧になってしまう場所が発生し得ます。

aspect 属性

  • converter: number
  • defaultValue: 1.6

スクリーン上のアスペクト比を指定します。

CanvasInitializer コンポーネント

キャンバスの初期化を司るコンポーネントです。
このコンポーネントに対してtreeInitializedが呼ばれた瞬間にスクリプトタグの存在した場所に対して<canvas>タグの生成を試みます。

属性

属性名 コンバーター デフォルト値 その他
width number 640 なし
height number 480 なし

width 属性

  • converter: number
  • defaultValue: 640

キャンバスの幅を指します。

height 属性

  • converter: number
  • defaultValue: 480

キャンバスの高さを指します。

Geometry コンポーネント

あるプリミティブなどのジオメトリを含まれているGOML内でで使用可能にします。
このコンポーネントはtype属性に合わせて必要な属性値を動的に生成します。

属性

属性名 コンバーター デフォルト値 その他
type string undefined なし
name string undefined なし

type 属性

  • converter: string
  • defaultValue: undefined

生成するジオメトリのタイプです。任意のジオメトリをGeometryFactory.addTypeから追加することによりユーザーが独自のパラメーターを割り当てたジオメトリを作成することができます。

name 属性

  • converter: string
  • defaultValue: undefined

生成したジオメトリにつける名前です。これを用いてGeometryConverterは対象となるジオメトリを識別します。
例えば、MeshRenderergeometry属性などに指定する名前になります。

GeometryRegistory コンポーネント

Geometryの登録に関する処理をあらかじめ行うためのコンポーネントです。

gomlノードにあらかじめ含められており、ユーザーが直接いじる必要はほぼありません。

属性なし

LoopManager コンポーネント

レンダリングループを管理するコンポーネントです。
loopEnabledがtrueである場合、自動的にそのブラウザのrequestAnimationFrameの際に処理を実行します。

属性

属性名 コンバーター デフォルト値 その他
loopEnabled boolean false なし

loopEnabled 属性

  • converter: boolean
  • defaultValue: false

ループが有効かどうか。
通常、この属性を編集する必要はありません。AssetLoadingManagerコンポーネントがロード終了時に自動的にtrueにマークします。

Material コンポーネント

属性

属性名 コンバーター デフォルト値 その他
type string undefined なし

type 属性

  • converter: string
  • defaultValue: undefined

MaterialContainer コンポーネント

属性

属性名 コンバーター デフォルト値 その他
material material undefined componentBoundTo
“_materialComponent”


material 属性

  • converter: material
  • defaultValue: undefined

MaterialImporter コンポーネント

属性

属性名 コンバーター デフォルト値 その他
type string undefined なし
src string undefined なし

type 属性

  • converter: string
  • defaultValue: undefined

src 属性

  • converter: string
  • defaultValue: undefined

MaterialManager コンポーネント

属性なし

MeshRenderer コンポーネント

属性

属性名 コンバーター デフォルト値 その他
geometry geometry “quad” なし
targetBuffer string “default” なし
layer string “default” なし
drawCount number Number.MAX_VALUE なし
drawOffset number 0 なし

geometry 属性

  • converter: geometry
  • defaultValue: “quad”

targetBuffer 属性

  • converter: string
  • defaultValue: “default”

layer 属性

  • converter: string
  • defaultValue: “default”

drawCount 属性

  • converter: number
  • defaultValue: Number.MAX_VALUE

drawOffset 属性

  • converter: number
  • defaultValue: 0

MouseCameraControl コンポーネント

属性

属性名 コンバーター デフォルト値 その他
rotateX number 1 なし
rotateY number 1 なし
moveZ number 1 なし
moveSpeed number 1 なし

rotateX 属性

  • converter: number
  • defaultValue: 1

rotateY 属性

  • converter: number
  • defaultValue: 1

moveZ 属性

  • converter: number
  • defaultValue: 1

moveSpeed 属性

  • converter: number
  • defaultValue: 1

RenderBuffer コンポーネント

属性

属性名 コンバーター デフォルト値 その他
name string undefined なし

name 属性

  • converter: string
  • defaultValue: undefined

Renderer コンポーネント

属性

属性名 コンバーター デフォルト値 その他
camera component “camera” target
“CAMERA”

viewport viewport “auto” なし

camera 属性

  • converter: component
  • defaultValue: “camera”

viewport 属性

  • converter: viewport
  • defaultValue: “auto”

RendererManager コンポーネント

属性

属性名 コンバーター デフォルト値 その他
bgColor color4 new Color4(0, 0, 0, 1) なし

bgColor 属性

  • converter: color4
  • defaultValue: 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: string
  • defaultValue: “default”

depthBuffer 属性

  • converter: string
  • defaultValue: undefined

targetBuffer 属性

  • converter: string
  • defaultValue: “default”

clearColor 属性

  • converter: color4
  • defaultValue: “#0000”

clearColorEnabled 属性

  • converter: boolean
  • defaultValue: true

clearDepthEnabled 属性

  • converter: boolean
  • defaultValue: true

clearDepth 属性

  • converter: number
  • defaultValue: 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: string
  • defaultValue: “default”

depthBuffer 属性

  • converter: string
  • defaultValue: undefined

out 属性

  • converter: string
  • defaultValue: “default”

clearColor 属性

  • converter: color4
  • defaultValue: “#0000”

clearColorEnabled 属性

  • converter: boolean
  • defaultValue: true

clearDepthEnabled 属性

  • converter: boolean
  • defaultValue: true

clearDepth 属性

  • converter: number
  • defaultValue: 1.0

material 属性

  • converter: material
  • defaultValue: 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: string
  • defaultValue: undefined

minFilter 属性

  • converter: enum
  • defaultValue: “LINEAR”

magFilter 属性

  • converter: enum
  • defaultValue: “LINEAR”

wrapS 属性

  • converter: enum
  • defaultValue: “REPEAT”

wrapT 属性

  • converter: enum
  • defaultValue: “REPEAT”

TextureBuffer コンポーネント

属性

属性名 コンバーター デフォルト値 その他
name string undefined なし
format enum WebGLRenderingContext.RGBA table

RGBA: WebGLRenderingContext.RGBA,
RGB: WebGLRenderingContext.RGB



name 属性

  • converter: string
  • defaultValue: undefined

format 属性

  • converter: enum
  • defaultValue: WebGLRenderingContext.RGBA

Transform コンポーネント

属性

属性名 コンバーター デフォルト値 その他
“position” vector3 Vector3.Zero なし
“rotation” rotation3 Quaternion.Identity なし
“scale” vector3 Vector3.One なし

“position” 属性

  • converter: vector3
  • defaultValue: Vector3.Zero

“rotation” 属性

  • converter: rotation3
  • defaultValue: Quaternion.Identity

“scale” 属性

  • converter: vector3
  • defaultValue: Vector3.One

ノード