Просмотр исходного кода

add basic camera code.

not quite sure yet why camera = focus works.
Lucas Stadler лет назад: 12
Родитель
Сommit
83dab2e497
1 измененных файлов с 12 добавлено и 0 удалено
  1. 12 0
      js/pixl/public/trixl.html

+ 12 - 0
js/pixl/public/trixl.html

102
		program.color = gl.getUniformLocation(program, 'color');
102
		program.color = gl.getUniformLocation(program, 'color');
103
		gl.uniform4f(program.color, -1, -1, -1, -1);
103
		gl.uniform4f(program.color, -1, -1, -1, -1);
104
104
105
		trixl.pos = {x: 0, y: 0, z: 0, a: 0};
106
105
		var angle = {x: 0, y: 0, z: 0};
107
		var angle = {x: 0, y: 0, z: 0};
106
		var offset = {x: 0, y: 0, z: 0};
108
		var offset = {x: 0, y: 0, z: 0};
107
		program.transform = gl.getUniformLocation(program, 'transform');
109
		program.transform = gl.getUniformLocation(program, 'transform');
108
		trixl.redraw = function() {
110
		trixl.redraw = function() {
111
			var camera = mat4.multiplyMany(
112
				matrix.translate(trixl.pos.x, trixl.pos.y, trixl.pos.z),
113
				matrix.rotateY(trixl.pos.a)
114
			);
115
			var camera_pos = [camera[12], camera[13], camera[14]];
116
			var up = [0, 1, 0];
117
			camera = mat4.lookAt([], camera_pos, [0, 0, 0], up);
118
			var view = mat4.invert([], camera);
119
109
			var aspect = trixl.window.w / trixl.window.h;
120
			var aspect = trixl.window.w / trixl.window.h;
110
			var transform = function(pos) {
121
			var transform = function(pos) {
111
				return mat4.multiplyMany(
122
				return mat4.multiplyMany(
115
					//matrix.rotateY(angle.y / 10),
126
					//matrix.rotateY(angle.y / 10),
116
					matrix.rotateX(angle.x / 10),
127
					matrix.rotateX(angle.x / 10),
117
					matrix.translate(pos[0] + offset.x, pos[1] + offset.y, pos[2] + offset.z),
128
					matrix.translate(pos[0] + offset.x, pos[1] + offset.y, pos[2] + offset.z),
129
					view,
118
					matrix.persective(Math.PI / 3, aspect)
130
					matrix.persective(Math.PI / 3, aspect)
119
				);
131
				);
120
			}
132
			}