Fausse 3d: tunnel avec fog par script (parametrable)

Contenu du snippet

j'ai matté dans le dernier code(r) (11/2003) une source d'un tunnel en openGL, avec fog, texture, etc...
le texturing via le script est possible (en trichant), mais vu le tps de calcul, c'est pas la peine d'y penser ;)

bref, voici un tunnel en 3d, qui bouge a la maniere de celui de code(r) mais celui ci est en flashMX, pas en openGL, mais il gere quand meme le brouillard ;)

ce sont des calculs 2d, uniquement de l'illusion...

si je trouve le tps et la motivation, je ferai le meme avec des calculs 3d, et rotations, via les matrices...

Source / Exemple :


function createTunnel(nPoint, nCircle, space, power, fogDensity, interval) {
	var center = new Object({x:300, y:300});
	var pi = Math.PI;
	var aCircle = new Array();
	var aCoord = new Array();
	var move_var = 0;
	_root.space = space;
	for (var k = 0; k<=nPoint; k++) {
		aCoord.push(new Object({x:Math.cos(2*k*pi/nPoint), y:Math.sin(2*k*pi/nPoint)}));
	}
	setInterval(function () {
		with (_root) {
			move_var++;
			clear();
			for (j=0; j<=nCircle; j++) {
				lineStyle(-1, 0x000000, (100/nCircle*j)-fogDensity);
				moveTo(center.x+Math.cos(((move_var+j)/power))*space+aCoord[0].x*j*space, center.y+Math.sin(((move_var+j)/power))*space+aCoord[0].y*j*space);
				for (var k = 0; k<=nPoint; k++) {
					lineTo(center.x+Math.cos(((move_var+j)/power))*space+aCoord[k].x*j*space, center.y+Math.sin(((move_var+j)/power))*space+aCoord[k].y*j*space);
				}
			}
			for (j=2; j<=nCircle; j++) {
				lineStyle(-1, 0x000000, (100/nCircle*(j-1))-fogDensity);
				for (var l = 1; l<=nPoint; l++) {
					moveTo(center.x+Math.cos(((move_var+j-1)/power))*space+aCoord[l].x*(j-1)*space, center.y+Math.sin(((move_var+j-1)/power))*space+aCoord[l].y*(j-1)*space);
					lineTo(center.x+Math.cos(((move_var+j)/power))*space+aCoord[l].x*j*space, center.y+Math.sin(((move_var+j)/power))*space+aCoord[l].y*j*space);
				}
			}
		}
	}, interval);
}

// application :
createTunnel(24, 12, 25, 3.5, 0, 50);

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.