César Vonc
19/03/2016, 11h53
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 :
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 :
17422
Voici le bout de code et le fichier C4D avec l'objet et le scripte Python. Je pige pas, ça devrait marcher pourtant. :icon_banghead:
centre = obj.GetMp()
boite = obj.GetRad()
boite2 = boite * 2
pts = obj.GetAllPoints()
for i, p in enumerate(pts) :
fac = (p.y - centre.y + boite.y) / boite2.y
fac *= 3 # Intensité
fac += 1
pts[i].z = p.z * fac
obj.SetAllPoints(pts)
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 :
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 :
17422
Voici le bout de code et le fichier C4D avec l'objet et le scripte Python. Je pige pas, ça devrait marcher pourtant. :icon_banghead:
centre = obj.GetMp()
boite = obj.GetRad()
boite2 = boite * 2
pts = obj.GetAllPoints()
for i, p in enumerate(pts) :
fac = (p.y - centre.y + boite.y) / boite2.y
fac *= 3 # Intensité
fac += 1
pts[i].z = p.z * fac
obj.SetAllPoints(pts)