PDA

Voir la version complète : Xander Unity apprentissage.



xander
19/12/2009, 20h01
Yo, j'ai commencé l'apprentissage d'unity il y a peu. La prise en main est assez facile, même si je regrette que les ombres soient désactivées dans la version free.

Pour le moment, la seule action possible est celle de monter à l'échelle.

Pour la suite .... Bordinel, le scripting, ça me fait ch... :mrgreen:

là (http://adeoliveira30.perso.neuf.fr/Xander/divers/unity/centrale%20sprinkleur.html)

Ps, il y a des normales d'inversées :P

Sir Gong
19/12/2009, 20h10
J'ai pas réussi à monter sur l'échelle dehors. :D

Jean-Laurent
19/12/2009, 20h13
Après avoir appuyer sur M il faut utiliser les flèches de direction en plus.

Sinon, je clique mais ça ne tire pas, mon arme doit-être enrayée. :mrgreen:
Et puis je suis sans doute un peu lourd je passe à travers le toit de la chaufferie.

On voit bien les possibilités en tout cas. :poucehaut:

Teutch
19/12/2009, 20h15
J'ai pas réussi à monter sur l'échelle dehors. :D

Ce n'est plus de ton âge les jeux vidéo !! :mrgreen: :mrgreen:

C'est très sympa comme truc. Unity, encore un truc qui donne envi de si plonger.

Paradox
19/12/2009, 20h17
Ca donne envie de se faire un petit FPS ! :mrgreen:
Bin c'est sympatoche pour un début ! :poucehaut:

C2
19/12/2009, 20h20
C'est déjà très probant, mais ça fait bizarre de ne pas entendre de "ouch" en tombant du toit :D
On ne perd jamais de point de vie, mais faut pas sauter du parapet, belle vue par en dessous que l'on a le temps d'admirer durant la très lente chute en tout cas

:efface::efface:

xander
19/12/2009, 20h23
J'ai pas réussi à monter sur l'échelle dehors. :D


Bah, il faut lire :lol:

Sinon, c'est pas un jeu hein, c'est pour ma boite.
On tente de développer des centrale 3d pour des clients (Carrefour entre autre).

shtl
19/12/2009, 22h47
Après avoir appuyer sur M il faut utiliser les flèches de direction en plus.

Sinon, je clique mais ça ne tire pas, mon arme doit-être enrayée. :mrgreen:
Et puis je suis sans doute un peu lourd je passe à travers le toit de la chaufferie.

On voit bien les possibilités en tout cas. :poucehaut:



Exactement là même. :lol:

En fait les collision se font fonction des normales c'est ça?

C'est gentil d'avoir mis un muret autour, ça évite de tomber dans l'infini. :mrgreen:

L'appart que t'avais posté sur bubbles, c'était pas du Unity?
En tout cas ça marche super mec. :poucehaut:
La fumée, pas trop dure à ajouter? C'est un sprite ou c'est un effet unity?

xander
20/12/2009, 11h15
La fumée, c'est du Unity et c'est super simple à mettre en place.
Pour avoir des collisions, il faut ajouter un mesh collider à ton mesh.

Sinon pour l'appart, c'était fait sous shiva. Possiblitées de shiva içi http://www.stonetrip.com/desktop-3d-applications.html

L'avantage d'unity est qu'il est plus facile à prendre en main, pour un neuneu comme moi! :mrgreen:

Jefait le même projet sous shiva d'ailleur, car avec la version free d'unity, il n'y a pas les ombres dynamiques.

Maintenant le plus dur arrive, faut scripter :mrgreen:

diego1968
20/12/2009, 12h22
Super Xander !
Je vois que nous avons les mêmes objectifs pour nos client ! 8) :wink:

Il est vrai que les possibilités 3D temps réel ne sont pas limité aux jeux, mais que de faire un environnement pour des annonceurs et leurs permettre de voir ou "vivre" leurs produits c'est drôlement intéressant ! :poucehaut:

Je m'y suis mis un peu aussi, mais dès qu'il faut aborder le scripting je rebute un peu :coup:, mais bon faut savoir évoluer avec son temps.

Encore bravo pour cette petite démo ! :poucehaut: :prie:

xander
20/12/2009, 14h26
C'est vrai que le scripting :arg:
Faut mettre les mains dans le camboui. Après, il y a legloups et steph 3d qui m'ont filé des pistes pour ce que je veux faire.

Je filerais les trucs que j'ai trouvé sur le net, comme la manière de grimper à l'échelle, cette semaine.

shtl
20/12/2009, 14h32
Merci :poucehaut:

