[as 2.0] moteur 3d sans matrices

Soyez le premier à donner votre avis sur cette source.

Vue 7 164 fois - Téléchargée 1 079 fois

Description

voici un projet en dev, mais qui est deja utilisable.
il utilise un systeme de class.

il permet de charger des fichier 3d extene au format xml ou lineaire (regardez les fichier .xml et .fobj)

le but final de ce projet est de pouvoir gerer et charger des fichier 3d afin de s'en servir dans des jeux par exemple.

la gestion des collision est a l'etude,
et une class de generation d'objets à la volé est en cours de devellopement (voir meshCreator.as, code instable).

si vous voulez participer au projet, en ecrivant de nouvelles class par exemple, envoyez moi vos fichier, et j'updaterai ;)

Source / Exemple :


var file:String = "pyramide.fobj";
var origine:Object;
var cam:Object;
var viewport:Number;
var meshObject:Array;
var xmlObject:XML = new XML();
var cam_:Object = {x:0, y:0, z:98, step:0.2};

var meshBuilder = new mesh();
var drawMethod = new draw(_root);

origine = {x:300, y:200};
viewport = 52;
xmlObject.ignoreWhite = true;
xmlObject.load(file);
xmlObject.onLoad = function(flag) {
	if (flag) {
		// si vous chargez au format xml:
		//_root.meshObject = meshBuilder.loadMeshFromXML(this);
		_root.meshObject = _root.meshBuilder.loadMeshFromDataFile(this);
		_root.drawMethod.setFill(40, 0x336699);
		_root.drawMethod.setLine(100, 0x000000, -1);
		setInterval(function () {
			if (Key.isDown(Key.LEFT)) {
				_root.cam_.x -= _root.cam_.step;
			}
			if (Key.isDown(Key.RIGHT)) {
				_root.cam_.x += _root.cam_.step;
			}
			if (Key.isDown(Key.UP)) {
				_root.cam_.y -= _root.cam_.step;
			}
			if (Key.isDown(Key.DOWN)) {
				_root.cam_.y += _root.cam_.step;
			}
			if (Key.isDown(Key.PGUP)) {
				_root.cam_.z -= _root.cam_.step;
			}
			if (Key.isDown(Key.PGDN)) {
				_root.cam_.z += _root.cam_.step;
			}
			_root.cam = {x:_root.cam_.x, y:_root.cam_.y, z:_root.cam_.z};
			_root.camxtxt.text = _root.cam_.x+" ::"+_root.cam_.y+" ::"+_root.cam_.z;
			_root.drawMethod.flush();
			_root.drawMethod.render(_root.meshObject, _root.viewport, _root.origine, _root.cam);
		}, 50);
	}
};

Conclusion :


j'ecrit actuellement un plugin d'export pour wings3d (www.wings3d.com).

si vous arrivez a ecrire de nouveaux objets 3d, envoyez les moi, car les faire à la main, c pas evident, et mon plugin d'export pour swift3d est pas pret d'etre terminé...

Codes Sources

A voir également

Ajouter un commentaire Commentaire
Messages postés
7
Date d'inscription
dimanche 8 juin 2003
Statut
Membre
Dernière intervention
3 décembre 2003

très interressant ! Ca ouvre pas mal de possibilité. Je modélise sous wings3d, ca promet d'être terrible. Je veux bien t'aider dans la mesure de mes capacités. D'autant que je fais actuellement un jeu d'aventure où j'aimerais faire une phase d'action où on commande un aigle(2d) qui se promene sur un globe (3d).

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.