annotate fps/fps.html @ 3:aa7abf13d3f5 draft default tip

fix bug
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Wed, 16 May 2012 21:56:12 +0900
parents 47399f2f3a80
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 <html>
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2 <head>
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
3 <title>WebGL fps</title>
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
4 <script src="resources/J3DI.js"> </script>
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
5 <script src="resources/J3DIMath.js"> </script>
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
6 <script src="resources/parse.js"> </script>
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
7 <script src="resources/makePanel.js"> </script>
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
8 <script src="resources/jkl-parsexml.js"> </script>
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
9 <script src="resources/keyboard.js"> </script>
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
10 <script src="resources/mouse.js"> </script>
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
11 </head>
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
13 <script id="vshader" type="x-shader/x-vertex">
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
14 uniform mat4 u_modelViewProjMatrix;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
15 uniform mat4 u_normalMatrix;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
16 uniform vec3 lightDir;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
17
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
18 attribute vec3 vNormal;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
19 attribute vec4 vTexCoord;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
20 attribute vec4 vPosition;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
21
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
22 varying float v_Dot;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
23 varying vec2 v_texCoord;
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
25 void main()
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
26 {
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
27 gl_Position = u_modelViewProjMatrix * vPosition;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
28 v_texCoord = vTexCoord.st;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
29 vec4 transNormal = u_normalMatrix * vec4(vNormal,1);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
30 v_Dot = max(dot(transNormal.xyz, lightDir), 0.0);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
31 }
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
32 </script>
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
33
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
34 <script id="fshader" type="x-shader/x-fragment">
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
35 #ifdef GL_ES
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
36 precision mediump float;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
37 #endif
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
38
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
39 uniform sampler2D sampler2d;
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
41 varying float v_Dot;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
42 varying vec2 v_texCoord;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
43
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
44 void main()
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
45 {
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
46 vec4 color = texture2D(sampler2d,v_texCoord);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
47 color += vec4(0.1,0.1,0.1,1);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
48 // if(color.a == 1.0)color=vec4(1,0,0,1);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
49 // else color=vec4(0,1,1,1);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
50 gl_FragColor = vec4(color.xyz * v_Dot, color.a);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
51 // gl_FragColor = vec4(color.xyz * v_Dot, 0.5);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
52 }
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
53 </script>
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
54
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
55
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
56 <script>
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
57 //画面(canvas)の大きさ
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
58 var w = 1024;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
59 var h = 640;
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
61 //var mvMatrix = mat4.create();
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
62
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
63
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
64 function init()
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
65 {
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
66 gl = initWebGL("game", "vshader", "fshader",
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
67 [ "vNormal", "vTexCoord", "vPosition"],
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
68 [ 0, 0, 0, 1 ], 10000);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
69
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
70 gl.uniform3f(gl.getUniformLocation(gl.program, "lightDir"), 1, 1, 1);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
71 gl.uniform1i(gl.getUniformLocation(gl.program, "sampler2d"), 0);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
72
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
73 gl.enable(gl.TEXTURE_2D);
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
75 modelMap = new XMLModelMap(gl);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
76 modelMap.load("./xml/cube.xml");
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
77 object = modelMap["Cube"];
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
78 object2 = modelMap["Cube"];
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
79 object3 = modelMap["Cube"];
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
80
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
81 modelMap.load("./xml/underwall.xml");
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
82 object4 = modelMap["UnderWall"];
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
83
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
84 return gl;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
85 }
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
86
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
87 function XMLModelMap(gl) {
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
88 this.gl = gl;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
89 }
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
91 XMLModelMap.prototype.load = function(file) {
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
92 var data = parseObj(file);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
93 if(!data) return;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
94 for(var name in data) {
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
95 this[name] = makeXmlObj(gl,data[name]);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
96 this[name].texture = loadImageTexture(this.gl, data[name].image);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
97 }
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
98 }
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
100 /* translate */
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
101 xPos = 0;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
102 yPos = 0;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
103 zPos = 0;
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
105 /* rotate */
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
106 xRool = 0;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
107 yRool = 0;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
108 zRool = 0;
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
110 /* moving late */
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
111 speedX = 0;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
112 speedZ = 0;
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
114 /* rotating late */
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
115 //rotateX = 0;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
116 //rotateY = 0;
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
118 yaw = 0;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
119 yawRate = 0;
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
120
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
121
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
122 function reshape(ctx, ortho)
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
123 {
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
124 var canvas = document.getElementById('game');
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
125
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
126 width = canvas.width;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
127 height = canvas.height;
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
129 ctx.viewport(0, 0, width, height);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
130
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
131 var t = width/height;
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
133 ctx.perspectiveMatrix = new J3DIMatrix4();
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
134 ctx.perspectiveMatrix.frustum(-0.5, 0.5, -0.5 / t, 0.5 / t, 1, 100000);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
135 }
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
136
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137
2
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
138 function setCamera(ctx){
3
aa7abf13d3f5 fix bug
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
139 ctx.viewport(0, 0, width, height);
2
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
140
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
141 var t = width/height;
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
142
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
143 ctx.perspectiveMatrix.makeIdentity();
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
144 ctx.perspectiveMatrix.frustum(-0.5, 0.5, -0.5 / t, 0.5 / t, 1, 100000);
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
145
3
aa7abf13d3f5 fix bug
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
146 var x = Math.cos((angle+90)*Math.PI/180 );
aa7abf13d3f5 fix bug
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
147 var z = Math.sin((angle+90)*Math.PI/180 );
2
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
148
3
aa7abf13d3f5 fix bug
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
149 cameraX += x * speedZ;
aa7abf13d3f5 fix bug
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
150 cameraZ += z * speedZ;
2
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
151
3
aa7abf13d3f5 fix bug
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
152 ctx.perspectiveMatrix.rotate(angle,0,1,0);
aa7abf13d3f5 fix bug
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
153 ctx.perspectiveMatrix.translate(cameraX,0,cameraZ);
aa7abf13d3f5 fix bug
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
154
2
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
155 }
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
156
3
aa7abf13d3f5 fix bug
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
157 angle = 0;
aa7abf13d3f5 fix bug
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
158 cameraX = 0;
aa7abf13d3f5 fix bug
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
159 cameraZ = 0;
2
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
160
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
161 FILPCOUNT = 0;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
162 function loop(ctx, ortho)
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
163 {
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
164 ctx.clear(ctx.COLOR_BUFFER_BIT | ctx.DEPTH_BUFFER_BIT);
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
165
3
aa7abf13d3f5 fix bug
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
166 setCamera(ctx);
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
167
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
168 PutSpriteV(ctx, cube_X, cube_Y, cube_Z, 1, matrix, object);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
169 PutSpriteV(ctx, cube_X2, cube_Y2, cube_Z2, 1, matrix, object2);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
170 PutSpriteV(ctx, cube_X3, cube_Y3, cube_Z3, 1, matrix, object3);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
171 PutSpriteV(ctx, ground_X, ground_Y, ground_Z, 2, matrix2, object4);
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
172
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
173 move();
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
174 ctx.flush();
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
175
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
176 FILPCOUNT++;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
177 framerate.snapshot();
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
178 }
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
179
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
180
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
181 function opening(ctx, ortho)
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
182 {
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
183 reshape(ctx, ortho);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
184 ctx.clear(ctx.COLOR_BUFFER_BIT | ctx.DEPTH_BUFFER_BIT);
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
185
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
186 ctx.flush();
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
187 var f = function() { loop(ctx, ortho); };
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
188 setInterval(f, 10);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
189 }
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
190
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
191
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
192 // display size
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
193 var W = 1024;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
194 var H = 640;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
195
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
196 function start()
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
197 {
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
198 var ortho = {left:0, right:200, bottom:140, top:0}
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
199 matrix = new J3DIMatrix4(); // global variable
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
200 matrix2 = new J3DIMatrix4(); // global variable
2
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
201
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
202
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
203 cube_X = 0;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
204 cube_Y = 0;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
205 cube_Z = -10;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
206
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
207 cube_X2 = 5;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
208 cube_Y2 = 0;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
209 cube_Z2 = -10;
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
210
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
211 cube_X3 = -5;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
212 cube_Y3 = 0;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
213 cube_Z3 = -10;
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
214
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
215 ground_X = 0;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
216 ground_Y = 15;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
217 ground_Z = -50;
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
218
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
219
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
220 // var c = document.getElementById("game");
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
221 // c.width = W;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
222 // c.height = H;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
223
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
224 var ctx = init();
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
225 //var ctx2 = init("./xml/sphere.xml","Sphere")
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
226
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
227 o = function() {opening(ctx, ortho);};
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
228 setTimeout(o, 10);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
229 framerate = new Framerate("framerate");
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
230 }
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
231
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
232
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
233 function loadFile(objectname)
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
234 {
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
235 var filename = "./xml/"+objectname+".xml";
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
236 modelMap.load(filename);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
237 //console.log(filename);
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
238 object = modelMap[objectname];
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
239 }
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
240
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
241 function objToString(obj,map,indent){
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
242 indent=indent?indent+"\t":"";if(!map)map={};
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
243 if(map[obj])return;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
244 map[obj]=true;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
245 if(typeof obj=="string"||typeof obj=="number"||typeof obj=="boolena")return indent+obj;
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
246 if(typeof obj=="array"){
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
247
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
248 for(var i=0,s="";i < obj.length;i++ )s+=objToString(obj[i],map,indent)+",";
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
249 return indent+"["+s+"]";
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
250 }
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
251 var s="";for(var i in obj)s+=indent+"\t"+i+":"+objToString(obj[i],map)+"\n";return indent+"{"+s+"}";
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
252 }
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
253
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
254 </script>
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
255
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
256 <body onload="start()" onkeydown="keyboardDown()" onkeypress="keyboardPress()" onkeyup="keyboardUp()" onmousedown="mouseDown();" onmouseup="mouseUp();" style='overflow:hidden; '>
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
257 <canvas id="game" width=1024 height=640 >
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
258 </canvas>
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
259 <form onsubmit="loadFile(document.getElementById('filename').value);return false;">
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
260 <input type="text" id="filename" value="Cube">
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
261 </form>
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
262 <div id="framerate"></div>
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
263 <div id="console"></div>
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
264
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
265
1
6b217e0f301c add rotate
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
266 </body>
0
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
267
fbb6f4f89f76 info3_1week
Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
268 </html>