clemz
20/12/2009, 14h37
super Xander :) . tu peux demander des infos a Thomas Pasieka ( Tank de 3d attack ) il est a fond sur unity<->c4d :art:
il prepare un fps .

:odile:

NumZ
20/12/2009, 15h34
Super Xander !
tu connais peut-être le site : http://www.unity3d-france.com/
Il commence à rassembler qqes ressources intéressantes.

Tu as créé des light map pour tes textures ?

On passe à travers du toit du premier bâtiment quand on saute dessus :mrgreen:

xander
21/12/2009, 10h37
Merci clemz pour l'info :D

Numz, je suis passé voir le site hier, et effectivement il commence à être bien fournit :D

Pourquoi vous n'utilisez pas l'échelle pour redescendre? Bande de folles :mrgreen:

Je vais modifier la cuve , pour que l'on puisse descendre à l'intérieur. Si vous vous perdez dedans.... hinhinhin :twisted:

shtl
21/12/2009, 10h49
Tu veux nous emprisonner? Ça dépend ce que tu proposes comme sévices dans ta cuve :mrgreen:

Dits tant que t'es là, tu peux monter à combien de polys pour un décor dans unity? T'as testé un peu?

atome451
21/12/2009, 12h46
Héhééé ! C'est cool tout ça.
Plus on est de fous... Moi je suis en tout cas !

Pour ce qui est du nombre de polys, ça dépend du degré de complexité des meshes, des animations, des shaders, des effets et, bien entendu, de la carte video du "joueur"... Donc difficile à dire. C'est plutôt du cas par cas. Mais c'est certain qu'on est très très très loin de Wirefusion en rendu logiciel par exemple.
Pour un paysage avec des arbres, on gère soi-même, via quelques sliders, la limite des arbres en poly et des arbres en billboards créés et gérés automatiquement par le moteur. Donc, avec le même nombre d'arbres (plusieurs milliers par exemple) on peu exploser ou non les FPS. Ca dépend aussi de la qualité exigée : plus de lissage = moins de FPS par exemple. Je crois donc que le moteur doit être capable de gérer des centaines de milliers de polys, tout dépend comment on veut les afficher et sur quel ordi... :mrgreen:

shtl
21/12/2009, 12h57
OK merci pour le retour ^^
En fait, oui, je sais qu'on peut avoir du million de poly sur un terrain avec l'affichage dynamique. Ma question est plus précisément: sans sprites, sans arbre, combien de polys affiché dans le même cadre en même temps, pour par exemple un seul batiment, et pour une carte graphique utilisateur correcte, sans être une carte de hardgamer.
Là par exemple Xander, puis-je te demander le polycount de la scène?

BerTiN03
21/12/2009, 13h17
Très efficace ! Même question que SHTL, moi aussi.

xander
22/12/2009, 15h34
Je vous dit ça tout à l'heure. J'ai fait la modif sur la cuve et ajouté aussi la possibilité de faire tourner des vannes.
Par contre, je passe par des raccourcis clavier. En fps, je n'arrive pas faire un click pour entrainer une action.

Merci à Steph3d pour le script click :D

xander
22/12/2009, 16h30
Alors, il y a environ 90.000 polygones. J'aurais pu en faire moins, car au départ ce n'était pas prévu pour du temps réel.

shtl
22/12/2009, 18h04
Ala vache! Oui c'est pas beaucoup 90 000... :arg: Pour moi c'est le polycount d'une cuillère à café ça :mrgreen:

Merci pour la précision Xandouille :poucehaut:

xander
22/12/2009, 20h51
Je peux monter pour mes futures cuillères alors :mrgreen:

geantvert
22/12/2009, 21h03
super tout ça xander, ça donne moultement envie de s'y mettre, du coup ben .... je m'y met :nono:



Merci à Steph3d pour le script click :D

Si cela ne gène pas Steph, peut-on profiter de ce sript?

xander
22/12/2009, 21h36
Je vais lui demander :wink:
Sinon, jeudi je vous met des liens qui m'ont servit à travailler :wink:

xander
23/12/2009, 10h45
Mise à jour (voir première page)

On peut faire tourner des vannes (4) par clic souris. (par exemple la première vanne, face à vous au démarrage).

Je vais essayer d'importer des animes c4d pour voir.

Faut que je revois l'interface aussi.

Sinon, appellez moi Piou la bricole. C'est des bouts de script que je trouve par ci par là, qui fond que ça fonctionne.
J'ai pas de cerveau, alors je bidouille :oops:

atome451
23/12/2009, 11h03
C'est super ! :poucehaut:
Je vois aussi que tu as mis un collider sur le toit. On peut sauter dessus sans passer à travers :wink:
Mais au fait, la rotation des vannes ne s'arrête pas ?

Pour le script d'activation des vannes, as-tu mis un OnClick ou as-tu travaillé avec un lancé de rayon (comme j'ai lu quelque part sur le forum Unity) ? Je pose la question car je n'ai pas encore essayé ce principe avec le script de verrouillage de pointeur de souris... et sans ce script, ça ne fonctionne pas très bien puisque le pointeur se balade n'importe où.
En fait je vais essayer tout de suite. Ce sera plus malin...

xander
23/12/2009, 11h32
Alors, pour stopper la vanne il faut re-cliquer. Faudrait que je lui donne un temps (si c'est possible) ou bien déclencher une anim. (avec c4d je lui ferai changer la couleur en plus.

La fonction utilisé est onMouseDown. Pas de raycast ( je crois que c'est ça) ici.

atome451
23/12/2009, 13h52
Oui pardon... onMouseDown...
Test effectué, ça fonctionne nettement mieux avec un Screen.lockCursor en effet.
Bon à savoir, merciii !

Pour changer la couleur, tu n'es pas obligé de passer par C4D. Tu peux le faire directement dans Unity en script :



static var XXXX = 0;
var couleur : Color;
var oldcouleur : Color;
var objet = "";

function OnMouseDown() {
if (XXXX == 0) { //XXXX est la conditionnelle quelconque
cible = GameObject.Find(objet);
oldcouleur = cible.renderer.material.GetColor("_Color"); //à désactiver si on ne veut pas revenir à la couleur d'origine
cible.renderer.material.color = couleur;
XXXX = 1 ;
}
else if (XXXX == 1) { //XXXX est la conditionnelle quelconque
cible = GameObject.Find(objet);
cible.renderer.material.color = oldcouleur;
XXXX = 0 ;
}
}


Tu attaches ce script à l'objet "cliquable", tu donnes le nom de l'objet à affecter dans le champ "Objet" (qui n'est peut-être pas le même que l'objet cliquable) et tu donnes une couleur au champs Couleur. Si tu ne veux pas revenir à la couleur d'origine, tu peux aussi donner une couleur à Oldcouleur et désactiver la ligne indiquée dans le script.

Idem pour les textures ou même les matériaux avec "xxx.renderer.material.mainTexture = texture" ou "xxx.renderer.material = new Material (shader)". Ici ce n'est qu'un exemple de script... Il y a sans doute plus élégant, ce n'est qu'un exemple à mon niveau... :oops: Puis il est vraisemblable que tu sais déjà tout ça...

xander
23/12/2009, 13h57
Puis il est vraisemblable que tu sais déjà tout ça...


:mrgreen: Si tu connaissais mon niveau :mrgreen:

Je suis une bouse, moi :lol:

Merci pour le script :D

Steph3D ::.
23/12/2009, 18h19
Je vais lui demander :wink:


Mais voui :wink:

Du coup, je vous est fait un mini tuto pour expliquer bien comment cela marche :wink:
http://forum.steph3d.net/index.php/topic,408.0.html

xander
23/12/2009, 20h28
Merchi :love:

xander
24/12/2009, 10h25
Voilà le lien qui m'a servit pour l'échelle et pour le fpv

http://forum.unity3d.com/viewtopic.php?p=215478

Voili :wink:

diego1968
25/12/2009, 20h20
Merci à vous 2 pour ces infos sur Unity ! :prie: :poucehaut:

NumZ
19/01/2010, 19h44
steph3D, merci pour ton tuto.

Je cherche à animer l'ouverture / fermeture d'une porte en cliquant sur l'objet interrupteur.
Pour l'instant, la porte tourne mais ne s'arrete de tourner que lorsque je reclique sur l'interrupteur (du à la fonction update).

Est-ce que je peux lui dire de ne tourner que de X degrés lors du premier clic et lui dire de revenir à sa position initiale lors du second clic ?

J'ai réussi une bidouille en créant une variable à laquelle j'attribue une valeur et qui déclanche une animation faite dans c4d.
Mais j'aimerais me passer de l'anim à créer dans c4d...

xander
19/01/2010, 21h35
Ah bah tiens, moi je passe par l'anim justement.

Si il y a une autre soluce, je suis preneur :D

NumZ
19/01/2010, 21h58
Yes,
tiens, vl'à la modif :

var _cible : GameObject;
private var _interrupteur: boolean;

function Start () {
_interrupteur= false;
}

function OnMouseDown() {
if(_interrupteur){

_cible.transform.Rotate(0,90,0);

_interrupteur = false;
}
else {
_cible.transform.Rotate(0,-90,0);

_interrupteur = true;
}
}

Pour l'instant c'est ouvert ou fermé. Je regarde pour la méthode d'interpolation de position...

NumZ
19/01/2010, 22h40
Je pense qu'il y a une piste pour l'interpolation avec la fonction SLERP.
Mais c'est pas gagné...

xander
20/01/2010, 12h54
Merci .... et bon courage :wink:

atome451
20/01/2010, 12h59
Salut à tous,

Si ça peut encore servir, voici ma bidouille pour animer une porte. Ca vaut ce que ça vaut et c'est largement pompé du forum Unity3D avec divers bouts de code glânés deci delà... Il y a parfois des "ratés" que je ne m'explique pas encore mais dans l'ensemble ça fonctionne. Il y a deux variables publiques qui permettent d'adapter dans l'inspecteur l'angle de rotation et la durée de rotation, pour personnaliser par porte. Il suffit de déposer le script sur un objet à faire tourner. Bien entendu, il faut que le pivot de rotation soit au bon endroit... J'espère que ça vous sera utile. :wink:


private var isOpen = 0 ;
private var qTo;
private var qToback;
public var dureeRotation: float = 3.0;
public var toAngle: float = 90;

function Start()
{
qTo = Quaternion.Euler(transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y + toAngle, transform.rotation.eulerAngles.z);
qToback = Quaternion.Euler(transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, transform.rotation.eulerAngles.z);
}

function OnMouseDown() {
var tempsFin = Time.time + dureeRotation;
var qFrom = transform.rotation;
if (isOpen == 0) {
while (Time.time < tempsFin) {
transform.rotation = Quaternion.Lerp (qTo, qFrom, (tempsFin - Time.time) / dureeRotation);
yield;
}
isOpen = 1 ;
}
else if (isOpen == 1) {
while (Time.time < tempsFin) {
transform.rotation = Quaternion.Lerp (qToback, qFrom, (tempsFin - Time.time) / dureeRotation);
yield;
}
isOpen = 0 ;
}
}

EDIT : euh, il y a des erreurs d'affichage du code dirait-on. Je peux déposer un zip si vous voulez ?

xander
20/01/2010, 13h01
Merci, je regarde ça se soir :wink:

NumZ
20/01/2010, 13h32
atome451, et comment que çà peut servir!

Si tu as un zip, je veux bien.

Merci

atome451
20/01/2010, 14h21
Salut à vous,

Je ne suis plus sur la machine de développement mais ce fichier devrait fonctionner.
S'il y a des soucis avec le codage texte, un copier-coller entre un éditeur texte genre notepad ou textedit et l'éditeur de script de Unity3D devrait faire l'affaire. Au pire, j'en copie un nouveau lorsque je serai de retour sur la machine de développement. Dites-moi quoi. :wink:

NumZ
20/01/2010, 19h06
Merci, je regarde çà ce soir !

xander
20/01/2010, 20h52
J'ai essayé et ça fonctionne impec :prie:

J'avais commencé à essayé de pondre un script mais sans réussite.

Merci :D :bounce:

NumZ
20/01/2010, 22h23
Super,
juste une version modifiée pour lancer la rotation en cliquant sur un autre objet (var _cible) :


private var isOpen = 0 ;
private var qTo;
private var qToback;
public var dureeRotation: float = 3.0;
public var toAngle: float = 90;
public var _cible : GameObject;

function Start()
{
qTo = Quaternion.Euler(transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y + toAngle, transform.rotation.eulerAngles.z);
qToback = Quaternion.Euler(transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, transform.rotation.eulerAngles.z);
}

function OnMouseDown() {
var tempsFin = Time.time + dureeRotation;
var qFrom = _cible.transform.rotation;
if (isOpen == 0) {
while (Time.time < tempsFin) {
_cible.transform.rotation = Quaternion.Lerp (qTo, qFrom, (tempsFin - Time.time) / dureeRotation);
yield;
}
isOpen = 1 ;
}
else if (isOpen == 1) {
while (Time.time < tempsFin) {
_cible.transform.rotation = Quaternion.Lerp (qToback, qFrom, (tempsFin - Time.time) / dureeRotation);
yield;
}
isOpen = 0 ;
}
}

xander
21/01/2010, 09h35
:D

atome451
21/01/2010, 12h10
Ah bin je suis content de partager. Et si ça peut servir, je suis encore plus content. :wink: