[SCRIPT] Mesh Explosion.

Présentation des outils annexes/externes à Unity.
Avatar de l’utilisateur
ZJP
Messages : 5748
Inscription : 15 Déc 2009 06:00

[SCRIPT] Mesh Explosion.

Message par ZJP » 26 Nov 2012 17:46

Salut,

C'est d’avantage un script qu'un "tool", qui permet l'explosion (éclatement des triangles) d'une meshe.
Forum, Asset Store (20$).

Image

Image
Pour information, le robot (Kyle) sur l'image précédente est d'Unity Technologie. Il est libre de droit pour tout projet gratuit ou commercial utilisant Unity3D.

Cela dit, jetez quand même un œil à ce sujet - ou - qui traite du même résultat.

JP

Edit :
Testé :

Code : Tout sélectionner

// C#
// SplitMeshIntoTriangles.cs
using UnityEngine;
using System.Collections;

public class SplitMeshIntoTriangles : MonoBehaviour
{
    IEnumerator SplitMesh ()
    {
        MeshFilter MF = GetComponent<MeshFilter>();
        MeshRenderer MR = GetComponent<MeshRenderer>();
        Mesh M = MF.mesh;
        Vector3[] verts = M.vertices;
        Vector3[] normals = M.normals;
        Vector2[] uvs = M.uv;
        for (int submesh = 0; submesh < M.subMeshCount; submesh++)
        {
            int[] indices = M.GetTriangles(submesh);
            for (int i = 0; i < indices.Length; i += 3)
            {
                Vector3[] newVerts = new Vector3[3];
                Vector3[] newNormals = new Vector3[3];
                Vector2[] newUvs = new Vector2[3];
                for (int n = 0; n < 3; n++)
                {
                    int index = indices[i + n];
                    newVerts[n] = verts[index];
                    newUvs[n] = uvs[index];
                    newNormals[n] = normals[index];
                }
                Mesh mesh = new Mesh();
                mesh.vertices = newVerts;
                mesh.normals = newNormals;
                mesh.uv = newUvs;

                mesh.triangles = new int[] { 0, 1, 2, 2, 1, 0 };

                GameObject GO = new GameObject("Triangle " + (i / 3));
                GO.transform.position = transform.position;
                GO.transform.rotation = transform.rotation;
                GO.AddComponent<MeshRenderer>().material = MR.materials[submesh];
                GO.AddComponent<MeshFilter>().mesh = mesh;
                GO.AddComponent<BoxCollider>();
                GO.AddComponent<Rigidbody>().AddExplosionForce(100, transform.position, 30);

                Destroy(GO, 5 + Random.Range(0.0f, 5.0f));
            }
        }
        MR.enabled = false;

        Time.timeScale = 0.2f;
        yield return new WaitForSeconds(0.8f);
        Time.timeScale = 1.0f;
        Destroy(gameObject);
    }
    void OnMouseDown()
    {
        StartCoroutine(SplitMesh());
    }
}
J'ai ajouté cette ligne :

Code : Tout sélectionner

GO.GetComponent<Rigidbody>().useGravity = false;
Pour déactiver la gravité. Effet plus sympa. 8-)

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Mesh Explosion.

Message par cayou66 » 26 Nov 2012 21:30

Je suppose que c'est shader 2sided obligatoire. Il dessine de quelle couleur l'arrière des triangles?
Ça donne quoi si on veut plutôt un effet éclatement d'un mur de roche plutôt que des triangles?

Avatar de l’utilisateur
yoyoyaya
Messages : 1656
Inscription : 30 Mai 2011 13:14
Localisation : PAAAAARTOUUUU
Contact :

Re: Mesh Explosion.

Message par yoyoyaya » 26 Nov 2012 22:17

cayou66 a écrit :Ça donne quoi si on veut plutôt un effet éclatement d'un mur de roche plutôt que des triangles?
Personnellement, je ne saurais te dire. Par contre, quand on voie le plugin xplode sur c4d, le rectangle qui en gros devrais représenter ton mur, il faut precalculer pour créer les polys intermédiaires qui composeront les faces intérieures de ton mur. Et le temps de calcul peut être conséquent (plusieurs secondes) suivant le nombre de débris souhaités. Alors je me demande comment ils feraient ça pour unity en realtime ^^
ImageImage

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Mesh Explosion.

Message par cayou66 » 26 Nov 2012 23:24

