Formation référencement lyon
BlogBang

jeudi 30 juillet 2009

Technologie > La réalité augmentée l'avenir des présentations

La réalité augmentée est une façon différente d'agrémenter une vidéo, le principe de ce systeme est de reconnaitre un motif en temps réel sur une vidéo et de position des objets 3D selon l'orientation et la position de ce symbol dans l'espace.


Voici quelques exemples bluffant de réalité augmentée :


Les vidéos


La présentation Alstom à l'occasion de la conférence "What's Hot" du 17/06/2009



La réalité augmentée pour un catalogue allemand de Mini Cooper



Les expériences


Testez par vous même certaines applications en flash


Matériel requis :


GE : Ecoimagination


Imprimez en premier le tag spécifique : http://ge.ecomagination.com/smartgrid/ar/printme.pdf

Rendez vous sur les pages suivantes :


Mix audio avec les chewing gum 5 de la marque Wrigley


Imprimez en premier le tag spécifique : http://www.5gum.fr/data/pdf/5gumsymbols.pdf

Rendez vous sur la page suivante :


Pour les développeurs


Il existe différent projets open source de réalité augmentée, comme par exemple le projet FLARToolKit qui vous permet de créer vos propres marqueurs et d'animer comme vous le souhaitez vos modèles 3D dans un environnement Flash/AS 3


Exmeple de l'utilisation de FLARToolKit


Tout d'abord imprimez ce marqueur en forme de cube à fabriquer : http://flash.tarotaro.org/flaris/cube.pdf


Ensuite Ouvrer cette page realite_augmentee.swf


Vous pouvez maintenant vous amuser avec le personnage japonais Hachune Miku


Source : http://flash.tarotaro.org/blog/2009/04/06/cube-type-marker-in-flar/#more-17

Libellés : , , ,


PHP > Mes fonctions personnalisées préférées

Voici la liste des fonctions PHP que j'utilise régulièrement dans mes scripts PHP


Filtrage des données


Supprimer les accents



function supprimerAccents($texte) {
$caracteresAvecAccents= "áéíóúýÁÉÍÓÚÝàèìòùÀÈÌÒÙäëïöüÿÄËÏÖÜâêîôûÂÊÎÔÛåÅøØßçÇãñõÃÑÕ";
$caracteresSansAccents= "aeiouyAEIOUYaeiouAEIOUaeiouyAEIOUaeiouAEIOUaAoOscCanoANO";
return trim(strtr($texte, $caracteresAvecAccents, $caracteresSansAccents));
}

Confirmation d'origine des données d'un formulaire


Afin de garantir la sécurité de vos formulaires, il est indispensable de valider l'origine des données afin d'être sur quelles proviennent bien de votre formulaire.

Pour cela nous allons générer un TOKEN unique qui sera envoyé avec les données du formulaire puis vérifié avant le traitement des données.



<PHP?
// démarrage de la session
session_start();
// génération du token
$token = md5(uniqid(rand(), true));
// stockage du token dans la session
$_SESSION['token'] = $token;
?>








Maintenant nous allons mettre en place la sécurité sur le script qui traitera les données.



<?PHP
// démarrage de la session
session_start();
// vérification de la différence du token stocké et envoyé
if($_POST['token']!=$_SESSION['token'])
// arrêt de l'exécution du script et affichage d'un message d'erreur
die('Erreur : transmission des données incorrecte !');
// placer ici la suite du traitement
?>

Il vous suffit de placer ce code en début de fichier pour éviter les envois de données autrement que par votre formulaire


Nettoyage de sécurité des chaines de caractères


Cette fonction permet de supprimer les données non souhaitées d'une chaine de caractère



function securite($chaine)
{
return stripslashes(htmlentities(addcslashes(strip_tags(trim($chaine)))));
}

Si vous souhaitez filtrer toutes les données envoyées avec votre formulaire, vous pouvez combiner le code précédent avec celui qui suit



foreach($_POST as $cle=>$valeur)
$$cle=securite($valeur);

Ce code a pour effet de créer une variable php par champs HTML envoyé, par exemple si vous avez créé un champ de nom "toto" (name='toto') vous aurez une variable $toto qui contiendra les données du champ toto filtrées avec notre fonction.

Libellés : , ,


mercredi 29 juillet 2009

Bidoullage > Mettre ou changer l'icone d'une clé USB Lacie

