« 1 2 (3) 4 5 6 ... 21 »


Re: Portal BGE
OverdOzed
Inscrit:
05/11/2008 19:40
Post(s): 511
Mince ! j'aurais due poster mon message hier, maintenant cray à donner le lien que je voulais donner... enfin bon

En tout cas, super boulot !

J'avais fais quelques petit tests sur un système de portails moi aussi mais j'ai complètement oublier de sauvegarder mon fichier (oui, j'ai honte) et mon ordi m'a fait un joli écran bleu dans la soiré (ça arrive souvent, c'est à cause d'itune et de chrome, il font des truc bizarres quand ils sont lancer en même temps)... une après-midi de travaille perdu.

Au passage, si ça te tente, tu pourrais l’intégrer à mon template quand tu l'auras finis ( et quand je l'aurais finis moi aussi parce que j'ai participé au blocus de mon lycée depuis une semaine pendant laquel je n'ai pas fait grand chose dessus).

J'ai pas encore tester ta nouvelle version (il faut que je repasse sous linux pour pouvoir utiliser le bge de la 2.5 et là j'ai la flemme) mais pour les portails qui rentre à moitiés dans le mur ou dans le sol, tu peux faire on sorte de le placer automatiquement au-dessus ou à coté de l'endroit toucher pour qu'il ne rentre plus dans un mur ou dans le sol (en fonction de la face touché).
Et pour "le cube" nécessaire, en fait c'est une techique beaucoup plus simple mais assez longue à mettre en place.
Je pourrais pas t'expliquer tout en détail mais en gros il faut faire deux meshes pour le décor, un pour la physique, qui doit être très simple, et un pour l'affichage qui peut être plus complexe (au niveau des faces) après, il te suffit de modifier le mesh physique pour obtenir ton trou à l'arrière du portail.

@+

Contribution le : 21/10/2010 23:25
Créer un fichier PDF de la contribution Imprimer


Re: Portal BGE
Fou Furieux du Clan
Inscrit:
02/11/2008 20:26
Post(s): 238
Parfois le portail bleu disparait ! C'est une erreur ou c'est voulu ?

Citation :
le produit vectoriel

Je l'avais complètement oublié celui-là !

Bon, pour le système de rotation, je suis resté avec les complexes pour éviter des sinus et cosinus dans tout les sens.

Voilà ce que j'ai à te proposer, tu n'aura qu'à greffer ce code où tu voudras, mais fais un ou deux tests car doué comme je suis il y a peut-être des erreurs :
from bge import logic as gl

#on aura besoin de phase pour le calcul d'angle d'un complexe, du sinus et cosinus
from cmath import phase
from math import cos, sin

#on defini i
i = complex(0, 1)

x, y, z = 0, 1, 2

rot = Joueur.orientation

#ici tu mets les coordonnees de la normale du portail "d'envoi"
nor_1 = ...
#la le portail de "reception"
nor_2 = ...

#calcul des modules des projections des normales pour ajuster la longueur des projections
mod_1 = (nor_1[x]**2 + nor_1[y]**2)**0.5
mod_2 = (nor_2[x]**2 + nor_2[y]**2)**0.5

#phi est l'angle entre le joueur et la normale du premier portail sur le plan horizontal
phi = phase(complex(-rot[y][x], -rot[y][y])) - phase(complex(nor_1[x]/mod_1, nor_1[y]/mod_1))

#calcul de l'angle entre la normale du 2eme portail et le joueur
angle =  phase(complex(nor_2[x]/mod_2, nor_2[y]/mod_2)) -phi

axey = complex(cos(angle), sin(angle))
axex = -i*axey

Joueur.orientation = [[axex.real, axex.imag, 0.], [axey.real, axey.imag, 0.], [0., 0., 1.]]


Voilà pour l'instant. Si ça ne marche pas fait moi signe et je trouverais un moment où j'aurais le temps d'y réfléchir plus profondément

@+

EDIT : correction des erreurs du script

Contribution le : 21/10/2010 23:36
_________________
Guillaume
Créer un fichier PDF de la contribution Imprimer


Re: Portal BGE
OverdOzed
Inscrit:
24/07/2008 01:45
De Paris
Post(s): 3447
Citation :
Au passage, si ça te tente, tu pourrais l’intégrer à mon template quand tu l'auras finis.

