[RESOLU] déplier série d'edges en gardant leurs dimensions?

Ici on parle de modélisation

Modérateurs : frez, Yadoob, stilobique, Matpi, ModSquad

Re: [RESOLU] déplier série d'edges en gardant leurs dimensio

Message par lapineige » 26 Juil 2015, 18:21

Mareck a écrit :Eh! je suis parti 1 jour ou 1 semaine? ^^
C'est énorme.

Tu connais mal la machine à spam que je suis :-P
Au contraire j'aurai voulu en faire plus, j'ai vraiment pas le temps de m'y mettre avant quelques jours.

Mareck a écrit :Pour info, si vous testez avec mon tracé gps, c'est une série de points reliés les uns aux autres qui forment une "courbe continue" mais il peut y avoir à un ou 2 endroits un Y avec un point qui part tout seul.
Ce qui entraîne un étirements de ces points.
C'est une action non voulu mais qui me permet d’éliminer ces points facillement^^.

Ah.... et en plus ça risque de faire foirer mon script, dans la façon dont j'allais l'implémenter... retour à la case réflexions ^^


Mareck a écrit :Pour mon utilisation ça marche bien, faudra juste que je sois vigilent sur les autres tracés, que je ne me trouve pas dans ce genre de configuration.
En tout cas si t'en fais un addon, les petites options seront les bienvenues;

Ça arrivera forcément, et ça ne sera ni facile à voir, ni facile à corriger. C'est à peine mieux qu'à la main :(
Tu a une deadline d'ici peu, ou je peux faire ça en milieu de semaine ?

Ok pour les options ;-)

Mareck a écrit :Quand je serai un peu plus confort financièrement je t’achèterai tes Lapitools, c'est le moyen le plus simple de te donner quelque chose je pense.

Si jamais, le fait pas sur le market, ils prennent 30% :(
Et dans l'absolu je ne le fait pas pour ça hein (de façon ça ne paye pas plus d'un café de temps en temps :lol:), utilise ton argent à quelque chose de plus utile ;)

Bon pour faire le maniaque: c'est pas un achat mais un don, ils sont disponibles gratuitement.

Mareck a écrit :En fait pour faire du code il faut connaitre le langage mais aussi gérer un peu les maths.

Ça dépend de ce que tu fait, parfois oui, notamment quand on touche aux outils de modélisation (et encore, c'est pas toujours très complexe, un peu de matrice, d'interpolation, et on fait déjà beaucoup de choses).
Pour le reste, rarement plus que des opérations de base.

