『WebGL+HTML5 3DCGプログラミング』修正箇所

作成日:2012/5/21、最終更新日:2013/5/9

本文の修正点

25ページ、上から1、2行目(2012/8/8追加)

13  </body>
14</html>
15  </body>
16</html>

44ページ、表2.11の1行目(2012/8/8追加)

Date.getTime() 1970年1月1日00:00:00からのミリ秒※21を返す。
Date.getTime() 1970年1月1日00:00:00からのミリ秒※22を返す。

104ページ図3.15内および106ページ図3.16内のJavascriptコード(7〜9行目、計3箇所)

  gl.getAttributeLocation(..., 'a_Position' );
   ...
gl.vertexAttribute3f(a_Position, 0.0, 0.0, 0.0);
  gl.getAttribLocation(..., 'a_Position' );
   ...
gl.vertexAttrib3f(a_Position, 0.0, 0.0, 0.0);

108ページ、コラム内の下から2行目

var position = [1.0, 2.0, 3.0, 1.0];
var position = new Float32Array([1.0, 2.0, 3.0, 1.0]);

154ページ、図4.15の見出し

図4.15●gl.LINES、gl.LINE_STRIP、LINE_LOOPの実行結果
図4.15●gl.LINES、gl.LINE_STRIP、gl.LINE_LOOPの実行結果

172ページ、下から5行目(2013/4/26追加)

例えば、x' = x cosβ - y sinβ と x' = ax + by + cz + d を比べると、a が cosβ、b が - cosβ、c = 0、d = 0であることがわかります。
例えば、x' = x cosβ - y sinβ と x' = ax + by + cz + d を比べると、a が cosβ、b が - sinβ、c = 0、d = 0であることがわかります。

176ページ、上から5行目(2012/8/8追加)

locationで指定されたuniform変数にarrayで指定した4×4配列を代入する。
locationで指定されたuniform変数にarrayで指定した4×4行列を代入する。

185ページ、下から11行目(2012/6/22追加)

モデル行列には、「平行移動して、回転する」以外にも、どのような座標変換をいくつでも組み合わせることができます。
また、モデル変換を行う行列をモデル行列と呼びます。モデル行列には、「平行移動して、回転する」以外にも、どのような座標変換をいくつでも組み合わせることができます。

254ページ、表5.9の5行目

gl.LUMINANCE (L, L, L, 1.0)※20
gl.LUMINANCE (L, L, L, 1.0)※21

275ページ、8〜9行目(2012/6/4追加)

(1)や(2)と同様に列順に並べた行列が作成されます。
(1)や(2)と同様に列優先に並べた行列が作成されます。

299ページ、表6.17の2行目(2012/8/8追加)

GL_FRAGMENT_PRECISION_HIGH フラグメントシェーダでhighpができる場合は1
GL_FRAGMENT_PRECISION_HIGH フラグメントシェーダでhighp使用できる場合は1

304ページ、下から1行目(2012/6/22追加)

※4 上方向ベクトルは、単位ベクトル(8.2節)でなくても構いません。
※4 上方向ベクトルは、長さが1.0のベクトル(単位ベクトル)でなくても構いません(8.1.4節)

313ページ、下から7行目(2012/6/22追加)

このビュー行列と回転行列を乗算した行列をモデルビュー行列と呼びます。
このビュー行列とモデル行列を乗算した行列をモデルビュー行列と呼びます。

336ページ、5行目(2012/6/4追加)

aspect近平面の縦横比(高さ/幅)
aspect近平面の縦横比(幅/高さ

336ページ、11行目(2012/6/4追加)

例えば、高さを100、幅を200にすると縦横比は0.5となります。
例えば、高さを100、幅を200にすると縦横比は2.0となります。

430ページ、11行目

戻り値※29 null以外 シェーダオブジェクト
戻り値※30 null以外 シェーダオブジェクト

435ページ、上から15行目(2012/8/8追加)

gl.detachShader()でシェーダオブジェクトから取り外せます。
gl.detachShader()プログラムオブジェクトから取り外せます。

436ページ、下から7行目

gl.VALIDATE_STATUS 妥当性のチェックに成功したかどうか
truefalse※33
gl.VALIDATE_STATUS 妥当性のチェックに成功したかどうか
truefalse※34

462ページ、下から3行目(2012/8/8追加)

ここで、開始距離≦視点からの距離≦終点距離
ここで、開始距離≦視点からの距離≦終了距離

462ページ、下から1行目(2012/8/8追加)

「終点距離<視点からの距離」の場合は 0.0 とします。
終了距離<視点からの距離」の場合は 0.0 とします。

472ページ、下から1行目

エラー gl.INVALID_ENUM src_factordst_factorが表9.2以外の値
エラー INVALID_ENUM src_factordst_factorが表9.2以外の値

474ページ、2行目(2013/5/9追加)

glBlendFunc(GL_SRC_ALPHA, GL_ONE);
gl.blendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE);

475ページ、上から13行目(2012/8/8追加)

この問題は、隠面消去機能を有効にしたり無効にしたりしながら描画することで解決できます。
この問題は、デプスバッファへの書き込みを有効にしたり無効にしたりしながら描画することで解決できます。

515ページ、9.10.3の3行目(2012/10/17追加)

JavaScriptでは、ArrayDataのような組み込みオブジェクトと同様のオブジェクトを自分で作成できます。
JavaScriptでは、ArrayDateのような組み込みオブジェクトと同様のオブジェクトを自分で作成できます。

517ページ、上から9行目(2012/6/29追加)

var sp = StringParser('     col(1.000 0.000 0.000 1.000)');
var sp = new StringParser('     col(1.000 0.000 0.000 1.000)');

521ページ、表9.3の第1行第1列(2012/6/29追加)

StringParser.int(str)
StringParser.init(str)

CD-ROMの修正点

第8章/MultiJointModel_segment.js

188  // 頂点情報(座標)をバッファに書き込む。attribute変数への割り当てはしない
194  if (!g_baseBuffer || !g_arm1Buffer || !g_arm2Buffer || !g_palmBuffer || !g_fingerBuffer) return null;
197  if (!initArrayBuffer(gl, 'a_Normal', normals, 3, gl.FLOAT)) return null;
203    return null;
188  // 頂点情報(座標)をバッファに書き込む。attribute変数への割り当てはしない
194  if (!g_baseBuffer || !g_arm1Buffer || !g_arm2Buffer || !g_palmBuffer || !g_fingerBuffer) return -1;
197  if (!initArrayBuffer(gl, 'a_Normal', normals, 3, gl.FLOAT)) return -1;
203    return -1;

修正済ファイルのダウンロード

第9章/HUD.js

155function check(gl, n, x, y, currentAngle, u_Clicked, viewProjMatrix, u_MvpMatrix, clicked) {
155function check(gl, n, x, y, currentAngle, u_Clicked, viewProjMatrix, u_MvpMatrix) {

修正済ファイルのダウンロード


書籍紹介のページに戻る