Pourquoi pas.

Citation :
( et quand je l'aurais finis moi aussi parce que j'ai participé au blocus de mon lycée depuis une semaine pendant laquel je n'ai pas fait grand chose dessus)

Ces blocus sont ridicules...Enfin ce n'est pas le sujet de la discussion...



Gui36fr, merci pour ce code, il fonctionne (sauf que le portail est à plat, mais je compte y remédier un jour).
Par contre, je comprends vraiment pas.
phase(), complex()...i
Parce que du coup, il faudrait appliquer je pense une méthode similaire pour la transmission de la force.
Mais dans le blend que Cray a linké, aucune des ces instructions mathématiques complexes (c'est le cas de le dire ) ne sont abordées...Pourtant, ça marche du tonnerre !

edit : une màj avec le système de gui36fr : http://www.mediafire.com/?daaly3ldy7ykrl5

Contribution le : 22/10/2010 19:08
_________________
Tuto MaPZone
Créer un fichier PDF de la contribution Imprimer


Re: Portal BGE
Fou Furieux du Clan
Inscrit:
02/11/2008 20:26
Post(s): 238
Citation :
Gui36fr, merci pour ce code, il fonctionne (sauf que le portail est à plat, mais je compte y remédier un jour).

C'est bien ce que j'avais prédit ! Pour remédier au problème, il faut que tu mettes la réorientation dans ce bloc if :
if nor_1[2] != 1. and nor_1[2] != -1. and nor_2[2] != 1. and nor_2[2] != -1.:

Mais pour éviter les erreurs d'opérations dues aux calculs de flottants, prend plutôt ceci :
if (-0.9 < nor_1[2] < 0.9) and (-0.9 < nor_2[2] <0.9):


Tu fera attention, il manque une lettre ligne 69 : c'est axey.imag et pas xey.imag (désolé, c'est de ma faute...).

Citation :
Par contre, je comprends vraiment pas.
phase(), complex()...i

Tu es en terminale S ? (c'est juste pour savoir s'il me faut t'expliquer ou laisser tes profs te l'expliquer... fainéant je suis ).

Citation :
Parce que du coup, il faudrait appliquer je pense une méthode similaire pour la transmission de la force.

C'est exactement la même chose (sans les erreurs), sauf quand l'un des portails est à l'horizontale (là faut copier la force vue que la rotation ne bouge pas).

Ça donne ceci :

EDIT : j'ai dis une belle ânerie il y a des modifs à faire, j'étudie ça et je le posterais plus tard

Ya plus qu'à tester

Contribution le : 22/10/2010 19:43
_________________
Guillaume
Créer un fichier PDF de la contribution Imprimer


Re: Portal BGE
OverdOzed
Inscrit:
24/07/2008 01:45
De Paris
Post(s): 3447
Citation :
Tu fera attention, il manque une lettre ligne 69 : c'est axey.imag et pas xey.imag (désolé, c'est de ma faute...).

Oui, oui, j'ai vu, puis un peu avant aussi, tu es pas d'accord avec toi même...Tu mets un coup nor_1, un coup nor_p1
Enfin si tu as regardé mon blend, tu as dû constater que j'ai corrigé.

Citation :
Tu es en terminale S ?

Oui, je sais que ça viendra cette année, mais j'ai pas envie d'attendre. Je sais pas pourquoi on voit pas ça plutôt...Les STI voient les complexes en 1ère, les ES voient les matrices en 1ère, mais nous, S, on a encore vu ni l'un ni l'autre.
Enfin bon. J'ai regardé ce qu'est la transposition, et c'est simplissime. C'est plus l'inversion que j'ai pas compris mais vu que diviser par un nombre revient à multiplier par son inverse, je suppose que ça marche de la même façon pour les matrices : *invert(mat) est l'opération inverse de *mat.
D'ailleurs, c'est ce que j'utilise pour mes rotations (pour les objets, pas pour le joueur) et ça marche.

J'ai tenté de convertir le script du blend de Warwickallison pour la 2.5, mais ça fait des trucs bizarres.
Le script :
from bge import logic as gl
import VideoTexture
from mathutils import *

