Boutique Cinema 4D
Affichage des résultats 1 à 8 sur 8

Discussion: Déformation cylindrique

  1. #1
    Gourou Avatar de César Vonc
    Date d'inscription
    avril 2006
    C4D version
    Autre
    OS
    Windows 10
    Messages
    2 483

    Déformation cylindrique

    Salut,


    J'ai un petit souci de géométrie qui me semble vraiment tout bête, mais sur lequel je bloque bêtement. : /


    J'ai un objet cylindrique avec un des couvercles aplati sur un axe (ici le Z), comme ceci :

    Cliquez sur l'image pour la voir en taille réelle 

Nom : 		Capture.PNG 
Affichages :	8 
Taille :		120,6 Ko 
ID : 			17420

    Et j'aimerais le transformer en un beau cylindre normal.

    Donc, logiquement, je créé un facteur entre le bas et le haut du cylindre, où le bas vaut 0 % et le haut 100 %, que je multiplie à l'échelle Z de mes points, mais j'obtiens un effet bombé, comme si l'influence était plus forte en bas qu'en haut :

    Cliquez sur l'image pour la voir en taille réelle 

Nom : 		Capture.PNG 
Affichages :	8 
Taille :		121,3 Ko 
ID : 			17422


    Voici le bout de code et le fichier C4D avec l'objet et le scripte Python. Je pige pas, ça devrait marcher pourtant.

    Code PHP:
    centre obj.GetMp()
    boite obj.GetRad()
    boite2 boite 2
    pts 
    obj.GetAllPoints()

    for 
    ip in enumerate(pts) :
        
    fac = (p.centre.boite.y) / boite2.y
        fac 
    *= # Intensité
        
    fac += 1
        pts
    [i].p.fac

    obj
    .SetAllPoints(pts
    Fichiers attachés Fichiers attachés
    Dernière modification par César Vonc ; 19/03/2016 à 12h55.

  2. #2
    Big Boss Avatar de yayaprod
    Date d'inscription
    mai 2006
    C4D version
    R13 Studio
    OS
    OS Walking Dead ?
    Messages
    6 010
    Avec un peau nurb ? ce serait plus facile à gérer, tu déformes sans problème!
    Les détails font la perfection, et la perfection n'est pas un détail.
    LdV.
    http://yayaprodtm.cgsociety.org/

  3. #3
    Gourou Avatar de César Vonc
    Date d'inscription
    avril 2006
    C4D version
    Autre
    OS
    Windows 10
    Messages
    2 483
    J'aimerais faire ça en programmation, car en réalité c'est pour un autre projet que C4D. ^^

  4. #4
    Big Boss Avatar de yayaprod
    Date d'inscription
    mai 2006
    C4D version
    R13 Studio
    OS
    OS Walking Dead ?
    Messages
    6 010
    En définissant une zone d'influence sur l'objet ? Bon je te laisse la programmation et moi c'est pas possible, bien que j'avais commencé
    sur Director7 et depuis j'ai abandonné.
    Dernière modification par yayaprod ; 19/03/2016 à 13h25.
    Les détails font la perfection, et la perfection n'est pas un détail.
    LdV.
    http://yayaprodtm.cgsociety.org/

  5. #5
    Pilier Avatar de gr4ph0s
    Date d'inscription
    mai 2013
    C4D version
    R16 Studio
    OS
    win 7 X64
    Messages
    964
    Je dis peut être une connerie mais tu ne calcul pas le coefficient entre min z max z du coup tu appliques un coefficient de 1 ce qui est correcte pour le top mais logiquement pas pour le reste.

    Après tu peux recup l'endroit le plus large et faire avec des sweep mais ut souhaite surement conserver le maillage. J'ai tout placé en 0.0.0 mais je pense que t'a capté l'idée ^^
    Code:
    import c4d
    import math
    
    
    def main():
        obj = op.GetDown()
        if not obj : return None
        obj = obj.GetClone()
        
        centre = obj.GetMp()
        boite = obj.GetRad()
        boite2 = boite * 2
        pts = obj.GetAllPoints()
        
        min_y = -boite2.y
        max_y = boite2.y
    
    
        max_z = 0
        for i, p in enumerate(pts) :
            if p.z > max_z:
                max_z = p.z
                
        circleSize = (3.14 * math.sqrt(max_z)) * 2.25 
        baseCircle = c4d.BaseObject(c4d.Osplinecircle)
        baseCircle[c4d.PRIM_PLANE] = 2
        baseCircle[c4d.PRIM_CIRCLE_RADIUS] = circleSize
        
        TopCircle = c4d.BaseObject(c4d.Osplinecircle)
        TopCircle[c4d.PRIM_PLANE] = 2
        TopCircle[c4d.PRIM_CIRCLE_RADIUS] = circleSize
        TopCircle[c4d.ID_BASEOBJECT_ABS_POSITION] = c4d.Vector(0,max_y,0)
        
        null = c4d.BaseObject(c4d.Onull)
        
        loft = c4d.BaseObject(c4d.Oloft)
        
        baseCircle.InsertUnder(loft)
        TopCircle.InsertUnder(loft)
        
        loft.InsertUnder(null)
        
        
        return null
    Dernière modification par gr4ph0s ; 19/03/2016 à 15h36.
    SDK Specialist
    MAXON Computer GmbH

  6. #6
    Gourou Avatar de César Vonc
    Date d'inscription
    avril 2006
    C4D version
    Autre
    OS
    Windows 10
    Messages
    2 483
    Ouais, non, je veux modifier le maillage de l'objet existant, qui peut être irrégulier, pour faire comme un déformateur, en somme.

    Enfin, merci pour ton essai. : p

  7. #7
    Gourou Avatar de valkaari
    Date d'inscription
    mai 2009
    C4D version
    Autre
    OS
    OSX / windows
    Messages
    2 949
    M'a fallut une plombe pour réfléchir correctement ...

    C'est comme calculer un % sauf que t'as un taux variable.

    0.8 c'est ton taux de déformation, variable en fonction de fac qui est le rapport point/ hauteur de l'objet.
    diviser par 1.0 - tauxVariable pour revenir à la valeur avant déformation.


    Code:
            fac = (py / boite2.y)
            pts[i].z = p.z / (1.0 - (0.8 * fac ))

  8. #8
    Gourou Avatar de César Vonc
    Date d'inscription
    avril 2006
    C4D version
    Autre
    OS
    Windows 10
    Messages
    2 483


    Chapeau Val, oui je pense que c'était moins évident que ce qui n'y parait, j'étais parti dans des exponentielles, des carrés, des machins, pour un résultat à peu près cylindrique.

    Mais là c'est parfait, et finalement tout con quand on regarde bien, grand merci !

Discussions similaires

  1. [Question] Texte cylindrique?
    Par silvaL dans le forum Nouveaux membres
    Réponses: 5
    Dernier message: 06/11/2011, 02h46
  2. [RESOLU]placage cylindrique
    Par Jack Ryan dans le forum Textures
    Réponses: 5
    Dernier message: 06/11/2008, 22h50
  3. faire un trou cylindrique dans un cube ??
    Par benjih69 dans le forum Nouveaux membres
    Réponses: 16
    Dernier message: 26/05/2006, 05h17
  4. Texture cylindrique
    Par tetsuo dans le forum Textures
    Réponses: 7
    Dernier message: 15/03/2006, 18h02
  5. deformation
    Par jle dans le forum Nouveaux membres
    Réponses: 1
    Dernier message: 05/06/2005, 19h03

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  
Mediaworks - Logiciels 3D | Design Internet - Creation site internet