Je viens tout juste de faire l'acquisition d'une clé USB Lacie de 4 Go, et lorsque je branche ma clé une icone apparait dans mon poste de travail avec une belle icône en forme de clé.


La première chose que j'ai fait a été de formater ma clé, et là : horreur l'icône n'apparaissait plus.


En fait tout s'explique, car l'image ainsi que le fichier permettant de faire apparaitre l'icône son contenu dans les fichiers accessibles de la clé et donc peuvent être supprimé facilement.


Si comme moi vous souhaitez remettre en place l'icône, je vais vous expliquer la marche à suivre.


Etape 1


Trouver l'icone que vous souhaitez faire apparaitre dans le poste de travail.


/!\ cette icone doit être un fichier avec une extension .ico

Voici un exemple de fichier que vous pouvez utiliser :
LacieUsbKeyIcon.ico


Ensuite placez l'icône à la racine de votre clé usb


Etape 2


Nous allons maintenant modifier ou créer le fichier autorun.inf à la racine de la clé usb.


Pour cela il vous suffit d'éditer le fichier autorun.inf avec le bloc note et d'y placer les lignes suivantes :



[autorun]
icon=LacieUsbKeyIcon.ico

Enregistrez le fichier puis éjectez la clé, si tout c'est bien passé, lorsque vous reconnecterez votre clé l'icone de votre choix apparaitra dans le poste de travail.




/!\Cette méthode fonctionne pour Windows et n'a pas été testé sous Linux ni sous Mac OS

Libellés : , , , ,


mercredi 22 juillet 2009

MySQL > Les requêtes MySQL que je trouve utiles

Lorsque vous développez une application utilisant une base de données, on se rend très rapidement compte que les SQL tient une place importante dans notre code.


Vous avez ainsi un grand nombre de requêtes SQL qui sont exécutées pour des opérations courantes et cela sans vous soucier du nombre de demandes que vous envoyez au serveur.


Il est simple de faire faire plusieurs actions au SGBDR en une seule requête, grâce à mon expérience je vais pouvoir partager avec vous quelques unes de ces requêtes SQL "magiques".


Création de Table


La requete de création de table en SQL est CREATE TABLE


Exemple :


CREATE TABLE erreurs404 (
id tinyint(4) unsigned NOT NULL auto_increment,
typeErreur varchar(80) NOT NULL,
origine varchar(255),
description varchar(255),
PRIMARY KEY (id)
)



A partir d'une requete SQL


Dans certains cas vous pouvez avoir besoin de combiner les résultats de plusieurs requêtes SQL afin de les traiter ultérieurement et de façon régulière.

Pour cela vous pouvez créer et éxécuter plusieurs requêtes que vous combinerez avec PHP ou alors créer une table contenant le résultat combiné de ces requêtes.



CREATE TABLE erreurs404SurPages SELECT * FROM erreurs404 INNER JOIN erreursPages ON erreurs404.id=erreursPages.code

La table ainsi créée contiendra autant de champs que la requête en retourne.


Insertion et Mise à jour de tabla


Insertion sinon Mise à jour


Dans le cadre de statistiques, par exemple, vous pouvez avoir besoin d'insérer des informations dans la Base de données ou si celles-ci existe déjà, vous devez mettre à jour certains champs.


Dans cet exemple je vais vous montrer comment passer des 2 à 3 requetes SQL à une seule requete.


Creation de la table "visiteurs" :



CREATE TABLE IF NOT EXISTS `visiteurs` (
`addrIP` varchar(20) NOT NULL,
`jourVisite` date NOT NULL,
`nombreVisite` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`addrIP`,`jourVisite`)
)

Chaque jour nous enregistrons le nombre de visites d'un internautes, l'internaute est identifié grâce à son adresse IP


A chaque visite, nous vérifions si le couple adresse IP/Jour existe dans la table, si non on l'ajoute autrement on met à jour le nombre de visite



INSERT INTO visiteurs
(addrIP,jourVisite,nombreVisite)
VALUES
("127.0.0.1","2009-10-10",1)
ON DUPLICATE KEY UPDATE nombreVisite=V nombreVisite+1;

/!\ la clause "ON DUPLICATE KEY" ne porte que sur les clés primaires

Libellés : , , ,


mardi 21 juillet 2009