Dans ce cas c'est plus de la logique pour trouver ou est le bout du chemin: j'ai fais ça au début en testant quel point est le plus éloigné sur un axe, deux, mais on tombe sur les problèmes dont je parle plus haut. (c'est pas des maths très compliqué un maximum ou un minimum :-p)
Je pensais détecter quel vertex n’appartient pas à deux edges (c'est pas des maths), mais comme je le disais en haut ça ne marchera pas.
Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3717
Inscription : 25 Juin 2014, 07:06

Re: [RESOLU] déplier série d'edges en gardant leurs dimensio

Message par Mareck » 27 Juil 2015, 12:53

lapineige a écrit :Ah.... et en plus ça risque de faire foirer mon script, dans la façon dont j'allais l'implémenter... retour à la case réflexions ^^

A toi de voir si tenir compte de ce cas de figure (traces gps avec des y) à un intérêt par rapport au temps que ça te prend.


lapineige a écrit :Ça arrivera forcément, et ça ne sera ni facile à voir, ni facile à corriger. C'est à peine mieux qu'à la main :(
Tu a une deadline d'ici peu, ou je peux faire ça en milieu de semaine ?

Ben moi tel quel j'ai déjà de quoi faire ce que je voulais, si je vois un cas de figure qui rentre dans la config problématique, je peux toujours faire une rotation de la partie de courbe pour y remédier.



lapineige a écrit :Si jamais, le fait pas sur le market, ils prennent 30% :(
Et dans l'absolu je ne le fait pas pour ça hein (de façon ça ne paye pas plus d'un café de temps en temps :lol:), utilise ton argent à quelque chose de plus utile ;)

Bon pour faire le maniaque: c'est pas un achat mais un don, ils sont disponibles gratuitement.


Ben c'est comme sur le cloud, c'est parce que Blender est gratuit et que c'est un outil magnifique que je donne tous les mois.
Bon je ne pourrai pas te donner tous les mois ^^, mais quelqu'un qui me fait un outils sans rien me demander, j'ai envie de lui retourner l’ascenseur, mais ça peut être autrement, si tu as besoin de quelque chose n’hésite pas.


lapineige a écrit :Ça dépend de ce que tu fait, parfois oui, notamment quand on touche aux outils de modélisation (et encore, c'est pas toujours très complexe, un peu de matrice, d'interpolation, et on fait déjà beaucoup de choses).


Ben déjà la il faudrait que je prenne quelques cours^^.

Bonne journée.
Graphiste 3D - Site web: http://www.studios-cad.fr/
Avatar de l’utilisateur
Mareck
 
Message(s) : 332
Inscription : 20 Déc 2013, 16:18
Localisation : Alsace

Re: [RESOLU] déplier série d'edges en gardant leurs dimensio

Message par lapineige » 27 Juil 2015, 23:54

Voilà l'implémentation à deux balles du soir. J'ai en partie contourné le problème en attendant mieux. (mais j'ia pas trop d'idées, sauf un truc bourrin qui ne me plaît pas (mais qui marche)).
Il te faut sélectionner un bout de la courbe, faire un ctrl+clic droit sur le point à l'autre extrémité, pour sélectionner le plus court chemin entre les deux, et donc toute la chaîne (ce que j'avais du mal à trouver à la main)
Code : Tout sélectionner
import bpy
import bmesh
from math import sqrt

select_non_moved_vert = False

obj = bpy.context.object
bm = bmesh.from_edit_mesh(obj.data)

l_verts = list()
for edge in bm.edges:
    for vert in edge.verts:
        l_verts.append(vert)
       
l_verts_path = list()
end_verts = list()
for vert in bm.verts:
    if vert.select:
        l_verts_path.append(vert)
        if not l_verts.count(vert) == 1:
            vert.select = False
            while l_verts.count(vert) > 1:
                l_verts.remove(vert)
        else:
            end_verts.append(vert)

end_verts[0].select = False
obj.data.update()

list_vert_sorted = list()
for i in range(len(l_verts_path)):
    if i == 0:
        list_vert_sorted.append(end_verts[1])
        bpy.ops.mesh.select_more()
        continue
    bpy.ops.mesh.select_more()
    selected_verts = [v for v in l_verts_path if v.select]
    last_vert = [v for v in selected_verts if not v in list_vert_sorted][0]
    list_vert_sorted.append(last_vert)

for idx_vert in range(len(list_vert_sorted)):
    print(list_vert_sorted[idx_vert])
    if idx_vert == 0:
        dist = sqrt( (list_vert_sorted[idx_vert].co[0] - list_vert_sorted[idx_vert+1].co[0])**2 + (list_vert_sorted[idx_vert].co[1] - list_vert_sorted[idx_vert+1].co[1])**2 )
        list_vert_sorted[idx_vert].co[1] = 0
    else:
        if not idx_vert == len(list_vert_sorted)-1:
            new_dist = sqrt( (list_vert_sorted[idx_vert].co[0] - list_vert_sorted[idx_vert+1].co[0])**2 + (list_vert_sorted[idx_vert].co[1] - list_vert_sorted[idx_vert+1].co[1])**2 )
        list_vert_sorted[idx_vert].co[1] = 0
        list_vert_sorted[idx_vert].co[0] = list_vert_sorted[idx_vert -1 ].co[0] + dist
        dist = new_dist
if select_non_moved_vert:
    for vert in bm.verts:
        if vert not in l_verts_path:
            vert.select = True
        else:
            vert.select = False
           
obj.data.update()

bpy.ops.object.origin_set(type='GEOMETRY_ORIGIN')

Si tu change la ligne:
Code : Tout sélectionner
select_non_moved_vert = False

En:
Code : Tout sélectionner
select_non_moved_vert = True

Il te sélectionne la géométrie qui n'a pas été modifiée, donc les Y. Les distances sont conservées cette fois (ça sera plus pratique), sauf évidemment pour la liaison, qui a bougé.
La ligne pour recentrer est toujours là, c'est la dernière, tu peux la virer au besoin.

Pour les Y, comme tu les a à disposition (sélectionnés) et non modifiés, tu peux les séparer (les sortir du mesh), relancer l'outil, les reintégrer au niveau de leur ancienne liaison (en ayant noté la distance).
C'est loin d'être parfait, mais ça va déjà plus vite.

je peux toujours faire une rotation de la partie de courbe pour y remédier.

??

Bon je ne pourrai pas te donner tous les mois ^^

Rhôooo le radin :lol:
1 euro z'vou plé, 1 euro pour bébé lapin :lol: :lol:
(je retourne me cacher dans mon terrier ...)


Ben c'est comme sur le cloud, c'est parce que Blender est gratuit et que c'est un outil magnifique que je donne tous les mois.
[...] mais quelqu'un qui me fait un outils sans rien me demander, j'ai envie de lui retourner l’ascenseur, mais ça peut être autrement, si tu as besoin de quelque chose n’hésite pas.

L'intention me touche, mais à choisir, abonnes-toi au dév fund ;)
(qu'est ce qu'on ferait pas pour ces pauvres dév's ^^)

Ben déjà la il faudrait que je prenne quelques cours^^.

Les matrices c'est globalement plus un aide pour comprendre certain outils qu'autre chose.
Pour l'interpolation, tu est capable sur une droite définie par deux points, de deviner où sera le point à mi-chemin ? C'est pas plus compliqué, juste formulé autrement.
Et demande à cédric et pistiwique et olive s'ils en ont eu besoin pour tout ce qu'ils ont déjà fait...


Aller bon blend !! :)
Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3717
Inscription : 25 Juin 2014, 07:06

Précédent

Retour vers Modélisation

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité

cron