cont = gl.getCurrentController()
scene = gl.getCurrentScene()
viewer = scene.active_camera
viewpos = viewer.position
r180 = Matrix.Rotation(180, 3, 'Y')
unmir = Matrix.Scale(-1, 3, Vector([1,0,0]))
for pss in [1,2,3]:
	n = 0
	for s in cont.sensors:
		portal = s.owner
		if 'otherportal' in portal:
			otherportal = scene.objects[portal['otherportal']]
		else:
			otherportal = cont.sensors[len(cont.sensors)-1-n].owner
		n+=1
		cam = scene.objects[portal.name+"cam"]
		m1=Matrix(*portal.orientation)
		m1.transpose()
		m1.invert()
		m2=Matrix(*otherportal.orientation)
		m2.transpose()
		
		if pss == 1:
			# Update video textures
			offset = Vector([0,0,0])
			if 'offset' in cam:
				offset = cam['offset']
			cam.position = Vector(otherportal.position) + \
				(Vector(viewpos) - Vector(portal.position))*m1*unmir*m2 + offset
			if 'video' in cam:
				cam['video'].refresh(False)
			else:
				matID=0
				video = VideoTexture.Texture(portal, matID)
				video.source = VideoTexture.ImageMirror(scene,cam,otherportal,matID)
				sz = 256
				if 'videosize' in cam:
					sz = cam['videosize']
				video.source.capsize = [sz,sz]
				video.source.background = [0,0,0,255] # black
				cam['video'] = video
		elif pss == 2:
			# Remove old fake objects
			if 'lasthits' in portal:
				for ob in portal['lasthits']:
					if ob not in s.hitObjectList:
						if 'portalcopy' in ob and ob['portalcopy'] != None:
							ob['portalcopy'].endObject()
							ob['portalcopy'] = None

		else:
			# Create/move fake objects
			list = []
			for ob in s.hitObjectList:
				if 'fake' not in ob:
					print(ob,"hit",portal)
					if 'portalcopy' in ob and ob['portalcopy'] != None:
						copy = ob['portalcopy']
					else:
						copy = scene.addObject(ob,ob,0)
						copy['fake'] = 1
						ob['portalcopy'] = copy
					opos = (Vector(ob.position) - Vector(portal.position))*m1
					copy.position = Vector(otherportal.position) + opos*r180*m2
					copy.localScale = ob.localScale
					ori = Matrix(*ob.orientation)
					ori.transpose()
					ori = ori*m1*r180*m2
					ori.transpose()
					copy.orientation = ori
					if opos[2] < 0: # Portal mesh is Z plane
						# Teleport
						ob.position,copy.position = copy.position,ob.position
						ob.orientation,copy.orientation = copy.orientation,ob.orientation
						ob.setLinearVelocity(Vector(ob.getLinearVelocity())*m1*r180*m2)
						ob.setAngularVelocity(Vector(ob.getAngularVelocity())*m1*r180*m2)
					list += [ob]
			portal['lasthits'] = list
		


Je pensais au début que le problème venait du fait que la matrice de rotation en 2.5 est la transposée de la matrice de rotation en 2.49. J'ai donc retiré toutes les lignes qui transposent les matrices (4 lignes si je n'en ai pas loupé). Mais il s'avère que ça bug toujours.

Edit : J'ai pas trop compris l'intérêt de la rotation à 180° non plus...Toujours est-il qu'il faut passer cette valeur en radians pour que ça marche...

Contribution le : 22/10/2010 20:22
_________________
Tuto MaPZone
Créer un fichier PDF de la contribution Imprimer


Re: Portal BGE
Fou Furieux du Clan
Inscrit:
02/11/2008 20:26
Post(s): 238
Citation :
Oui, oui, j'ai vu, puis un peu avant aussi, tu es pas d'accord avec toi même...Tu mets un coup nor_1, un coup nor_p1

Ah oui mais tu regardera la ligne 69 il te manque encore le a de axey.

Citation :
Oui, je sais que ça viendra cette année, mais j'ai pas envie d'attendre.

Je t'aime bien, toi

Citation :
C'est plus l'inversion que j'ai pas compris mais vu que diviser par un nombre revient à multiplier par son inverse, je suppose que ça marche de la même façon pour les matrices

L'inversion (-rot si j'ai bien compris ce que tu me demandes) c'est parce que la vue du joueur est inversé d'un portail à l'autre (s'il rentre en "marche arrière", quand il ne regarde pas le portail il en ressort en le regardant, pareil dans l'autre sens, donc il faut inverser). Et le angle = ... - phi c'est pour la symétrie par rapport à la normale.

La division par mod (le module du projeté (sa longueur, si tu préfères)) c'est pour agrandir le projeté si son module n'est pas égal à 1 (produit en croix) :
(avec x' et y' les coordonnées du projeté (donc z'=0) et x, y et z les coordonnées de la normale)
x' = x*module(x, y, z)/module(x, y) = x*1/module(x, y) = x/module(x, y)
y' = y*module(x, y, z)/module(x, y) = y/module(x, y)

On a donc:
module(x', y')² = (x')² + (y')² = x²/(x² + y²) + y²/(x² + y²) = (x² + y²)/(x² + y²) = 1

Or la racine carré de 1 est 1 : le projeté est correcte


Pour l'orientation de la force, tu veux garder l'orientation entière ou seulement sur un plan horizontal ?

EDIT :
Finalement, j'ai conservé entièrement la force, mais si tu ne la veux qu'à l'horizontal, tu remplaces force[z] par 0. à la fin :
from bge import logic as gl

#on aura besoin de phase pour le calcul d'angle d'un complexe, du sinus et cosinus
from cmath import phase
from math import cos, sin

#on defini i
i = complex(0, 1)

x, y, z = 0, 1, 2


force = ...
mod_force = (force[x]**2 + force[y]**2)**0.5

#ici tu mets les coordonnees de la normale du portail "d'envoi"
nor_1 = ...
#la le portail de "reception"
nor_2 = ...

if (-0.9 < nor_1[2] < 0.9) and (-0.9 < nor_2[2] <0.9):
	#calcul des modules des projections des normales pour ajuster la longueur des projections
	mod_1 = (nor_1[x]**2 + nor_1[y]**2)**0.5
	mod_2 = (nor_2[x]**2 + nor_2[y]**2)**0.5
	
	#phi est l'angle entre la "force" et la normale du premier portail sur le plan horizontal
	phi = phase(complex(-force[x]/mod_force, -force[y]/mod_force)) - phase(complex(nor_1[x]/mod_1, nor_1[y]/mod_1))
	
	#calcul de l'angle entre la normale du 2eme portail et la "force"
	angle =  phase(complex(nor_2[x]/mod_2, nor_2[y]/mod_2)) -phi
	
	force = [cos(angle)*mod_force, sin(angle)*mod_force, force[z]]

Gare aux erreurs...

Bon blend

EDIT : correction des erreurs du script

Contribution le : 22/10/2010 21:32
_________________
Guillaume
Créer un fichier PDF de la contribution Imprimer


Re: Portal BGE
OverdOzed
Inscrit:
24/07/2008 01:45
De Paris
Post(s): 3447
Citation :
L'inversion (-rot si j'ai bien compris ce que tu me demandes) c'est parce que la vue du joueur est inversé d'un portail à l'autre (s'il rentre en "marche arrière", quand il ne regarde pas le portail il en ressort en le regardant, pareil dans l'autre sens, donc il faut inverser). Et le angle = ... - phi c'est pour la symétrie par rapport à la normale.

Heu je pensais plutôt à rot.invert(), mais si tu dis que -rot fait la même chose, ça sera plus simple.
edit : Bah non, ça marche pas, "-rot"...Faut faire rot.invert()

Citation :
La division par mod (le module du projeté (sa longueur, si tu préfères)) c'est pour agrandir le projeté si son module n'est pas égal à 1 (produit en croix) :
(avec x' et y' les coordonnées du projeté (donc z'=0) et x, y et z les coordonnées de la normale)
x' = x*module(x, y, z)/module(x, y) = x*1/module(x, y) = x/module(x, y)
y' = y*module(x, y, z)/module(x, y) = y/module(x, y)

On a donc:
module(x', y')² = (x')² + (y')² = x²/(x² + y²) + y²/(x² + y²) = (x² + y²)/(x² + y²) = 1

Or la racine carré de 1 est 1 : le projeté est correcte

Ou là !
A froid, je te suis pas, mais j'essayerais de faire un dessin.

Et merci encore pour le code, je vais tester ça. Mais pour les objets en général, n'y a-t-il pas un moyen de conserver la force sans tous ces calculs ? Parce que Warwick ne se prend pas la tête avec tout ça...

edit : J'ai testé, et il y a un problème : le cos de cmath donne une complexe, et une force doit être donnée par des float...Et float() ne fonctionne pas pour la conversion. Que faire ?

Contribution le : 23/10/2010 11:30
_________________
Tuto MaPZone
Créer un fichier PDF de la contribution Imprimer


Re: Portal BGE
Fou Furieux du Clan
Inscrit:
02/11/2008 20:26
Post(s): 238
Bonjour,

Citation :
edit : J'ai testé, et il y a un problème : le cos de cmath donne une complexe, et une force doit être donnée par des float...Et float() ne fonctionne pas pour la conversion. Que faire ?

Ah bah oui, c'est logique... j'ai utilisé le cos et le sin de cmath, donc ça retourne des complexes.

Change la ligne
from cmath import phase, cos, sin
par
from cmath import phase
from math import cos, sin


Citation :
edit : Bah non, ça marche pas, "-rot"...Faut faire rot.invert()

??? Bizarre, ça devrait marcher pourtant. Mais quand je parlais de faire "-rot", c'était seulement pour inverser les coordonnées or elles y sont déjà dans le code que je t'ai donné, tu n'as donc rien à changer

En réalité ce que j'ai fait dans ces lignes c'est (en gros) : rot[y][x] = -rot[y][x] et rot[y][y] = -rot[y][y] mais ça ce fait rapidement dans ma ligne où je calcul phi. Tu n'as rien à toucher ni avant ni après, sauf erreur de ma part.

Quand à rot.invert() ça retourne toute la matrice (donc ça inverse tout), mais je ne le fait pas au cas où il y aurait besoin de garder la matrice originale plus loin dans le code ; je préfère inverser mes nombres dans mes calculs

Citation :
Ou là

Euh... développe tous mes calculs et tu comprendras. Le module d'un vecteur est sa longueur, et la longueur d'un vecteur (x, y, z) est la racine carré de x²+y²+z². Je suis un peu fainéant, donc la moitié (parfois les trois quarts) des calculs se font dans ma tête et pas sur ma feuille (ou sur mon clavier...)

Citation :
Mais pour les objets en général, n'y a-t-il pas un moyen de conserver la force sans tous ces calculs ? Parce que Warwick ne se prend pas la tête avec tout ça...

Warwick calcul tout avec des matrices 3x3 (donc 9 données qui changent d'un coup à chaque calcul), moi je travaille avec des complexes (2 données) et mon esprit plus ou moins logique : quel est la plus simple des méthodes ? Et bien avec un ordi tu peux facilement travailler avec des matrice, à condition de ne pas te planter car pour chercher une erreur, c'est parfois long... Sur une feuille de papier (je passe toujours par ma feuille et mon crayon avant de faire un script), les complexes sont un outil qui reste assez simple, et on peut faire un dessin. Un inconvénient c'est qu'on ne peut pas calculer directement des positions en 3D avec les complexes, mais là on travaille sur un plan. Pour moi le plus simple dans ce cas c'est les complexes, mais rien ne t'interdit de travailler avec les matrices
De plus, Warwick prend plus de 20 lignes pour son programme, si tu compactes le mien (càd sans les commentaires et les sauts de lignes) en a un vingtaine à tout casser, en utilisant 4 fonctions qui restent assez simples (création de complexe (pas vraiment une fonction de calcul), calcul d'angle (phase()), cosinus et sinus). À toi de juger, tu es maître de ton projet

Contribution le : 23/10/2010 12:32
_________________
Guillaume
Créer un fichier PDF de la contribution Imprimer


Re: Portal BGE
OverdOzed
Inscrit:
24/07/2008 01:45
De Paris
Post(s): 3447
Ok, je verrais tout ça dans une semaine, parce que là je prends l'avion dans quelques heures.
Je me demande si on ne peut pas utiliser des méthodes de l'objet comme getVectTo(other) ou alignAxisToVect(vect, axis=2, factor=1.0) pour obtenir le même résultat...

Contribution le : 23/10/2010 13:28
_________________
Tuto MaPZone
Créer un fichier PDF de la contribution Imprimer


Re: Portal BGE
Fou Furieux du Clan
Inscrit:
02/11/2008 20:26
Post(s): 238
getVectTo(other) sert à obtenir le vecteur entre les centres de 2 objets A et B, c'est à dire le vecteur AB. Je n'en vois pas l'utilité dans ce cas (ou alors tell me why).

alignAxisToVect(vect, axis=2, factor=1.0) sert à orienter l'un des axes d'orientation d'un objet par rapport à un vecteur. On pourrait éventuellement l'utiliser si la réorientation du perso s'effectuait sur 3 dimensions, pour des raisons de simplicités. Mais il n'y en a pas forcément besoin sur 2 dimensions : ton perso n'a qu'un axe de rotation (z), les autres axes restent sur un plan horizontal.
Effectivement, on peut l'utiliser, mais il faut créer le vecteur, et je pense qu'au final à une ou deux lignes près le script est le même.

EDIT : Bon voyage

Contribution le : 23/10/2010 14:30
_________________
Guillaume
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant
« 1 2 (3) 4 5 6 ... 21 »




Enregistrer votre réponse
Compte*
Nom   Mot de passe   Authentification
Message:*



[Recherche avancée]



Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
Le coin des geeks information sur taille prise en memoire par le projet pour choix GPU    [1][2] 19 854 Aujourd'hui 09:07:42
smogBlender 
Questions & Réponses Rigging mécanique 1 34 Aujourd'hui 02:55:14
WinZs 
Questions & Réponses Blender 2.8 dupliquer un cylindre sans deformation le long d une courbe    [1][2] 19 134 Aujourd'hui 00:52:44
Rimpotche 
Questions & Réponses Faire un bonhomme mou 1 51 Hier 19:17:57
Bibi09 
The Blender Clan 'tchat Ré-ouverture de mon site 0 30 Hier 18:51:46
thierry_st_malo 
Python & Plugins [WIP] Créer son propre launcher de jeux. 1 84 Hier 18:08:00
Redstar 
Questions & Réponses Combinaison de modèles 3d 1 42 Hier 13:27:47
Rimpotche 
The Blender Clan 'tchat Presentation 1 49 08/12 23:21:59
G-tout-court 
Questions & Réponses modélisation 2.81 1 72 08/12 21:31:01
Gilead_Maerlyn 
[WIP] et travaux terminés [WIP] Bataille Navale // Animation 3d    [1][2][3][4] 33 3414 08/12 13:06:42
ju 
Questions & Réponses découpage du maillage pendant l'animation 1 79 07/12 18:26:01
moonboots 
[WIP] et travaux terminés [WIP] Goatster 6 366 07/12 17:02:39
Mercer 
Questions & Réponses Importer des objets de Maya dans Blender 2 119 07/12 10:05:44
lucky 
Questions & Réponses Enlever les reflets des arbres dans le shader glass? 3 131 06/12 20:48:38
flahaut 
Questions & Réponses Comment snapper un vertex sur un edge selon un axe donné 7 196 06/12 16:55:39
Bibi09 
Questions & Réponses Pixel Blanc sur rendu blender 2.8 5 120 06/12 15:31:10
fenixdragon 
Moteur de jeu GameBlender et alternatives [non résolu] Modifier un visage - ajouter machoire    [1][2] 12 528 06/12 15:09:54
Redstar 
Questions & Réponses Mirror qui fonctionne mal en mode Edit (mais marche en mode Sculpt) 2 85 06/12 10:16:05
moonboots 
Questions & Réponses Blender vs Sketchup et Fusion 360 7 391 05/12 21:50:04
Anarchy62 
Questions & Réponses Importer des objets de Maya dans Blender 0 71 05/12 16:16:24
Melodicpinpon 

Qui est en ligne
88 utilisateur(s) en ligne (dont 46 sur Forums)

Membre(s): 0
Invité(s): 88


plus...
Nouveaux membres
GeP 9/12/2019
thibaultsa31 9/12/2019
leo23 7/12/2019
cherdothibaut 2/12/2019
pato90v8 2/12/2019
LFR54 2/12/2019
Lawyer 2/12/2019
cheheb 1/12/2019
Gab30 28/11/2019
smogBlender 27/11/2019
Dernier Ajout
2019-11-05 01.JPG

Evènements à venir
Dec 29
Anniversaire d'ebrain
Jan 11
BUG de Lyon
Fev 15
Anniversaire de Dany
plus 277 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2019 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445