Google Earth > Voler sur la Lune ou sur Mars c'est possible

Qui n'a jamais essayé l'outil de Google : Google Earth ?


Pour ceux qui ne connaitraient pas, Google Earth est un logiciel permettant de parcourir la Terre en 3D avec des cartes satellites ou aériennes provenant de différentes sources.


Les développeurs de Google améliorent régulièrement cet outil afin d'étendre notre vision de la planète Terre... et maintenant de la Lune et de Mars.


Google Earth intègre un simulateur de vol que vous pouvez dorénavant utiliser sur la Lune et sur Mars.


Voici la vidéo de mon expérience de vol sur la lune :










Voici la vidéo de mon expérience de vol sur Mars :










Pour télécharger Google Earth : Télécharger Google Earth

Libellés : , , ,


Google maps API > récuperer la longitude, latitude et l'altitude

Grâce à l'excellente API de Google Maps vous pouvez récupérer différentes informations d'un point de la carte.

L'API permet de récupérer facilement la longitude et l'altitude grâce aux méthodes lat() et lng() de l'objet GLatLng.

Utilisation de l'API google Maps


Voici un premier exemple qui permet d'afficher une carte sur laquelle vous pouvez cliquer pour faire apparaitre la latitude et la longitude du point choisi.



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Google Map API > Afficher les coordonnees d un point</title>
<script src="http://maps.google.com/maps?file=api&v=2&sensor=false&key=votre clé google map"></script>
<script type="text/javascript">
// création de la fonction d initialisation
function initialize()
{
// vérification de la compatibilite du navigateur
if (GBrowserIsCompatible())
{
// creation d'une carte Google Map dans la balise DIV portant l id "carte"
var map = new GMap2(document.getElementById("carte"));
// centrage de la carte sur le point correspondant à ces coordonnées (ville de Lyon)
map.setCenter(new GLatLng(45.75985868785574,4.84222412109375),8);
// ajout de la barre d'outil permettant de choisir le type de carte
map.addControl(new GMapTypeControl());
// ajout de la barre d'outil permettant de zoomer sur la carte
map.addControl(new GLargeMapControl());
// ajout d un observateur d'evenement pour l action click afin d afficher les coordonnées
GEvent.addListener(map, "click", function(overlay,point)
{
// vérification pour savoir si la variable point est vraie
if (point)
{
// affichage d une info bulle contenant les coordonnées à l emplacement cliqué
map.openInfoWindow(point, "Latitude : " +point.lat()+ "
Longitude : "+point.lng());
}
});
}
}

</script>
</head>
<body onload="initialize()" onunload="GUnload()">
<div id="carte" style="width: 500px; height: 400px"></div>
</body>
</html>

Voir la résultat

Récupération de la l'altitude


L'API Google Map ne permet pas de récupérer l'altitude d'un point, par contre d'autres sites fournissent au format XML l'altitude d'un point à partir de sa latitude et longitude.


Pour cela nous allons utiliser la fonction GDownloadUrl qui permet de récupérer les résultats d'une page en ajax et de le traiter en javascript.


Etape 1 :


Créer un fichier PHP qui va générer un fichier XML contenant l'altitude à partir des coordonnées d'un point.Nous allons utiliser l'URL http://gisdata.usgs.gov/xmlwebservices2/elevation_service.asmx/getElevation afin de récupérer l'altitude.


Fichier : getAltitude.php



<?php
// récupération du parametre lat
$lat = $_REQUEST["lat"];
// récupération du parametre lng
$lng = $_REQUEST["lng"];
// définition de l'entete HTTP du document
header("Content-type: text/xml");
// récuperation et affichage du contenu de l'adresse suivante
echo file_get_contents("http://gisdata.usgs.gov/xmlwebservices2/elevation_service.asmx/getElevation?X_Value=" . $lng . "&Y_Value=" . $lat . "&Elevation_Units=METERS&Source_Layer=-1&Elevation_Only=true");
?>

Etape 2 :


Nous allons modifier la fonction initialize() créée dans la première partie :

Voici comment nous allons la tranformer :



function initialize()
{
// vérification de la compatibilite du navigateur
if (GBrowserIsCompatible())
{
// creation d'une carte Google Map dans la balise DIV portant l'id "carte"
var map = new GMap2(document.getElementById("carte"));
// centrage de la carte sur le point correspondant à ces coordonnées (ville de Lyon)
map.setCenter(new GLatLng(45.75985868785574,4.84222412109375),8);
// ajout de la barre d'outil permettant de choisir le type de carte
map.addControl(new GMapTypeControl());
// ajout de la barre d'outil permettant de zoomer sur la carte
map.addControl(new GLargeMapControl());
// ajout d'un observateur d'evenement pour l'action click afin d'afficher les coordonnées
GEvent.addListener(map, "click", function(overlay,point)
{
// vérification pour savoir si la variable point est vraie
if (point)
{
GDownloadUrl('altitude.php?lat=' +point.lat()+ '&lng=' +point.lng(), function(data)
{
// récuperation du résultat de la page au format XML
var doc = GXml.parse(data);
// extraction du contenu du fichier XML pour récuperer l'altitude
var altitude = parseInt(GXml.value(doc));
// affichage d'une info bulle contenant les coordonnées à l'emplacement cliqué
map.openInfoWindow(point, "Latitude : " +point.lat()+ "
Longitude : "+point.lng()+"
Altitude : "+altitude);
})
}
});
}
}


Nous avons modifié l'evenement "click" afin que lors de l'eéxuction de celui ci, le fichier getAltitude.php soit appelé en AJAX afin de fournir l'altitude du point sélectionné


Voir le résultat

Libellés : , , , ,


lundi 20 juillet 2009

Microsoft > MSN meurt dans un trou noir

C'est avec stupeur que nous avons pu vivre les derniers instants du portail MSN qui, suite à la découverte d'un trou noir, a disparu ...










... Pour donner naissance au nouveau portail MSN





Un beau coup de Buzz marketing de la part de Microsoft

Libellés : , ,


vendredi 17 juillet 2009

Web > Codes d'erreur AJAX

Lors du développement de script AJAX (Asynchronous Javascript And XML) vous êtes amené à utiliser différentes méthodes de l'objet XMLHttpRequest qui peuvent retourner des codes d'erreur.
Méthode readyState (permet de connaitre l'état de la requete AJAX) :
  • 0 : non initialisé (souvent du à une erreur de syntaxe empechant la creation de l'objet XMLHttpRequest )
  • 1 : connexion établie (Tout fonctionne correctement)
  • 2 : requête reçue (Le serveur a reçu votre demande)
  • 3 : réponse en cours (le serveur traite votre demande)
  • 4 : terminé (un résultat a été retourné par le serveur)
Méthode status (permet de vérifier le code d'erreur que le serveur a retourné) :
  • 200 : le resultat a été retourné avec succès
  • 404 : le fichier appelé n'a pas été trouvé par le serveur
  • 500 : le serveur a un problème de fonctionnement
  • Tous les codes d'erreurs HTTP peuvent être retournés (cf : Code d'erreurs HTTP)
Voici un exemple de fonction permettant de recuperer des données en AJAX et d'insérer le résultat dans une balise DIV :


function ajax(url,method,idDiv,params)
{
var http;
try
{
http = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e1)
{

try
{
http = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e2)
{
try
{
http = new XMLHttpRequest();
}
catch(e3)
{
alert('Votre navigateur est pourri');
http=false;
}
}
}
http.onreadystatechange=function()
{
if(http.readyState==4)
{
if(http.status==200)
document.getElementById(idDiv).innerHTML=http.responseText;
else
document.getElementById(idDiv).innerHTML="Erreur : "+http.status;
}
else
document.getElementById(idDiv).innerHTML="Chargement...";
};
http.open(method,url,true);
if(method=="post")
http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
http.send(params);
}

Libellés : , , ,


PHP > Liste des codes d'erreurs PHP

Voici une liste des codes d'erreurs que vous pouvez rencontrer durant le développement de script PHP.
EREEURORIGINERéférence PHP
T_ABSTRACTabstractAbstraction de classes (disponible depuis PHP 5.0.0)
T_AND_EQUAL&=opérateurs d'assignation
T_ARRAYarray()array(), syntaxe de tableau
T_ARRAY_CAST(array)transtypage
T_ASasforeach
T_BAD_CHARACTER Tous les caractères en dessous de ASCII 32 excepté \t (0x09), \n (0x0a) et \r (0x0d)
T_BOOLEAN_AND&&opérateurs logiques
T_BOOLEAN_OR||opérateurs logiques
T_BOOL_CAST(bool) ou (boolean)transtypage
T_BREAKbreak;break
T_CASEcaseswitch
T_CATCHcatchLes exceptions (disponible depuis PHP 5.0.0)
T_CHARACTER
T_CLASSclassclasses et objets
T_CLASS_C__CLASS__constantes magiques (disponible depuis PHP 4.3.0)
T_CLONEcloneclasses et objets. (disponible depuis PHP 5.0.0)
T_CLOSE_TAG?> ou %>
T_COMMENT// ou #, et /* */ en PHP 5commentaires
T_CONCAT_EQUAL.=opérateurs d'assignation
T_CONSTconst
T_CONSTANT_ENCAPSED_STRING"foo" ou 'bar'syntaxe chaîne de caractères
T_CONTINUEcontinue
T_CURLY_OPEN
T_DEC--opérateurs d'incrémention/décrémention
T_DECLAREdeclaredeclare
T_DEFAULTdefaultswitch
T_DIR__DIR__constantes magiques (disponible depuis PHP 5.3.0)
T_DIV_EQUAL/=opérateurs d'assignation
T_DNUMBER0.12, etc.nombres à virgule flottante
T_DOC_COMMENT/** */style de commentaire dans la PHPDoc (disponible depuis PHP 5.0.0)
T_DOdodo...while
T_DOLLAR_OPEN_CURLY_BRACES${syntaxe de variable complexe analysée
T_DOUBLE_ARROW=>syntaxe de tableau
T_DOUBLE_CAST(real), (double) ou (float)transtypage
T_DOUBLE_COLON::Voyez T_PAAMAYIM_NEKUDOTAYIM plus bas
T_ECHOechoecho()
T_ELSEelseelse
T_ELSEIFelseifelseif
T_EMPTYemptyempty()
T_ENCAPSED_AND_WHITESPACE
T_ENDDECLAREenddeclaredeclare, syntaxe alternative
T_ENDFORendforfor, syntaxe alternative
T_ENDFOREACHendforeachforeach, syntaxe alternative
T_ENDIFendifif, syntaxe alternative
T_ENDSWITCHendswitchswitch, syntaxe alternative
T_ENDWHILEendwhilewhile, syntaxe alternative
T_END_HEREDOC syntaxe heredoc
T_EVALeval()eval()
T_EXITexit or dieexit(), die()
T_EXTENDSextendsextends, classes et objets
T_FILE__FILE__constantes magiques
T_FINALfinalMot-clé "final" (disponible depuis PHP 5.0.0)
T_FORforfor
T_FOREACHforeachforeach
T_FUNCTIONfunction or cfunctionfonctions
T_FUNC_C__FUNCTION__constantes magiques (disponible depuis PHP 4.3.0)
T_GLOBALglobalscope de variable
T_GOTOgotonon documenté (disponible depuis PHP 5.3.0)
T_HALT_COMPILER__halt_compiler()__halt_compiler (disponible depuis PHP 5.1.0)
T_IFifif
T_IMPLEMENTSimplementsInterfaces (disponible depuis PHP 5.0.0)
T_INC++opérateurs d'incrémention/décrémention
T_INCLUDEinclude()include()
T_INCLUDE_ONCEinclude_once()include_once()
T_INLINE_HTML
T_INSTANCEOFinstanceofopérateurs de type (disponible depuis PHP 5.0.0)
T_INT_CAST(int) ou (integer)transtypage
T_INTERFACEinterfaceInterfaces (dipsonible depuis PHP 5.0.0)
T_ISSETisset()isset()
T_IS_EQUAL==opérateurs de comparaison
T_IS_GREATER_OR_EQUAL>=opérateurs de comparaison
T_IS_IDENTICAL===opérateurs de comparaison
T_IS_NOT_EQUAL!= ou <>opérateurs de comparaison
T_IS_NOT_IDENTICAL!==opérateurs de comparaison
T_IS_SMALLER_OR_EQUAL<=opérateurs de comparaison
T_LINE__LINE__constantes magiques
T_LISTlist()list()
T_LNUMBER123, 012, 0x1ac, etcentiers
T_LOGICAL_ANDandopérateurs logiques
T_LOGICAL_ORoropérateurs logiques
T_LOGICAL_XORxoropérateurs logiques
T_METHOD_C__METHOD__constantes magiques (disponible depuis PHP 5.0.0)
T_MINUS_EQUAL-=opérateurs d'assignation
T_ML_COMMENT/* et */commentaires (PHP 4 uniquement)
T_MOD_EQUAL%=opérateurs d'assignation
T_MUL_EQUAL*=opérateurs d'assignation
T_NS_C__NAMESPACE__namespaces. Également défini comme T_NAMESPACE (disponible depuis PHP 5.3.0)
T_NEWnewclasses et objets
T_NUM_STRING
T_OBJECT_CAST(object)transtypage
T_OBJECT_OPERATOR->classes et objets
T_OLD_FUNCTIONold_function(uniquement PHP 4)
T_OPEN_TAGsortie du mode HTML
T_OPEN_TAG_WITH_ECHOsortie du mode HTML
T_OR_EQUAL|=opérateurs d'assignation
T_PAAMAYIM_NEKUDOTAYIM::::. Définie également en tant que T_DOUBLE_COLON.
T_PLUS_EQUAL+=opérateurs d'assignation
T_PRINTprint()print()
T_PRIVATEprivateclasses et objets (disponible depuis PHP 5.0.0)
T_PUBLICpublicclasses et objets (disponible depuis PHP 5.0.0)
T_PROTECTEDprotectedclasses et objets (disponible depuis PHP 5.0.0)
T_REQUIRErequire()require()
T_REQUIRE_ONCErequire_once()require_once()
T_RETURNreturnvaleurs retournées
T_SL<<opérateurs sur les bits
T_SL_EQUAL<<=opérateurs d'assignation
T_SR>>opérateurs sur les bits
T_SR_EQUAL>>=opérateurs d'assignation
T_START_HEREDOC<<<syntaxe heredoc
T_STATICstaticscope de variable
T_STRING
T_STRING_CAST(string)transtypage
T_STRING_VARNAME
T_SWITCHswitchswitch
T_THROWthrowLes exceptions (disponible depuis PHP 5.0.0)
T_TRYtryLes exceptions (disponible depuis PHP 5.0.0)
T_UNSETunset()unset()
T_UNSET_CAST(unset)type-casting (disponible depuis PHP 5.0.0)
T_USEusenamespaces (disponible depuis PHP 5.3.0)
T_VARvarclasses et objets
T_VARIABLE$foovariables
T_WHILEwhilewhile, do...while
T_WHITESPACE
T_XOR_EQUAL^=opérateurs d'assignation
Source http://www.php.net/manual/fr/tokens.php

Libellés : , ,


mardi 14 juillet 2009

Unity 3D > Première réalisation après une semaine

Voila maintenant une semaine que j'ai commencé à utiliser Unity 3D, j'en suis tellement satisfait que je viens de m'acheter la license Indy.
Voici le début de mon premier jeu video réalisé avec Unity 3D, je suis en train de travailler dessus et ceci est la première ébauche jouable.


Donnez moi vos remarques, elles seront nombreuses je le pense ;-)

Libellés : , , ,


mercredi 8 juillet 2009

Unity 3D > Réaliser son propre jeu video 2D/3D de qualité professionnelle

Je viens de passer quelques jours à tester le logiciel Unity 3D qui permet de réaliser de A à Z un jeu vidéo de qualité professionnel.

Site officiel : http://unity3d.com

Les avantages :
- jeux déployables sur beaucoup de supports (WII,Windows,Mac OSX,IPhone,...)
- prise en main rapide et efficace
- de nombreuses ressources disponibles sur internet
- une license "Indi" à seulement 149 €
- Le player à télécharger ne fait pas plus de 2 Mo et permets de visualiser des exemples bluffants (http://unity3d.com/gallery/live-demos/index.html#tropical-paradise)

Les inconvénients :
- des plantages fréquents (pensez à sauvegarder souvent)
- pas encore d'exportation des jeux pour la XBOX 360

Pour illustrer la simplicité de cet outil voici un exemple de réalisation d'un monde 3D avec interaction avec le décor :



Si vous n'arrivez pas à visualiser l'exemple sur cette page vous pouvez télécharger et exécuter le fichier suivant : unity3DLevel1.exe

Voici un site qui m'a bien aidé pour commencer :
http://learnmesilly.com/index.php?currentPage=unity_lesson1

Libellés : , , ,


Abonnement Messages [Atom]