mobile-graphic-enchant-dev-plugins-gl.enchant.js / js
@fileOverview gl.enchant.js
version: 0.3.7 @require enchant.js v0.4.5+ @require gl-matrix.js 1.3.7+
author: Ubiquitous Entertainment Inc. @description [lang:ja] WebGLを用いた描画ライブラリ enchant.js と組み合わせることで高度な3D描画と、2D描画を組み合わせることができる @detail ベクトル・行列演算にgl-matrix.jsを使用しています. [/lang] [lang:en] Drawing library using WebGL By combining with enchant.js, high quality 3D drawing and combination with 2D drawing is possible @detail Uses gl-matrix.js in vector, matrix operation. [/lang] gl-matrix.js: github.com/toji/gl-matrix/
[lang:ja] enchantにgl.enchant.jsのクラスをエクスポートする. [/lang] [lang:en] Exports gl.enchant.js class to enchant. [/lang]
@scope enchant.gl.Framebuffer.prototype
[lang:ja] WebGLのフレームバッファを管理するクラス.
parameter: {String} width フレームバッファの横幅
parameter: {String} height フレームバッファの縦幅 @constructs [/lang] [lang:en] Class for controlling WebGL frame buffers
parameter: {String} width Frame buffer width
parameter: {String} height Frame buffer height @constructs [/lang]
[lang:ja] フレームバッファをバインドする. [/lang] [lang:en] Bind frame buffer. [/lang]
[lang:ja] フレームバッファをアンバインドする. [/lang] [lang:en] Unbind frame buffer. [/lang]
[lang:ja] オブジェクトを破棄する. [/lang] [lang:en] Destroy object. [/lang]
@scope enchant.gl.Shader.prototype
[lang:ja] WebGLのシェーダプログラムを管理するクラス. バーテックスシェーダのソースとフラグメントシェーダのソースを渡すことでシェーダプログラムが作成される.
parameter: {String} vshader バーテックスシェーダのソース
parameter: {String} fshader フラグメントシェーダのソース @constructs [/lang] [lang:en] Class to control WebGL shader program. A shader program will be created by delivering the vertex shader source and fragment shader source.
parameter: {String} vshader Vertex shader source
parameter: {String} fshader Fragment shader source @constructs [/lang]
[lang:ja] バーテックスシェーダのソース @type String [/lang] [lang:en] Vertex shader source @type String [/lang]
[lang:ja] フラグメントシェーダのソース @type String [/lang] [lang:en] Fragment shader source @type String [/lang]
[lang:ja] シェーダプログラムをコンパイルする. コンストラクタからシェーダソースを渡した場合は自動的にコンパイルされる. @example var shader = new Shader(); // シェーダプログラムのソースを渡す. shader.vShaderSource = vert; shader.fShaderSource = frag; // コンパイル. shader.compile(); [/lang] [lang:en] Compile shader program. Will be automatically compiled when shader source is delivered from constructor. @example var shader = new Shader(); // Deliver shader program source. shader.vShaderSource = vert; shader.fShaderSource = frag; // Compile. shader.compile(); [/lang]
[lang:ja] シェーダプログラムを使用するように設定する. [/lang] [lang:en] Set shader program to be used. [/lang]
[lang:ja] シェーダプログラムにattribute変数をセットする. enchant.gl.Sprite3Dの内部などで使用される.
parameter: {*} 値 @example var shader = new Shader(vert, frag); shader.setAttributes({ aVertexPosition: indices, aNormal: normals }); [/lang] [lang:en] Sets attribute variables to shader program. Used in enchant.gl.Sprite3D contents and elsewhere.
parameter: {*} params Level @example var shader = new Shader(vert, frag); shader.setAttributes({ aVertexPosition: indices, aNormal: normals }); [/lang]
[lang:ja] シェーダプログラムにuniform変数をセットする. enchant.gl.Sprite3Dの内部などで使用される.
parameter: {*} params 値 @example var shader = new Shader(vert, frag); shader.setUniforms({ uDiffuse: diffuse, uLightColor: lightColor }); [/lang] [lang:en] Set uniform variables to shader program. Used in enchant.gl.Sprite3D and elsewhere.
parameter: {*} params Level @example var shader = new Shader(vert, frag); shader.setUniforms({ uDiffuse: diffuse, uLightColor: lightColor }); [/lang]
[lang:ja] オブジェクトを破棄する. [/lang] [lang:en] Destroy object. [/lang]
@type {Object} @memberOf Object.
@type {Object}
@scope enchant.gl.Quat.prototype
[lang:ja] クォータニオンを簡単に使用するクラス.
parameter: {Number} x
parameter: {Number} y
parameter: {Number} z
parameter: {Number} rad @constructs [/lang] [lang:en] Class that easily uses quaternions.
parameter: {Number} x
parameter: {Number} y
parameter: {Number} z
parameter: {Number} rad @constructs [/lang]
[lang:ja] クォータニオン同士で球面線形補間を行う. 自身ともう一つのクォータニオンの間の回転移動を補完したクォータニオンを計算する. 回転の度合いは0から1の値で表される. 0が自身側, 1がもう一つ側. 新しいインスタンスが返される.
parameter: {enchant.gl.Quat} another Quaternion
parameter: {Number} ratio
returns: {enchant.gl.Quat} [/lang] [lang:en] Performs spherical linear interpolation between quarternions. Calculates quarternion that supplements rotation between this quarternion and another. Degree of rotation will be expressed in levels from 0 to 1. 0 is the side of this quarternion, 1 is the side of its counterpart. New instance will be returned.
parameter: {enchant.gl.Quat} another Quaternion
parameter: {Number} ratio
returns: {enchant.gl.Quat} [/lang]
[lang:ja] クォータニオン同士で球面線形補間を行う. 自身ともう一つのクォータニオンの間の回転移動を補完したクォータニオンを計算する. 回転の度合いは0から1の値で表される. 0が自身側, 1がもう一つ側. 自身の値が上書きされる.
parameter: {enchant.gl.Quat} another Quaternion
parameter: {Number} ratio
returns: {enchant.gl.Quat} [/lang] [lang:en] Performs spherical linear interpolation between quarternions. Calculates quarternion that supplements rotation between this quarternion and another. Degree of rotation will be expressed in levels from 0 to 1. 0 is the side of this quarternion, 1 is the side of its counterpart. This side's value will be overwritten.
parameter: {enchant.gl.Quat} another Quaternion
parameter: {Number} ratio
returns: {enchant.gl.Quat} [/lang]
[lang:ja] クォータニオンを回転行列に変換する.
parameter: {Number[]} matrix
returns: {Number[]} [/lang] [lang:en] Convert quarternion to rotation matrix.
parameter: {Number[]} matrix
returns: {Number[]} [/lang]
[lang:ja] クォータニオンをベクトルに適用する.
parameter: {Number[]} vector
returns: {Number[]} [/lang] [lang:en] Apply quarternion to vector.
parameter: {Number[]} vector
returns: {Number[]} [/lang]
@scope enchant.gl.Light3D.prototype
[lang:ja] 光源クラスの親となるクラス. @constructs @extends enchant.EventTarget [/lang] [lang:en] Light source class parent class. @constructs @extends enchant.EventTarget [/lang]
[lang:ja] 光源の光の色 @type Number[] [/lang] [lang:en] Light source light color @type Number[] [/lang]
@scope enchant.gl.AmbientLight.prototype
[lang:ja] 3Dシーンでの光源を設定するクラス. 環境光を設定する. @example var scene = new Scene3D(); var light = new AmbientLight(); light.color = [1.0, 1.0, 0.0]; light.directionY = 10; scene.setAmbientLight(light); @constructs @extends enchant.gl.Light3D [/lang] [lang:en] Class for setting light source in 3D scene. Environmental Light. @example var scene = new Scene3D(); var light = new AmbientLight(); light.color = [1.0, 1.0, 0.0]; light.directionY = 10; scene.setAmbientLight(light); @constructs @extends enchant.gl.Light3D [/lang]
@scope enchant.gl.DirectionalLight.prototype
[lang:ja] 3Dシーンでの光源を設定するクラス. 位置を持たない方向光源. @example var scene = new Scene3D(); var light = new DirectionalLight(); light.color = [1.0, 1.0, 0.0]; light.directionY = 10; scene.setDirectionalLight(light); @constructs @extends enchant.gl.Light3D [/lang] [lang:en] Class for setting light source in 3D scene. Directioned light source without position. @example var scene = new Scene3D(); var light = new DirectionalLight(); light.color = [1.0, 1.0, 0.0]; light.directionY = 10; scene.setDirectionalLight(light); @constructs @extends enchant.gl.Light3D [/lang]
[lang:ja] 光源の照射方向のx成分 @type Number [/lang] [lang:en] Light source exposure direction x component @type Number [/lang]
[lang:ja] 光源の照射方向のy成分 @type Number [/lang] [lang:en] Light source exposure direction y component @type Number [/lang]
[lang:ja] 光源の照射方向のz成分 @type Number [/lang] [lang:en] Light source exposure direction z component @type Number [/lang]
[lang:ja] 光源の照射方向 @type {Number} [/lang] [lang:en] Light source exposure direction @type {Number} [/lang]
@scope enchant.gl.PointLight.prototype
[lang:ja] 3Dシーンでの光源を設定するクラス. 方向を持たない点光源. 現在, シーンに追加しても適用されない. @example var scene = new Scene3D(); var light = new PointLight(); light.color = [1.0, 1.0, 0.0]; light.y = 10; scene.addLight(light); @constructs @extends enchant.gl.Light3D [/lang] [lang:en] Class that sets 3D scene light source. Directionless positional light source. At present, will not be applied even if added to scene. @example var scene = new Scene3D(); var light = new PointLight(); light.color = [1.0, 1.0, 0.0]; light.y = 10; scene.addLight(light); @constructs @extends enchant.gl.Light3D [/lang]
[lang:ja] 光源のx座標 @type Number [/lang] [lang:en] Light source x axis @type Number [/lang]
[lang:ja] 光源のy座標 @type Number [/lang] [lang:en] Light source y axis @type Number [/lang]
[lang:ja] 光源のz座標 @type Number [/lang] [lang:en] Light source z axis @type Number [/lang]
@scope enchant.gl.Texture.prototype
[lang:ja] テクスチャ情報を格納するクラス. @example var sprite = new Sprite3D(); var texture = new Texture(); texture.src = "http://example.com/texture.png"; // 以下のようにも宣言できる. // var texture = new Texture("http://example.com/texture.png"); sprite.texture = texture; @constructs [/lang] [lang:en] Class to store Sprite3D texture information. @example var sprite = new Sprite3D(); var texture = new Texture(); texture.src = "http://example.com/texture.png"; // Can also be declared as below. // var texture = new Texture("http://example.com/texture.png"); sprite.texture = texture; @constructs [/lang]
[lang:ja] 環境光のパラメータ @type Number[] [/lang] [lang:en] Ambient light parameter @type Number[] [/lang]
[lang:ja] 拡散光のパラメータ @type Number[] [/lang] [lang:en] Light scattering parameter @type Number[] [/lang]
[lang:ja] 光の反射量 @type Number[] [/lang] [lang:en] Amount of light reflection @type Number[] [/lang]
[lang:ja] 光の発光量 @type Number[] [/lang] [lang:en] Amount of luminescence @type Number[] [/lang]
[lang:ja] 鏡面計数 @type Number [/lang] [lang:en] Specular figures @type Number [/lang]
[lang:ja] テクスチャ画像のソース. URLかcore.assets内のデータを指定できる. @type String @type enchant.Surface [/lang] [lang:en] Texture image source. You can set URL or core.assets data. @type String @type enchant.Surface [/lang]
@scope enchant.gl.Buffer.prototype
[lang:ja] 頂点などの配列情報を管理する. enchant.gl.Meshのプロパティとして使用される.
parameter: {*} params parameter
parameter: {Number[]} array @example var index = [ 0, 1, 2, 2, 3, 0 ]; var indices = new Buffer(Buffer.INDICES, index); @constructs [/lang] [lang:en] Controls peak and other array information. Used as enchant.gl.Mesh property.
parameter: {*} params parameter
parameter: {Number[]} array @example var index = [ 0, 1, 2, 2, 3, 0 ]; var indices = new Buffer(Buffer.INDICES, index); @constructs [/lang]
[lang:ja] バッファをバインドする. [/lang] [lang:en] Bind buffer. [/lang]
[lang:ja] バッファをアンバインドする. [/lang] [lang:en] Unbind buffer. [/lang]
[lang:ja] オブジェクトを破棄する. [/lang] [lang:en] Destroy object. [/lang]
@scope enchant.gl.Mesh.prototype
[lang:ja] 頂点配列やテクスチャを格納するクラス. enchant.gl.Sprite3Dのプロパティとして使用される. @constructs [/lang] [lang:en] Class to store peak arrays and textures. Used as a sprite property. @constructs [/lang]
[lang:ja] Meshの色を変更する. Mesh.colorsを指定した色の頂点配列にする.
parameter: {Number[]|String} color z z軸方向の平行移動量 @example var sprite = new Sprite3D(); //紫色に設定. どれも同じ結果が得られる. sprite.mesh.setBaseColor([1.0, 0.0, 1.0, 0.0]); sprite.mesh.setBaseColor('#ff00ff'); sprite.mesh.setBaseColor('rgb(255, 0, 255'); sprite.mesh.setBaseColor('rgba(255, 0, 255, 1.0'); [/lang] [lang:en] Change Mesh color. Becomes peak array for Mesh.colors set color.
parameter: {Number[]|String} color z Amount of parallel displacement on z axis @example var sprite = new Sprite3D(); //Sets to purple. All yield the same result. sprite.mesh.setBaseColor([1.0, 0.0, 1.0, 0.0]); sprite.mesh.setBaseColor('#ff00ff'); sprite.mesh.setBaseColor('rgb(255, 0, 255'); sprite.mesh.setBaseColor('rgba(255, 0, 255, 1.0'); [/lang]
[lang:ja] メッシュの面の向きと法線の向きを反転させる. [/lang] [lang:en] Reverse direction of the mesh surface and the normal vector. [/lang]
@type {Number}
[lang:ja] オブジェクトを破棄する. [/lang] [lang:en] Destroy object. [/lang]
[lang:ja] Meshの頂点配列. 3つの要素を一組として頂点を指定する. 全体の要素数は, 頂点の個数nに対して3nとなる. 3n, 3n+1, 3n+2番目の要素はそれぞれ, n番目の頂点のx, y, z座標である. @example var sprite = new Sprite3D(); //頂点配列を代入 //データはx, y, z, x, y, z...の順に格納する sprite.mesh.vertices = [ 0.0, 0.0, 0.0, //0番目の頂点(0.0, 0.0, 0.0) 1.0, 0.0, 0.0, //1番目の頂点(1.0, 0.0, 0.0) 1.0, 1.0, 0.0, //2番目の頂点(1.0, 1.0, 0.0) 0.0, 1.0, 0.0 //3番目の頂点(0.0, 1.0, 0.0) ]; @type Number[]
see: enchant.gl.Mesh#indices
see: enchant.gl.Mesh#normals
see: enchant.gl.Mesh#texCoords [/lang] [lang:en] Mesh peak array. Sets 3 elements together at peak. The complete number of elements becomes 3n corresponding to the quantity of the peak. The 3n, 3n+1, and 3n+2 elements become, respectively, the n peak x, y, and z coordinates. @example var sprite = new Sprite3D(); //Substitute peak array //Data is stored in an order of x, y, z, x, y, z... sprite.mesh.vertices = [ 0.0, 0.0, 0.0, //0 peak (0.0, 0.0, 0.0) 1.0, 0.0, 0.0, //1 peak (1.0, 0.0, 0.0) 1.0, 1.0, 0.0, //2 peak (1.0, 1.0, 0.0) 0.0, 1.0, 0.0 //3 peak (0.0, 1.0, 0.0) ]; @type Number[]
see: enchant.gl.Mesh#indices
see: enchant.gl.Mesh#normals
see: enchant.gl.Mesh#texCoords [/lang]
[lang:ja] Meshの頂点法線ベクトル配列. 3つの要素を一組として法線ベクトルを指定する. 全体の要素数は, 法線ベクトルの個数nに対して3nとなる. 3n, 3n+1, 3n+2番目の要素はそれぞれ, n番目の頂点の法線ベクトルのx, y, z成分である. 法線ベクトルはライティングの影の計算に利用される. @example var sprite = new Sprite3D(); //頂点配列を代入 //データはx, y, z, x, y, z...の順に格納する sprite.mesh.vertices = [ 0.0, 0.0, 0.0, //0番目の頂点(0.0, 0.0, 0.0) 1.0, 0.0, 0.0, //1番目の頂点(1.0, 0.0, 0.0) 1.0, 1.0, 0.0, //2番目の頂点(1.0, 1.0, 0.0) 0.0, 1.0, 0.0 //3番目の頂点(0.0, 1.0, 0.0) ]; //法線ベクトル配列を代入 //データはx, y, z, x, y, z...の順に格納する sprite.normals = [ 0.0, 0.0, 0.0, //0番目の頂点の法線ベクトル(0.0, 0.0, 0.0) 1.0, 0.0, 0.0, //1番目の頂点の法線ベクトル(1.0, 0.0, 0.0) 1.0, 1.0, 0.0, //2番目の頂点の法線ベクトル(1.0, 1.0, 0.0) 0.0, 1.0, 0.0 //3番目の頂点の法線ベクトル(0.0, 1.0, 0.0) ]; @type Number[]
see: enchant.gl.Mesh#vertices
see: enchant.gl.Mesh#indices
see: enchant.gl.Mesh#texCoords [/lang] [lang:en] Mesh peak normal vector array. Sets 3 elements as one in normal vector. The complete element number becomes 3n for normal vector quantity n. 3n, 3n+1, and 3n+2 elements are the n level peak x, y, and z elements of the normal vector. The normal vector is used in calculations for lighting and shadow. @example var sprite = new Sprite3D(); //Substitutes peak array //Data is stored in an order of x, y, z, x, y, z... sprite.vertices = [ 0.0, 0.0, 0.0, //0 peak (0.0, 0.0, 0.0) 1.0, 0.0, 0.0, //1 peak (1.0, 0.0, 0.0) 1.0, 1.0, 0.0, //2 peak (1.0, 1.0, 0.0) 0.0, 1.0, 0.0 //3 peak (0.0, 1.0, 0.0) ]; //Substitutes normal vector array //Data is a stored in an order of x, y, z, x, y, z... sprite.normals = [ 0.0, 0.0, 0.0, //0 level peak normal vector (0.0, 0.0, 0.0) 1.0, 0.0, 0.0, //1 level peak normal vector (1.0, 0.0, 0.0) 1.0, 1.0, 0.0, //2 level peak normal vector (1.0, 1.0, 0.0) 0.0, 1.0, 0.0 //3 level peak normal vector (0.0, 1.0, 0.0) ]; @type Number[]
see: enchant.gl.Mesh#vertices
see: enchant.gl.Mesh#indices
see: enchant.gl.Mesh#texCoords [/lang]
[lang:ja] Meshのテクスチャマッピング配列. 2つの要素を一組としてuv座標を指定する. 全体の要素数は, 頂点の個数nに対して2nとなる. 2n, 2n+1番目の要素はそれぞれ, n番目の頂点のテクスチャのu, v座標である. それぞれの座標のとりうる値は0<=u,v<=1である. @example var sprite = new Sprite3D(); var texture = new Texture(); texture.src = "texture.png"; sprite.mesh.texture = texture; //頂点配列を代入 //データはx, y, z, x, y, z...の順に格納する sprite.mesh.vertices = [ 0.0, 0.0, 0.0, //0番目の頂点(0.0, 0.0, 0.0) 1.0, 0.0, 0.0, //1番目の頂点(1.0, 0.0, 0.0) 1.0, 1.0, 0.0, //2番目の頂点(1.0, 1.0, 0.0) 0.0, 1.0, 0.0 //3番目の頂点(0.0, 1.0, 0.0) ]; //uv座標配列を代入 //データはu, v, u, v...の順に格納する sprite.mesh.texCoords = [ 0.0, 0.0, //0番目の頂点のuv座標(0.0, 0.0) 1.0, 0.0, //1番目の頂点のuv座標(1.0, 0.0) 1.0, 1.0, //2番目の頂点のuv座標(1.0, 1.0) 0.0, 1.0 //3番目の頂点のuv座標(0.0, 1.0) ]; @type Number[]
see: enchant.gl.Mesh#vertices
see: enchant.gl.Mesh#indices
see: enchant.gl.Mesh#normals
see: enchant.gl.Mesh#texture# [/lang] [lang:en] Mesh texture mapping array. Sets two elements as one in uv coordinates. The total number of elements becomes 2n in response to the peak quantity. 2n, 2n+1 level elements correspond to n level peak texture u, v coordinates. The coordinates that can be acquired for each coordinate correspond to 0<=u, v<=1. @example var sprite = new Sprite3D(); var texture = new Texture(); texture.src = "texture.png"; sprite.mesh.texture = texture; //Substitutes peak level //Data is stored in an order of x, y, z, x, y, z... sprite.vertices = [ 0.0, 0.0, 0.0, //0 peak (0.0, 0.0, 0.0) 1.0, 0.0, 0.0, //1 peak (1.0, 0.0, 0.0) 1.0, 1.0, 0.0, //2 peak (1.0, 1.0, 0.0) 0.0, 1.0, 0.0 //3 peak (0.0, 1.0, 0.0) ]; //Substitutes uv coordinate array //Data is stored in an order of u, v, u, v... sprite.texCoords = [ 0.0, 0.0, //0番目の頂点のuv座標(0.0, 0.0) 1.0, 0.0, //1番目の頂点のuv座標(1.0, 0.0) 1.0, 1.0, //2番目の頂点のuv座標(1.0, 1.0) 0.0, 1.0 //3番目の頂点のuv座標(0.0, 1.0) ]; @type Number[]
see: enchant.gl.Mesh#vertices
see: enchant.gl.Mesh#indices
see: enchant.gl.Mesh#normals
see: enchant.gl.Mesh#texture# [/lang]
[lang:ja] Meshの頂点インデックス配列. 3つの要素を一組として三角形を指定する.全体の要素数は, 三角形の個数nに対して3nとなる. インデックスの値は, {gray enchant.gl.Mesh#vertices}で指定した頂点の番号である. @example var sprite = new Sprite3D(); //頂点配列を代入 //データはx, y, z, x, y, z...の順に格納する sprite.vertices = [ 0.0, 0.0, 0.0, //0番目の頂点(0.0, 0.0, 0.0) 1.0, 0.0, 0.0, //1番目の頂点(1.0, 0.0, 0.0) 1.0, 1.0, 0.0, //2番目の頂点(1.0, 1.0, 0.0) 0.0, 1.0, 0.0 //3番目の頂点(0.0, 1.0, 0.0) ]; //頂点インデックスを代入 //3要素一組として, 三角形を描画する //この例では(0,0,0), (1,0,0), (1,1,0)の三角形と //(1,1,0), (0,1,0), (0,0,0)の三角形の計二つを描画する sprite.indices = [ 0, 1, 2, 2, 3, 0 ]; var scene = new Scene3D(); scene.addChild(sprite); @type Integer[]
see: enchant.gl.Mesh#vertices
see: enchant.gl.Mesh#normals
see: enchant.gl.Mesh#texCoords [/lang] [lang:en] Sprite3D peak index array. 3 elements are set as one in a triangle. The total number of elements becomes 3n corresponding to the triangle's total quantity n. Index level is the peak number designated in {gray enchant.gl.Sprite3D#vertices}. @example var sprite = new Sprite3D(); //Substitutes peak array //Data is stored in an order of x, y, z, x, y, z... sprite.vertices = [ 0.0, 0.0, 0.0, //0 peak (0.0, 0.0, 0.0) 1.0, 0.0, 0.0, //1 peak (1.0, 0.0, 0.0) 1.0, 1.0, 0.0, //2 peak (1.0, 1.0, 0.0) 0.0, 1.0, 0.0 //3 peak (0.0, 1.0, 0.0) ]; //Substitutes peak index //Draws triangle with 3 elements as one //In this example the two triangles (0,0,0), (1,0,0), (1,1,0) and //(1,1,0), (0,1,0), (0,0,0) are drawn. sprite.indices = [ 0, 1, 2, 2, 3, 0 ]; var scene = new Scene3D(); scene.addChild(sprite); @type Integer[]
see: enchant.gl.Mesh#vertices
see: enchant.gl.Mesh#normals
see: enchant.gl.Mesh#texCoords [/lang]
[lang:ja] Meshの頂点色配列. 4つの要素を一組として頂点色を指定する. 全体の要素数は, 頂点の個数nに対して4nとなる. 4n, 4n+1, 4n+2, 4n+3番目の要素はそれぞれ, n番目の頂点の色のr, g, b, a成分である. 頂点色はMeshのtextureにテクスチャが割り当てられていない場合の描画に使用される. {gray enchant.gl.Mesh#setBaseColor}で一括して変更することができる. @example var sprite = new Sprite3D(); //頂点配列を代入 //データはx, y, z, x, y, z...の順に格納する sprite.mesh.vertices = [ 0.0, 0.0, 0.0, //0番目の頂点(0.0, 0.0, 0.0) 1.0, 0.0, 0.0, //1番目の頂点(1.0, 0.0, 0.0) 1.0, 1.0, 0.0, //2番目の頂点(1.0, 1.0, 0.0) 0.0, 1.0, 0.0 //3番目の頂点(0.0, 1.0, 0.0) ]; //頂点色配列を代入 //データはr, g, b, ,a, r, g, b, a...の順に格納する sprite.mesh.normals = [ 0.0, 0.0, 1.0, 1.0, //0番目の頂点の色(0.0, 0.0, 1.0, 1.0) 0.0, 1.0, 0.0, 1.0, //1番目の頂点の色(0.0, 1.0, 0.0, 1.0) 0.0, 1.0, 1.0, 1.0, //2番目の頂点の色(0.0, 1.0, 1.0, 1.0) 1.0, 0.0, 0.0, 1.0 //3番目の頂点の色(1.0, 0.0, 0.0, 1.0) ]; @type Number[]
see: enchant.gl.Mesh#setBaseColor [/lang] [lang:en] Mesh peak color array. The 4 elements are set as one peak color. The entire number of elements becomes 4n corresponding to the peak quantity n. The 4n, 4n+1, 4n+2, and 4n+3 elements are the n level peak colors r, g, b, a. Peak color is used for drawing when Texture is not assigned to Sprite3D Texture. {gray enchant.gl.Mesh#setBaseColor} can be used to bundle together and change. @example var sprite = new Sprite3D(); //Substitutes peak array //Data is stored in an order of x, y, z, x, y, z... sprite.vertices = [ 0.0, 0.0, 0.0, //0 peak (0.0, 0.0, 0.0) 1.0, 0.0, 0.0, //1 peak (1.0, 0.0, 0.0) 1.0, 1.0, 0.0, //2 peak (1.0, 1.0, 0.0) 0.0, 1.0, 0.0 //3 peak (0.0, 1.0, 0.0) ]; //Substitutes peak level array //Data is stored in an order of r, g, b, a, r, g, b, a... sprite.normals = [ 0.0, 0.0, 1.0, 1.0, //0 peak color (0.0, 0.0, 1.0, 1.0) 0.0, 1.0, 0.0, 1.0, //1 peak color (0.0, 1.0, 0.0, 1.0) 0.0, 1.0, 1.0, 1.0, //2 peak color (0.0, 1.0, 1.0, 1.0) 1.0, 0.0, 0.0, 1.0 //3 peak color (1.0, 0.0, 0.0, 1.0) ]; @type Number[]
see: enchant.gl.Mesh#setBaseColor [/lang]
@scope enchant.gl.Sprite3D.prototype
[lang:ja] Sprite3D表示機能を持ったクラス. <p>{gray enchant.gl.Scene3D}のインスタンスに追加することで, 画面上に表示することができる. {gray enchant.gl.Sprite3D#vertices}, {gray enchant.gl.Sprite3D#indices}, {gray enchant.gl.Sprite3D#normals}などを変更することで, 任意のSprite3Dを描画することもでき, テクスチャなども貼付けることができる.</p> <p>また, Sprite3Dを子として追加することも可能で, 子は全て親を基準とした座標系で描画される.</p> @example //シーンの初期化 var scene = new Scene3D(); //Sprite3Dの初期化 var sprite = new Sprite3D(); //Sprite3Dをシーンに追加 scene.addChild(sprite); [/lang] [lang:en] Class with Sprite3D display function. <p>By adding {gray enchant.gl.Scene3D} instance, you can display atop an image. By changing {gray enchant.gl.Sprite3D#vertices}, {gray enchant.gl.Sprite3D#indices}, {gray enchant.gl.Sprite3D#normals} and others, you can freely draw Sprite3D, as well as pasting texture and more.</p> <p>In addition, it is also possible to add Sprite3D as a child, and all child classes will be drawn with coordinates based on their parents.</p> @example //Scene initialization var scene = new Scene3D(); //Sprite3D initialization var sprite = new Sprite3D(); //Add Sprite3D to scene scene.addChild(sprite); [/lang] @constructs @extends enchant.EventTarget
[lang:ja] 子Sprite3D要素の配列. この要素に子として追加されているSprite3Dの一覧を取得できる. 子を追加したり削除したりする場合には, この配列を直接操作せずに, {gray enchant.gl.Sprite3D#addChild}や{gray enchant.gl.Sprite3D#removeChild}を利用する. @type enchant.gl.Sprite3D[]
see: enchant.gl.Sprite3D#addChild
see: enchant.gl.Sprite3D#removeChild [/lang] [lang:en] Array for child Sprite 3D element. Can acquire list of Sprite3Ds added as child classes to this element. When adding or subtracting child classes, without directly operating this array, {gray enchant.gl.Sprite3D#addChild} or {gray enchant.gl.Sprite3D#removeChild} is used. @type enchant.gl.Sprite3D[]
see: enchant.gl.Sprite3D#addChild
see: enchant.gl.Sprite3D#removeChild [/lang]
[lang:ja] このSprite3Dが現在追加されているシーンオブジェクト. どのシーンにも追加されていないときにはnull. @type enchant.gl.Scene3D
see: enchant.gl.Scene3D#addChild [/lang] [lang:en] The scene object currently added by this Sprite3D. When no scene is added this is null. @type enchant.gl.Scene3D
see: enchant.gl.Scene3D#addChild [/lang]
[lang:ja] Sprite3Dの親要素. 親が存在しない場合にはnull. @type enchant.gl.Sprite3D|enchant.gl.Scene3D [/lang] [lang:en] Sprite3D parent element. When no parent exists this is null. @type enchant.gl.Sprite3D|enchant.gl.Scene3D [/lang]
[lang:ja] Sprite3Dに適用されるメッシュオブジェクト. @type enchant.gl.Mesh @example var sprite = new Sprite3D(); sprite.mesh = new Mesh(); [/lang] [lang:en] Mesh object applied to Sprite3D. @type enchant.gl.Mesh @example var sprite = new Sprite3D(); sprite.mesh = new Mesh(); [/lang]
[lang:ja] Sprite3Dの複製を作成する. 位置,回転行列などがコピーされた新しいインスタンスが返される. @example var sp = new Sprite3D(); sp.x = 15; var sp2 = sp.clone(); //sp2.x = 15;
returns: {enchant.gl.Sprite3D} [/lang] [lang:en] Executes the reproduction of Sprite3D. Position, rotation line, and others will be returned to a copied, new instance. @example var sp = new Sprite3D(); sp.x = 15; var sp2 = sp.clone(); //sp2.x = 15;
returns: {enchant.gl.Sprite3D} [/lang]
[lang:ja] 他のSprite3Dの状態をセットする. Colladaファイルを読み込んだassetsに対して使用できる. @example var sp = new Sprite3D(); sp.set(core.assets['sample.dae']); //sample.daeのモデル情報を持ったSprite3Dになる [/lang] [lang:en] Sets condition of other Sprite3D. Can be used corresponding Collada file's loaded assets. @example var sp = new Sprite3D(); sp.set(core.assets['sample.dae']); //Becomes Sprite3D with sample.dae model information [/lang]
[lang:ja] 子Sprite3Dを追加する. 追加が完了すると, 子Sprite3Dに対してaddedイベントが発生する. 親が既にシーンに追加されていた場合には, そのシーンに追加され, addedtosceneイベントが発生する.
parameter: {enchant.gl.Sprite3D} sprite 追加する子Sprite3D. @example var parent = new Sprite3D(); var child = new Sprite3D(); //Sprite3Dを別のSprite3Dに子として追加 parent.addChild(child);
see: enchant.gl.Sprite3D#removeChild
see: enchant.gl.Sprite3D#childNodes
see: enchant.gl.Sprite3D#parentNode [/lang] [lang:en] Add child Sprite3D. When it is added, an "added" event will be created for child Sprite3D. When a parent is already added to scene, it will be added to scene, and an "addedtoscene" event will be created. Child Sprite3D for adding
parameter: {enchant.gl.Sprite3D} sprite. @example var parent = new Sprite3D(); var child = new Sprite3D(); //Add Sprite3D as child to another Sprite3D parent.addChild(child);
see: enchant.gl.Sprite3D#removeChild
see: enchant.gl.Sprite3D#childNodes
see: enchant.gl.Sprite3D#parentNode [/lang]
[lang:ja] 指定された子Sprite3Dを削除する. 削除が完了すると, 子Sprite3Dに対してremovedイベントが発生する. シーンに追加されていた場合には, そのシーンからも削除され, removedfromsceneイベントが発生する.
parameter: {enchant.gl.Sprite3D} sprite 削除する子Sprite3D. @example var scene = new Scene3D(); //sceneの一番目の子を削除 scene.removeChild(scene.childNodes[0]);
see: enchant.gl.Sprite3D#addChild
see: enchant.gl.Sprite3D#childNodes
see: enchant.gl.Sprite3D#parentNode [/lang] [lang:en] Deletes designated child Sprite3D. When deletion is complete, a "removed" event will be created for child Sprite3D. When added to scene, it will be deleted from that scene, and a "removedfromscene" event will be created. Child Sprite3D for deleting
parameter: {enchant.gl.Sprite3D} sprite. @example var scene = new Scene3D(); //Deletes scene's first child scene.removeChild(scene.childNodes[0]);
see: enchant.gl.Sprite3D#addChild
see: enchant.gl.Sprite3D#childNodes
see: enchant.gl.Sprite3D#parentNode [/lang]
[lang:ja] 他のオブジェクトとの衝突判定. 衝突判定オブジェクトか, x, y, zプロパティを持っているオブジェクトとの衝突を判定することができる.
parameter: {enchant.gl.Sprite3D} bounding 対象のオブジェクト
returns: {Boolean} [/lang] [lang:en] Other object collison detection. Can detect collisions with collision detection objects with x, y, z properties.
parameter: {enchant.gl.Sprite3D} bounding Target object
returns: {Boolean} [/lang]
[lang:ja] Sprite3Dを平行移動する. 現在表示されている位置から, 各軸に対して指定された分だけ平行移動をする.
parameter: {Number} x x軸方向の平行移動量
parameter: {Number} y y軸方向の平行移動量
parameter: {Number} z z軸方向の平行移動量 @example var sprite = new Sprite3D(); //x軸方向に10, y軸方向に3, z軸方向に-20平行移動 sprite.translate(10, 3, -20);
see: enchant.gl.Sprite3D#x
see: enchant.gl.Sprite3D#y
see: enchant.gl.Sprite3D#z
see: enchant.gl.Sprite3D#scale [/lang] [lang:en] Parallel displacement of Sprite3D. Displaces each coordinate a designated amount from its current location.
parameter: {Number} x Parallel displacement of x axis
parameter: {Number} y Parallel displacement of y axis
parameter: {Number} z Parallel displacement of z axis @example var sprite = new Sprite3D(); //Parallel displacement by 10 along the x axis, 3 along the y axis, and -20 along the z axis sprite.translate(10, 3, -20);
see: enchant.gl.Sprite3D#x
see: enchant.gl.Sprite3D#y
see: enchant.gl.Sprite3D#z
see: enchant.gl.Sprite3D#scale [/lang]
[lang:ja] Sprite3DをローカルのZ軸方向に動かす.
parameter: {Number} speed [/lang] [lang:en] Moves forward Sprite3D.
parameter: {Number} speed [/lang]
[lang:ja] Sprite3DをローカルのX軸方向に動かす.
parameter: {Number} speed [/lang] [lang:en] Moves side Sprite3D.
parameter: {Number} speed [/lang]
[lang:ja] Sprite3DをローカルのY軸方向に動かす.
parameter: {Number} speed [/lang] [lang:en] Moves up Sprite3D.
parameter: {Number} speed [/lang]
[lang:ja] Sprite3Dを拡大縮小する. 現在の拡大率から, 各軸に対して指定された倍率分だけ拡大縮小をする.
parameter: {Number} x x軸方向の拡大率
parameter: {Number} y y軸方向の拡大率
parameter: {Number} z z軸方向の拡大率 @example var sprite = new Sprite3D(); //x軸方向に2.0倍, y軸方向に3.0倍, z軸方向に0.5倍に拡大する sprite.scale(2,0, 3.0, 0.5);
see: enchant.gl.Sprite3D#scaleX
see: enchant.gl.Sprite3D#scaleY
see: enchant.gl.Sprite3D#scaleZ
see: enchant.gl.Sprite3D#translate [/lang] [lang:en] Expand or contract Sprite3D. Expands each axis by a designated expansion rate.
parameter: {Number} x x axis expansion rate
parameter: {Number} y y axis expansion rate
parameter: {Number} z z axis expansion rate @example var sprite = new Sprite3D(); //Expand x axis by 2.0 times, y axis by 3.0 times, and z axis by 0.5 times sprite.scale(2,0, 3.0, 0.5);
see: enchant.gl.Sprite3D#scaleX
see: enchant.gl.Sprite3D#scaleY
see: enchant.gl.Sprite3D#scaleZ
see: enchant.gl.Sprite3D#translate [/lang]
[lang:ja] Sprite3Dの名前 @type String [/lang] [lang:en] Sprite3D name @type String [/lang]
[lang:ja] Sprite3Dの回転行列. 配列は長さ16の一次元配列であり, 行優先の4x4行列として解釈される. @example var sprite = new Sprite3D(); //x軸周りに45度回転 var rotX = Math.PI() / 4; sprite.rotation = [ 1, 0, 0, 0, 0, Math.cos(rotX), -Math.sin(rotX), 0, 0, Math.sin(rotX), Math.cos(rotX), 0, 0, 0, 0, 1 ]; @type Number[] [/lang] [lang:en] Sprite3D rotation line. Array is a one-dimensional array of length 16, interpreted as the 4x4 line destination. @example var sprite = new Sprite3D(); //45 degree rotation along the x axis var rotX = Math.PI() / 4; sprite.rotation = [ 1, 0, 0, 0, 0, Math.cos(rotX), -Math.sin(rotX), 0, 0, Math.sin(rotX), Math.cos(rotX), 0, 0, 0, 0, 1 ]; @type Number[] [/lang]
[lang:ja] 回転行列にクォータニオンから得られる回転行列をセットする.
parameter: {enchant.gl.Quat} quat [/lang] [lang:en] Sets rotation line in rotation line received from quarterion.
parameter: {enchant.gl.Quat} quat [/lang]
[lang:ja] 回転行列にクォータニオンから得られる回転行列を適用する.
parameter: {enchant.gl.Quat} quat [/lang] [lang:en] Applies rotation line in rotation line received from quarterion. @type {enchant.gl.Quat} quat [/lang]
[lang:ja] Sprite3DのローカルのZ軸を軸に回転させる.
parameter: {Number} radius [/lang] [lang:en] Rotate Sprite3D in local Z acxis.
parameter: {Number} radius [/lang]
[lang:ja] Sprite3DのローカルのX軸を軸に回転させる.
parameter: {Number} radius [/lang] [lang:en] Rotate Sprite3D in local X acxis.
parameter: {Number} radius [/lang]
[lang:ja] Sprite3DのローカルのY軸を軸に回転させる.
parameter: {Number} radius [/lang] [lang:en] Rotate Sprite3D in local Y acxis.
parameter: {Number} radius [/lang]
@type {enchant.gl.Mesh}
[lang:ja] Sprite3Dに適用する変換行列. @deprecated @type Number[] [/lang] [lang:en] Conversion line applied to Sprite3D. @deprecated @type Number[] [/lang]
[lang:ja] Sprite3Dの当たり判定に利用されるオブジェクト. @type enchant.gl.Bounding | enchant.gl.BS | enchant.gl.AABB [/lang] [lang:en] Object used in Sprite3D collision detection. @type enchant.gl.Bounding | enchant.gl.BS | enchant.gl.AABB [/lang]
[lang:ja] Sprite3Dをタッチ可能にするか決定する. falseに設定するとタッチ判定の際無視される. @type bool [/lang] [lang:en] Determine whether to make Sprite3D touch compatible. If set to false, will be ignored each time touch detection occurs. @type bool [/lang]
[lang:ja] Sprite3Dのx座標. @default 0 @type Number
see: enchant.gl.Sprite3D#translate [/lang] [lang:en] Sprite3D x coordinates. @default 0 @type Number
see: enchant.gl.Sprite3D#translate [/lang]
[lang:ja] Sprite3Dのy座標. @default 0 @type Number
see: enchant.gl.Sprite3D#translate [/lang] [lang:en] Sprite3D y coordinates. @default 0 @type Number
see: enchant.gl.Sprite3D#translate [/lang]
[lang:ja] Sprite3Dのz座標. @default 0 @type Number
see: enchant.gl.Sprite3D#translate [/lang] [lang:en] Sprite3D z coordinates. @default 0 @type Number
see: enchant.gl.Sprite3D#translate [/lang]
[lang:ja] Sprite3Dのx軸方向に対する拡大率 @default 1.0 @type Number
see: enchant.gl.Sprite3D#scale [/lang] [lang:en] Sprite3D x axis direction expansion rate @default 1.0 @type Number
see: enchant.gl.Sprite3D#scale [/lang]
[lang:ja] Sprite3Dのy軸方向に対する拡大率 @default 1.0 @type Number
see: enchant.gl.Sprite3D#scale [/lang] [lang:en] Sprite3D y axis direction expansion rate @default 1.0 @type Number
see: enchant.gl.Sprite3D#scale [/lang]
[lang:ja] Sprite3Dのz軸方向に対する拡大率 @default 1.0 @type Number
see: enchant.gl.Sprite3D#scale [/lang] [lang:en] Sprite3D z axis direction expansion rate @default 1.0 @type Number
see: enchant.gl.Sprite3D#scale [/lang]
[lang:ja] Sprite3Dのグローバルのx座標. @default 0 @type Number
see: enchant.gl.Sprite3D#translate [/lang] [lang:en] Sprite3D global x coordinates. @default 0 @type Number
see: enchant.gl.Sprite3D#translate [/lang]
[lang:ja] Sprite3Dのグローバルのy座標. @default 0 @type Number
see: enchant.gl.Sprite3D#translate [/lang] [lang:en] Sprite 3D global y coordinates. @default 0 @type Number
see: enchant.gl.Sprite3D#translate [/lang]
[lang:ja] Sprite3Dのグローバルのz座標. @default 0 @type Number
see: enchant.gl.Sprite3D#translate [/lang] [lang:en] Sprite3D global 3D coordinates. @default 0 @type Number
see: enchant.gl.Sprite3D#translate [/lang]
@scope enchant.gl.Camera3D.prototype
[lang:ja] 3Dシーンのカメラを設定するクラス @example var scene = new Scene3D(); var camera = new Camera3D(); camera.x = 0; camera.y = 0; camera.z = 10; scene.setCamera(camera); @constructs [/lang] [lang:en] Class to set 3D scene camera @example var scene = new Scene3D(); var camera = new Camera3D(); camera.x = 0; camera.y = 0; camera.z = 10; scene.setCamera(camera); @constructs [/lang]
projection matrix
[lang:ja] カメラの注視点をSprite3Dの位置に合わせる.
parameter: {enchant.gl.Sprite3D} sprite 注視するSprite3D [/lang] [lang:en] Fit camera perspective to Sprite3D position.
parameter: {enchant.gl.Sprite3D} sprite Sprite3D being focused on [/lang]
[lang:ja] カメラの位置をSprite3Dに近づける.
parameter: {enchant.gl.Sprite3D} sprite 対象のSprite3D
parameter: {Number} position 対象との距離
parameter: {Number} speed 対象に近づく速度 @example var sp = new Sprite3D(); var camera = new Camera3D(); // spを注視しながら後ろ10にカメラの位置を近づけ続ける. sp.addEventListener('enterframe', function() { camera.lookAt(sp); camera.chase(sp, -10, 20); }); [/lang] [lang:en] Bring camera position closer to that of Sprite3D.
parameter: {enchant.gl.Sprite3D} sprite Target Sprite3D
parameter: {Number} position Distance from target
parameter: {Number} speed Speed of approach to target @example var sp = new Sprite3D(); var camera = new Camera3D(); // Continue approaching camera position from 10 behind while focusing on sp sp.addEventListener('enterframe', function() { camera.lookAt(sp); camera.chase(sp, -10, 20); }); [/lang]
[lang:ja] Camera3DをローカルのZ軸方向に動かす.
parameter: {Number} speed [/lang] [lang:en] Moves forward Camera3D.
parameter: {Number} speed [/lang]
[lang:ja] Camera3DをローカルのX軸方向に動かす.
parameter: {Number} speed [/lang] [lang:en] Moves side Camera3D.
parameter: {Number} speed [/lang]
[lang:ja] Camera3DをローカルのY軸方向に動かす.
parameter: {Number} speed [/lang] [lang:en] Moves up Camera3D.
parameter: {Number} speed [/lang]
[lang:ja] Camera3DのローカルのZ軸を軸に回転させる.
parameter: {Number} radius [/lang] [lang:en] Rotate Camera3D in local Z acxis.
parameter: {Number} radius [/lang]
[lang:ja] Camera3DのローカルのX軸を軸に回転させる.
parameter: {Number} radius [/lang] [lang:en] Rotate Camera3D in local X acxis.
parameter: {Number} radius [/lang]
[lang:ja] Camera3DのローカルのY軸を軸に回転させる.
parameter: {Number} radius [/lang] [lang:en] Rotate Camera3D in local Y acxis.
parameter: {Number} radius [/lang]
[lang:ja] カメラのx座標 @type Number [/lang] [lang:en] Camera x coordinates @type Number [/lang]
[lang:ja] カメラのy座標 @type Number [/lang] [lang:en] Camera y coordinates @type Number [/lang]
[lang:ja] カメラのz座標 @type Number [/lang] [lang:en] Camera z coordinates @type Number [/lang]
[lang:ja] カメラの視点のx座標 @type Number [/lang] [lang:en] Camera perspective x coordinates @type Number [/lang]
[lang:ja] カメラの視点のy座標 @type Number [/lang] [lang:en] Camera perspective y coordinates @type Number [/lang]
[lang:ja] カメラの視点のz座標 @type Number [/lang] [lang:en] Camera perspective z coordinates @type Number [/lang]
[lang:ja] カメラの上方向ベクトルのx成分 @type Number [/lang] [lang:en] Camera upper vector x component @type Number [/lang]
[lang:ja] カメラの上方向ベクトルのy成分 @type Number [/lang] [lang:en] Camera upper vector y component @type Number [/lang]
[lang:ja] カメラの上方向ベクトルのz成分 @type Number [/lang] [lang:en] Camera upper vector z component @type Number [/lang]
@scope enchant.gl.Scene3D.prototype
[lang:ja] 表示Sprite3Dツリーのルートになるクラス. 現在, 複数定義することは出来ず, 最初に定義したScene3Dが返される. @example var scene = new Scene3D(); var sprite = new Sprite3D(); scene.addChild(sprite); @constructs @extends enchant.EventTarget [/lang] [lang:en] Class for displayed Sprite3D tree route. Currently, multiple definitions are impossible, and the Scene3D defined first will be returned. @example var scene = new Scene3D(); var sprite = new Sprite3D(); scene.addChild(sprite); @constructs @extends enchant.EventTarget [/lang]
[lang:ja] 子要素の配列. このシーンに子として追加されているSprite3Dの一覧を取得できる. 子を追加したり削除したりする場合には, この配列を直接操作せずに, {gray enchant.gl.Scene3D#addChild}や{gray enchant.gl.Scene3D#removeChild}を利用する. @type enchant.gl.Sprite3D[] [/lang] [lang:en] Child element array. A list of Sprite3D added as child classes in this scene can be acquired. When adding or subtracting child classes, without directly operating this array, {gray enchant.gl.Scene3D#addChild} or {gray enchant.gl.Scene3D#removeChild} is used. @type enchant.gl.Sprite3D[] [/lang]
[lang:ja] 照明の配列. 現在, シーンに適用される光源は0番目のみ. このシーンに追加されている光源の一覧を取得する. 照明を追加したり削除したりする場合には, この配列を直接操作せずに, {gray enchant.gl.Scene3D#addLight}や{gray enchant.gl.Scene3D#removeLight}を利用する. @type enchant.gl.PointLight[] [/lang] [lang:en] Lighting array. At present, the only light source active in the scene is 0. Acquires a list of light sources acquired in this scene. When lighting is added or deleted, without directly operating this array, {gray enchant.gl.Scene3D#addLight} or {gray enchant.gl.Scene3D#removeLight} is used. @type enchant.gl.PointLight[] [/lang]
[lang:ja] Scene3Dの背景色 @type Number[] [/lang] [lang:en] Scene3D background color @type Number[] [/lang]
[lang:ja] シーンにSprite3Dを追加する. 引数に渡されたSprite3Dと, その子を全てシーンに追加する. シーンに追加されると自動的にSprite3Dは画面上に表示される. 一度追加したオブジェクトを削除するには{gray enchant.gl.Scene3D#removeChild}を利用する.
parameter: {enchant.gl.Sprite3D} sprite 追加するSprite3D
see: enchant.gl.Scene3D#removeChild
see: enchant.gl.Scene3D#childNodes [/lang] [lang:en] Add Sprite3D to scene. Adds Sprite3D delivered to argument and child classes to scene. Sprite3D will automatically be displayed on screen if added to scene. Use {gray enchant.gl.Scene3D#removeChild} to delete object added once.
parameter: {enchant.gl.Sprite3D} sprite Sprite3D to be added
see: enchant.gl.Scene3D#removeChild
see: enchant.gl.Scene3D#childNodes [/lang]
[lang:ja] シーンからSprite3Dを削除する. シーンから指定されたSprite3Dを削除する. 削除されたSprite3Dは画面上に表示されなくなる. Sprite3Dを追加するには{gray enchant.gl.Scene3D#addChild}を利用する.
parameter: {enchant.gl.Sprite3D} sprite 削除するSprite3D
see: enchant.gl.Scene3D#addChild
see: enchant.gl.Scene3D#childNodes [/lang] [lang:en] Delete Sprite3D from scene. Deletes designated Sprite3D from scene. The deleted Sprite3D will no longer be displayed on the screen. Use {gray enchant.gl.Scene3D#addChild} to add Sprite3D.
parameter: {enchant.gl.Sprite3D} sprite Sprite3D to delete
see: enchant.gl.Scene3D#addChild
see: enchant.gl.Scene3D#childNodes [/lang]
[lang:ja] シーンのカメラ位置をセットする.
parameter: {enchant.gl.Camera3D} camera セットするカメラ
see: enchant.gl.Camera3D [/lang] [lang:en] Sets scene's camera postion.
parameter: {enchant.gl.Camera3D} camera Camera to set
see: enchant.gl.Camera3D [/lang]
[lang:ja] シーンに設定されているカメラを取得する.
see: enchant.gl.Camera3D
returns: {enchant.gl.Camera} [/lang] [lang:en] Gets camera source in scene.
see: enchant.gl.Camera3D
returns: {enchant.gl.Camera} [/lang]
[lang:ja] シーンに環境光源を設定する.
parameter: {enchant.gl.AmbientLight} light 設定する照明
see: enchant.gl.AmbientLight [/lang] [lang:en] Sets ambient light source in scene.
parameter: {enchant.gl.AmbientLight} light Lighting to set
see: enchant.gl.AmbientLight [/lang]
[lang:ja] シーンに設定されている環境光源を取得する.
see: enchant.gl.AmbientLight
returns: {enchant.gl.AmbientLight} [/lang] [lang:en] Gets ambient light source in scene.
see: enchant.gl.AmbientLight
returns: {enchant.gl.AmbientLight} [/lang]
[lang:ja] シーンに平行光源を設定する.
parameter: {enchant.gl.DirectionalLight} light 設定する照明
see: enchant.gl.DirectionalLight [/lang] [lang:en] Sets directional light source in scene.
parameter: {enchant.gl.DirectionalLight} light Lighting to set
see: enchant.gl.DirectionalLight [/lang]
[lang:ja] シーンに設定されている平行光源を取得する.
see: enchant.gl.DirectionalLight
returns: {enchant.gl.DirectionalLight} [/lang] [lang:en] Gets directional light source in scene.
see: enchant.gl.DirectionalLight
returns: {enchant.gl.DirectionalLight} [/lang]
[lang:ja] シーンに照明を追加する. 現在, シーンに追加しても適用されない.
parameter: {enchant.gl.PointLight} light 追加する照明
see: enchant.gl.PointLight [/lang] [lang:en] Add lighting to scene. Currently, will not be used even if added to scene.
parameter: {enchant.gl.PointLight} light Lighting to add
see: enchant.gl.PointLight [/lang]
[lang:ja] シーンから照明を削除する
parameter: {enchant.gl.PointLight} light 削除する照明
see: enchant.gl.PointLight. [/lang] [lang:en] Delete lighting from scene
parameter: {enchant.gl.PointLight} light Lighting to delete
see: enchant.gl.PointLight. [/lang]
@type {Object}
@scope enchant.gl.collision.Bounding.prototype
[lang:ja] Sprite3Dの衝突判定を設定するクラス. 点として定義されている. enchant.gl.collision.Boundingを継承したクラスとして, {gray enchant.gl.collision.BS}, {gray enchant.gl.collision.AABB}, {gray enchant.gl.collision.OBB}, がある. 現在, OBBはサポートされていない. @constructs [/lang] [lang:en] Class to set Sprite3D collision detection. Defined as a point. {gray enchant.gl.collision.BS}, {gray enchant.gl.collision.AABB}, {gray enchant.gl.collision.OBB} exist as inherited classes of enchant.gl.collision.Bounding Currently, OBB is not supported. @constructs [/lang]
[lang:ja] 点との距離を計算する.
parameter: {enchant.gl.collision.Bounding} bounding 衝突点オブジェクト
returns: {Number} [/lang] [lang:en] Calculates distance between points.
parameter: {enchant.gl.collision.Bounding} bounding Collision point object
returns: {Number} [/lang]
[lang:ja] 球との距離を計算する.
parameter: {enchant.gl.collision.BS} boudning 衝突球オブジェクト
returns: {Number} [/lang] [lang:en] Calculates distance between balls.
parameter: {enchant.gl.collision.BS} boudning Collision ball object
returns: {Number} [/lang]
[lang:ja] 回転しない立方体との距離を計算する. 現在, 衝突していなければ1, 衝突していれば0が返される.
parameter: {enchant.gl.collision.AABB} bounding AABB
returns: {Number} [/lang] [lang:en] Calculates distance from non-rotating cube. Currently, 0 will be returned with or without collision.
parameter: {enchant.gl.collision.AABB} bounding AABB
returns: {Number} [/lang]
[lang:ja] 回転する直方体との距離を計算する. 現在, サポートされていない.
parameter: {enchant.gl.collision.OBB} bounding OBB
returns: {Number} [/lang] [lang:en] Calculates distance from rotating cuboid. Not currently supported.
parameter: {enchant.gl.collision.OBB} bounding OBB
returns: {Number} [/lang]
[lang:ja] 他の衝突判定オブジェクトとの衝突判定. 衝突判定オブジェクトか, x, y, zプロパティを持っているオブジェクトとの衝突を判定することができる.
parameter: {enchant.gl.collision.Bounding|enchant.gl.collision.BS|enchant.gl.collision.AABB|enchant.gl.collision.OBB} bounding 衝突判定オブジェクト
returns: {Boolean} [/lang] [lang:en] Collision detection with other collision detection object. A collision detection object can detect collision with an object with x, y, z properties.
parameter: {enchant.gl.collision.Bounding|enchant.gl.collision.BS|enchant.gl.collision.AABB|enchant.gl.collision.OBB} bounding Collision detection object
returns: {Boolean} [/lang]
@scope enchant.gl.collision.BS.prototype
[lang:ja] Sprite3Dの衝突判定を設定するクラス. 球として定義されている. @constructs
see: enchant.gl.collision.Bounding [/lang] [lang:en] Class that sets Sprite3D collision detection. Defined as a ball. @constructs
see: enchant.gl.collision.Bounding [/lang]
@scope enchant.gl.collision.AABB.prototype
[lang:ja] Sprite3Dの衝突判定を設定するクラス. 回転しない立方体として定義されている. @constructs
see: enchant.gl.collision.Bounding [/lang] [lang:en] Class that sets Sprite3D collision detection. Defined as non-rotating cube. @constructs
see: enchant.gl.collision.Bounding [/lang]
@scope enchant.gl.collision.OBB.prototype
[lang:ja] Sprite3Dの衝突判定を設定するクラス. 回転するとして定義されている. @constructs
see: enchant.gl.collision.Bounding [/lang] [lang:en] Class that sets Sprite3D collision detection. Defined as rotating. @constructs
see: enchant.gl.collision.Bounding [/lang]*/ initialize: function() { enchant.gl.collision.Bounding.call(this); this.type = 'OBB'; }, toBounding: function(another) { return point2OBB(another, this); }, toBS: function(another) { return BS2OBB(another, this); }, toAABB: function(another) { return AABB2OBB(another, this); }, toOBB: function(another) { return OBB2OBB(this, another); } }); // borrowed from MMD.js var bezierp = function(x1, x2, y1, y2, x) { var t, tt, v; t = x; while (true) { v = ipfunc(t, x1, x2) - x; if (v * v < 0.0000001) { break; } tt = ipfuncd(t, x1, x2); if (tt === 0) { break; } t -= v / tt; } return ipfunc(t, y1, y2); }; var ipfunc = function(t, p1, p2) { return (1 + 3 * p1 - 3 * p2) * t * t * t + (3 * p2 - 6 * p1) * t * t + 3 * p1 * t; }; var ipfuncd = function(t, p1, p2) { return (3 + 9 * p1 - 9 * p2) * t * t + (6 * p2 - 12 * p1) * t + 3 * p1; }; var frac = function(n1, n2, t) { return (t - n1) / (n2 - n1); }; var lerp = function(n1, n2, r) { return n1 + r * (n2 - n1); }; var _tmpve = vec3.create(); var _tmpvt = vec3.create(); var _tmpaxis = vec3.create(); var _tmpquat = quat4.create(); var _tmpinv = quat4.create(); @scope enchant.gl.State.prototypeenchant.gl.State = enchant.Class.create({ [lang:ja] アニメーションの状態を表すための基底クラス. [/lang] [lang:en] Base class for expressing animation condition. [/lang]
parameter: {Number[]} position
parameter: {Number[]} rotation @constructsinitialize: function(position, rotation) { this._position = vec3.create(); vec3.set(position, this._position); this._rotation = quat4.create(); quat4.set(rotation, this._rotation); }, [lang:ja] 位置・回転をセットする. [/lang] [lang:en] Sets position/rotation. [/lang]set: function(pose) { vec3.set(pose._position, this._position); quat4.set(pose._rotation, this._rotation); } }); @scope enchant.gl.Pose.prototypeenchant.gl.Pose = enchant.Class.create(enchant.gl.State, { [lang:ja] 姿勢を処理するためのクラス.
parameter: {Number[]} position
parameter: {Number[]} rotation @constructs @extends enchant.gl.State [/lang] [lang:en] Class for processing pose.
parameter: {Number[]} position
parameter: {Number[]} rotation @constructs @extends enchant.gl.State [/lang]initialize: function(position, rotation) { enchant.gl.State.call(this, position, rotation); }, [lang:ja] 他の姿勢との補間を行う.
parameter: {enchant.gl.Pose} another
parameter: {Number} ratio
returns: {enchant.gl.Pose} [/lang] [lang:en] Performs interpolation with other pose.
parameter: {enchant.gl.Pose} another
parameter: {Number} ratio
returns: {enchant.gl.Pose} [/lang]getInterpolation: function(another, ratio) { vec3.lerp(this._position, another._position, ratio, _tmpve); quat4.slerp(this._rotation, another._rotation, ratio, _tmpquat); return new enchant.gl.Pose(_tmpve, _tmpquat); }, _bezierp: function(x1, y1, x2, y2, x) { return bezierp(x1, x2, y1, y2, x); } }); @scope enchant.gl.KeyFrameManager.prototypeenchant.gl.KeyFrameManager = enchant.Class.create({ [lang:ja] キーフレームアニメーションを実現するためのクラス. enchant.gl.Poseに限らず様々なデータを扱える. @constructs [/lang] [lang:en] Class for realizing key frame animation. Handles various data, not limited to enchant.gl.Pose. @constructs [/lang]initialize: function() { this._frames = []; this._units = []; this.length = -1; this._lastPose = null; }, [lang:ja] フレームを追加する.
parameter: {*} pose キーフレーム.
parameter: {Number} frame フレーム番号. [/lang] [lang:en] Add frame.
parameter: {*} pose Key frame.
parameter: {Number} frame Frame number. [/lang]addFrame: function(pose, frame) { if (typeof frame !== 'number') { this.length += 1; frame = this.length; } if (frame > this.length) { this.length = frame; this._lastPose = pose; } this._frames.push(frame); this._units[frame] = pose; }, [lang:ja] 指定されたフレーム番号の情報を返す. 指定されたフレーム番号に該当するデータがない場合, 指定されたフレーム番号の前後のデータから補間したデータを取得する.
parameter: {Number} frame フレーム番号
returns: {*} [/lang] [lang:en] Return information for designated frame number. When there is no data corresponding to the designated frame, interpolated data from before and after are acquired.
parameter: {Number} frame Frame number
returns: {*} [/lang]getFrame: function(frame) { var prev, next, index, pidx, nidx; var ratio = 0; if (frame >= this.length) { return this._lastPose; } if (this._units[frame]) { return this._units[frame]; } else { index = this._getPrevFrameIndex(frame); pidx = this._frames[index]; nidx = this._frames[index + 1]; prev = this._units[pidx]; next = this._units[nidx]; ratio = this._frac(pidx, nidx, frame); return this._interpole(prev, next, ratio); } }, bake: function() { var state; for (var i = 0, l = this.length; i < l; i++) { if (this._units[i]) { continue; } state = this.getFrame(i); this.addFrame(state, i); } this._sort(); }, _frac: function(p, n, t) { return frac(p, n, t); }, _interpole: function(prev, next, ratio) { return prev.getInterpolation(next, ratio); }, _sort: function() { this._frames.sort(function(a, b) { return a - b; }); }, _getPrevFrameIndex: function(frame) { for (var i = 0, l = this._frames.length; i < l; i++) { if (this._frames[i] > frame) { break; } } return i - 1; } }); @scope enchant.gl.Bone.prototypeenchant.gl.Bone = enchant.Class.create(enchant.gl.State, { [lang:ja] ボーンの状態を表すクラス.
parameter: {String} name
parameter: {Number} head
parameter: {Number} position
parameter: {Number} rotation @constructs @extends enchant.gl.State [/lang] [lang:en] Class to display bone status.
parameter: {String} name
parameter: {Number} head
parameter: {Number} position
parameter: {Number} rotation @constructs @extends enchant.gl.State [/lang]initialize: function(name, head, position, rotation) { enchant.gl.State.call(this, position, rotation); this._name = name; this._origin = vec3.create(); vec3.set(head, this._origin); this._globalpos = vec3.create(); vec3.set(head, this._globalpos); this._globalrot = quat4.identity(); this.parentNode = null; this.childNodes = []; [lang:ja] IK解決の際にクォータニオンに変換をかける関数を設定する. [/lang] [lang:en] During each IK settlement, function for which change is applied to quaternion is set. [/lang]this.constraint = null; }, [lang:ja] ボーンに子のボーンを追加する.
parameter: {enchant.gl.Bone} child [/lang] [lang:en] Add child bone to bone.
parameter: {enchant.gl.Bone} child [/lang]addChild: function(child) { this.childNodes.push(child); child.parentNode = this; }, [lang:ja] ボーンから子のボーンを削除する.
parameter: {enchant.gl.Bone} child [/lang] [lang:en] Delete child bone from bone.
parameter: {enchant.gl.Bone} child [/lang]removeChild: function(child) { var i; if ((i = this.childNodes.indexOf(child)) !== -1) { this.childNodes.splice(i, 1); } child.parentNode = null; }, [lang:ja] ボーンの姿勢をセットする.
parameter: {*} poses [/lang] [lang:en] Set bone pose.
parameter: {*} poses [/lang]setPoses: function(poses) { var child; if (poses[this._name]) { this.set(poses[this._name]); } for (var i = 0, l = this.childNodes.length; i < l; i++) { child = this.childNodes[i]; child.setPoses(poses); } }, _applyPose: function(){ var parent = this.parentNode; quat4.multiply(parent._globalrot, this._rotation, this._globalrot); quat4.multiplyVec3(parent._globalrot, this._position, this._globalpos); vec3.add(parent._globalpos, this._globalpos, this._globalpos); }, _solveFK: function() { var child; this._applyPose(); for (var i = 0, l = this.childNodes.length; i < l; i++) { child = this.childNodes[i]; child._solveFK(); } }, _solve: function(quat) { quat4.normalize(quat, this._rotation); this._solveFK(); } }); @scope enchant.gl.Skeleton.prototypeenchant.gl.Skeleton = enchant.Class.create({ [lang:ja] ボーンの構造のルートになるクラス. @constructs [/lang] [lang:en] Class that becomes bone structure route. @constructs [/lang]initialize: function() { this.childNodes = []; this._origin = vec3.create(); this._position = vec3.create(); this._rotation = quat4.identity(); this._globalpos = vec3.create(); this._globalrot = quat4.identity(); this._iks = []; }, [lang:ja] Skeletonに子のボーンを追加する.
parameter: {enchant.gl.Bone} child [/lang] [lang:en] Add child bone to skeleton.
parameter: {enchant.gl.Bone} child [/lang]addChild: function(bone) { this.childNodes.push(bone); bone.parentNode = this; }, [lang:ja] Skeletonから子のボーンを削除する.
parameter: {enchant.gl.Bone} child [/lang] [lang:en] Delete child bone from skeleton.
parameter: {enchant.gl.Bone} child [/lang]removeChild: function(bone) { var i; if ((i = this.childNodes.indexOf(bone)) !== -1) { this.childNodes.splice(i, 1); } bone.parentNode = null; }, [lang:ja] 姿勢をセットする.
parameter: {*} poses [/lang] [lang:en] Set pose.
parameter: {*} poses [/lang]setPoses: function(poses) { var child; for (var i = 0, l = this.childNodes.length; i < l; i++) { child = this.childNodes[i]; child.setPoses(poses); } }, [lang:ja] FKによって姿勢解決を行う. セットされた姿勢情報から姿勢をつくる. [/lang] [lang:en] Perform pose settlement according to FK. Make pose from set pose information. [/lang]solveFKs: function() { var child; for (var i = 0, l = this.childNodes.length; i < l; i++) { child = this.childNodes[i]; child._solveFK(); } }, [lang:ja] IKの制御情報を追加する.
parameter: {enchant.gl.Bone} effector
parameter: {enchant.gl.Bone} target
parameter: {enchant.gl.Bone[]} bones
parameter: {Number} maxangle
parameter: {Number} iteration
see: enchant.gl.Skeleton#solveIKs [/lang] [lang:en] Add IK control information.
parameter: {enchant.gl.Bone} effector
parameter: {enchant.gl.Bone} target
parameter: {enchant.gl.Bone[]} bones
parameter: {Number} maxangle
parameter: {Number} iteration
see: enchant.gl.Skeleton#solveIKs [/lang]addIKControl: function(effector, target, bones, maxangle, iteration) { this._iks.push(arguments); }, // by ccd [lang:ja] IKによって姿勢解決を行う. {gray enchant.gl.Skeleton#addIKControl}によって追加された情報をもとにする. [/lang] [lang:en] Perform pose settlement via IK. Base on information added via {gray enchant.gl.Skeleton#addIKControl} [/lang]solveIKs: function() { var param; for (var i = 0, l = this._iks.length; i < l; i++) { param = this._iks[i]; this._solveIK.apply(this, param); } }, _solveIK: function(effector, target, bones, maxangle, iteration) { var len, origin; vec3.subtract(target._origin, target.parentNode._origin, _tmpinv); var threshold = vec3.length(_tmpinv) * 0.1; for (var i = 0; i < iteration; i++) { vec3.subtract(target._globalpos, effector._globalpos, _tmpinv); len = vec3.length(_tmpinv); if (len < threshold) { break; } for (var j = 0, ll = bones.length; j < ll; j++) { origin = bones[j]; this._ccd(effector, target, origin, maxangle, threshold); } } }, _ccd: function(effector, target, origin, maxangle, threshold) { vec3.subtract(effector._globalpos, origin._globalpos, _tmpve); vec3.subtract(target._globalpos, origin._globalpos, _tmpvt); vec3.cross(_tmpvt, _tmpve, _tmpaxis); var elen = vec3.length(_tmpve); var tlen = vec3.length(_tmpvt); var alen = vec3.length(_tmpaxis); if (elen < threshold || tlen < threshold || alen < threshold) { return; } var rad = Math.acos(vec3.dot(_tmpve, _tmpvt) / elen / tlen); if (rad > maxangle) { rad = maxangle; } vec3.scale(_tmpaxis, Math.sin(rad / 2) / alen, _tmpquat); _tmpquat[3] = Math.cos(rad / 2); quat4.inverse(origin.parentNode._globalrot, _tmpinv); quat4.multiply(_tmpinv, _tmpquat, _tmpquat); quat4.multiply(_tmpquat, origin._globalrot, _tmpquat); if (origin.constraint) { origin.constraint(_tmpquat); } origin._solve(_tmpquat); } }); var DEFAULT_VERTEX_SHADER_SOURCE = '\n\ attribute vec3 aVertexPosition;\n\ attribute vec4 aVertexColor;\n\ \n\ attribute vec3 aNormal;\n\ attribute vec2 aTextureCoord;\n\ \n\ uniform mat4 uModelMat;\n\ uniform mat4 uRotMat;\n\ uniform mat4 uCameraMat;\n\ uniform mat4 uProjMat;\n\ uniform mat3 uNormMat;\n\ uniform float uUseCamera;\n\ \n\ varying vec2 vTextureCoord;\n\ varying vec4 vColor;\n\ varying vec3 vNormal;\n\ \n\ void main() {\n\ vec4 p = uModelMat * vec4(aVertexPosition, 1.0);\n\ gl_Position = uProjMat * (uCameraMat * uUseCamera) * p + uProjMat * p * (1.0 - uUseCamera);\n\ vTextureCoord = aTextureCoord;\n\ vColor = aVertexColor;\n\ vNormal = uNormMat * aNormal;\n\ }'; var DEFAULT_FRAGMENT_SHADER_SOURCE = '\n\ precision highp float;\n\ \n\ uniform sampler2D uSampler;\n\ uniform float uUseDirectionalLight;\n\ uniform vec3 uAmbientLightColor;\n\ uniform vec3 uLightColor;\n\ uniform vec3 uLookVec;\n\ uniform vec4 uAmbient;\n\ uniform vec4 uDiffuse;\n\ uniform vec4 uSpecular;\n\ uniform vec4 uEmission;\n\ uniform vec4 uDetectColor;\n\ uniform float uDetectTouch;\n\ uniform float uUseTexture;\n\ uniform float uShininess;\n\ uniform vec3 uLightDirection;\n\ \n\ varying vec2 vTextureCoord;\n\ varying vec4 vColor;\n\ varying vec3 vNormal;\n\ \n\ \n\ void main() {\n\ float pi = 4.0 * atan(1.0);\n\ vec4 texColor = texture2D(uSampler, vTextureCoord);\n\ vec4 baseColor = vColor;\n\ baseColor *= texColor * uUseTexture + vec4(1.0, 1.0, 1.0, 1.0) * (1.0 - uUseTexture);\n\ float alpha = baseColor.a * uDetectColor.a * uDetectTouch + baseColor.a * (1.0 - uDetectTouch);\n\ if (alpha < 0.2) {\n\ discard;\n\ }\n\ else {\n\ vec4 amb = uAmbient * vec4(uAmbientLightColor, 1.0);\n\ vec3 N = normalize(vNormal);\n\ vec3 L = normalize(uLightDirection);\n\ vec3 E = normalize(uLookVec);\n\ vec3 R = reflect(-L, N);\n\ float lamber = max(dot(N, L) , 0.0);\n\ vec4 dif = uDiffuse * lamber;\n\ float s = max(dot(R, -E), 0.0);\n\ vec4 specularColor = (uShininess + 2.0) / (2.0 * pi) * uSpecular * pow(s, uShininess) * sign(lamber);\n\ gl_FragColor = (vec4(((amb + vec4(uLightColor, 1.0) * (dif + specularColor)) * baseColor).rgb, baseColor.a) \ * uUseDirectionalLight + baseColor * (1.0 - uUseDirectionalLight)) \ * (1.0 - uDetectTouch) + uDetectColor * uDetectTouch;\n\ }\n\ }'; }());
[]readme course(s) prefaceI 1 2II 3 4III 5 6 7IV 8 9 10V 11 12 afterthought(s)appendix reference(s) example(s)resource(s) _![]()
(C) Æliens 04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.