yoyoyaya a écrit :
cayou66 a écrit :Ça donne quoi si on veut plutôt un effet éclatement d'un mur de roche plutôt que des triangles?
Personnellement, je ne saurais te dire. Par contre, quand on voie le plugin xplode sur c4d, le rectangle qui en gros devrais représenter ton mur, il faut precalculer pour créer les polys intermédiaires qui composeront les faces intérieures de ton mur. Et le temps de calcul peut être conséquent (plusieurs secondes) suivant le nombre de débris souhaités. Alors je me demande comment ils feraient ça pour unity en realtime ^^
Je sais qu'il existe un plugin depuis (très?) longtemps sous unreal engine, qui permet d'exploser n'importe quel object. Je pense que c'est lourd, mais dans la mesure du raisonnable.

Avatar de l’utilisateur
ZJP
Messages : 5748
Inscription : 15 Déc 2009 06:00

Re: Mesh Explosion.

Message par ZJP » 27 Nov 2012 04:18

Rayfire sous 3dsmax est sympa. 8-)

Edit :

Une vidéo de Mesh Explosion. C'est EXACTEMENT ce que fait le code posté précédemment. :D
Le script à 20$.....un peu abusé?!?!

http://www.youtube.com/watch?v=68pbRwuedwg

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Mesh Explosion.

Message par cayou66 » 27 Nov 2012 04:24

ZJP a écrit :Rayfire sous 3dsmax est sympa. 8-)

Edit :

Une vidéo de Mesh Explosion. C'est EXACTEMENT ce que fait le code posté précédemment. :D
Le script à 20$.....un peu abusé?!?!
On trouve de tout dans l'asset store, des supers bons plans, et des arnaques :)
D'ailleurs je suis en train d'utiliser RageSpline et compagnie, je ferai un p'tit retour un de ces 4.

Avatar de l’utilisateur
giyomuSan
Messages : 1799
Inscription : 09 Déc 2009 14:52
Localisation : Japon

Re: Mesh Explosion.

Message par giyomuSan » 27 Nov 2012 04:27

c un peu la foire a tout l'asset store de tte facon ^^

Avatar de l’utilisateur
giyomuSan
Messages : 1799
Inscription : 09 Déc 2009 14:52
Localisation : Japon

Re: Mesh Explosion.

Message par giyomuSan » 27 Nov 2012 04:30

ZJP a écrit :Rayfire sous 3dsmax est sympa. 8-)

Edit :

Une vidéo de Mesh Explosion. C'est EXACTEMENT ce que fait le code posté précédemment. :D
Le script à 20$.....un peu abusé?!?!
bah oui oui hehe...qu'est ce que tu crois ..je suis sur que y en a meme qui achete des assets pour pomper des bout de code et remettre ca a leur sauce apres :D....J'ai rien contre le fait d acheter des asset pour regarder comment c'est coder ( je serais meme le premiere a le faire pour des chose qui me sont pas familiere..) mais bon apres de la a en refaire une asset tronquee ^^.

Avatar de l’utilisateur
Freelax
Messages : 1595
Inscription : 30 Déc 2009 23:02
Localisation : Niort
Contact :

Re: Mesh Explosion.

Message par Freelax » 27 Nov 2012 09:49

Sympa

Bon sa coute un bras au split, mais l'effet peu être intéressant dans une certaine mesure. Merci du partage ZJP ;)
Le script à 20$.....un peu abusé?!?!
Totalement ^^ c'est la dur loi de l'asset store, beaucoup de d'aubes pour beaucoup de vent, c'est dommage car certains truc sont vraiment intéressants et valent le coup de quelques roupis ^^ mais passent inaperçu en vue du nombre incalculable de produits qui ne devrais pas être présents !
J'ai rien contre le fait d acheter des asset pour regarder comment c'est coder
J'ai fait ça une fois pour le truc du controler Mixing, bah plus jamais lol

La joie du mélange de langages, le bonheur des statics à tous va. A la limite les assets graphique valent parfois le coup, enfin certains se lachent sur les prix mais la au moins ya un gain de temps de dev concret.
Image

Avatar de l’utilisateur
Max
Messages : 8805
Inscription : 30 Juil 2011 13:57
Contact :

Re: Mesh Explosion.

Message par Max » 27 Nov 2012 10:11

Quand on sait que les packages que l'on retrouve sur l'Assetstore sont évalués, jaugé et approuvé (ou pas...) par les équipes d'Unity avant,
des fois on peut en effet ce poser quelques questions. (l'argent diraient certains, certes, mais cela ne doit pas être le seul critère, quand
on connait certains projets/tools ou autre tuto qui sont rejeté car il ne sont pas à la hauteur de ce qu'attend Unity sur son Asset (dixit Unity),
cela peut parfois en effet laisser quelque peu perplexe)..
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Répondre

Revenir vers « Les outils externes »