PDA

Voir la version complète : Déplacements dans la vue perspective



Condor34
17/03/2014, 09h57
Bonjour à tous.

Malgré mes recherches, je n'arrive pas à trouver une réponse à ces questions.

Je perds beaucoup de temps à placer mon champ de vison dans la vue perspective de C4D, malgré les raccourcis claviers.

Je pense qu'il n'y a pas que les vues caméra déplacement / Mise à l'échelle / rotation correspondant aux icônes de la fenêtre, mais je n'en trouve pas d'autres.


1) Par assimilation à solidworks, je souhaiterai savoir s'il existe la possibilité de passer en vue "Normal à" par rapport à un polygone sélectionné (on sélectionne un polygone et on se retrouve perpendiculaire par rapport à sa surface après avoir validé la fonction).

2) Lorsque l'on utilise la fonction "Caméra - rotation" la rotation est décrite par rapport au point de focus de la vue (ou par rapport à un point sélectionné si on appui sur CTRL). Est-il possible de tourner "sur place". Par exemple, placé au centre d'un cylindre, on tourne de 360° par rapport à son axe ce qui permet de passer en revue toute la paroi en restant à la même place.

Désolé pour le coté "basique" de ces questions.

Merci de votre aide.

poutoupoutou
17/03/2014, 10h41
Bonjour,

Tu as le raccourci "S" pour aller vers une sélection de polys, points ou aretes. Tu fais ta sélection, tu appuies sur S et la caméra t’amène directement sur ta sélection.
"H" pour faire une vue d'ensemble.

Condor34
17/03/2014, 10h48
Effectivement. Mais ça ne remet pas face à la sélection. C'est uniquement un zoom.

Il faut encore faire tourner la vue pour travailler correctement.

J'utilise aussi "O" pour cadrer la sélection.

Merci

Fluffy
17/03/2014, 15h31
Ce n'est pas un logiciel CAD, donc les schémas de déplacement caméra sont différents (pas de repositionnement automatique de la caméra, uniquement un cadrage).
En ce qui concerne ta deuxième question, tu peux passer en mode navigation caméra via le menu "Caméras>Navigation>Mode caméra" de la vue.

Condor34
18/03/2014, 22h39
Merci pour cette information. C'est exactement ce que je cherchais.

Pour le CAD, effectivement, la déformation est là et reprendre de nouvelles habitudes n'est pas facile. On cherche ses marques. Chaque soft est fait pour un usage bien déterminé, c'est évident.

valkaari
19/03/2014, 13h58
En script python ça ferait un truc de ce genre pour placer la camera dans la normal du polygone sélectionné.

Il faudrait améliorer le code pour qu'il prenne la normal moyenne des triangles qui composent le polygone ou le ngon. Dans ce code il ne prends que les trois premier point du premier polygone sélectionné trouvé sur les objets sélectionnés.



import c4d
from c4d import gui
#Welcome to the world of Python


def _SetCamera(obj,polygon):

bd = doc.GetActiveBaseDraw()
if not bd :
return False
cam = bd.GetSceneCamera(doc)
if not cam :
cam = bd.GetEditorCamera()
if not cam:
return False

objMg = obj.GetMg()

pA = obj.GetPoint(polygon.a) * objMg
pB = obj.GetPoint(polygon.b) * objMg
pC = obj.GetPoint(polygon.c) * objMg
pD = obj.GetPoint(polygon.d) * objMg


bary = ((pA + pB + pC + pD) * 0.25)


vAB = pB - pA
vAC = pC - pA

norm = vAB.Cross(vAC)
norm.Normalize()

camrot = c4d.utils.VectorToHPB(norm)

camdist = c4d.Vector(cam.GetRelPos() - bary).GetLength()
campos = bary + norm * camdist


newmg = c4d.utils.HPBToMatrix (c4d.utils.VectorToHPB(-norm) )
newmg.off = campos

cam.SetMg(newmg)

return True


def main():

docMode = doc.GetMode()
"""
if docMode != c4d.Mpolygons :
gui.MessageDialog('Vous devez être en mode polygone')
return
"""
objects = doc.GetActiveObjectsFilter(False, c4d.Opolygon, c4d.NOTOK)
if not objects:
gui.MessageDialog("Selectionnez un objet")
return

selection = c4d.BaseSelect()

for obj in objects:
selection = obj.GetPolygonS()
if selection.GetCount() > 0:
polynum = selection.GetAll(obj.GetPolygonCount()).index(1)
if not (_SetCamera (obj, obj.GetPolygon(polynum))):
gui.MessageDialog("Une erreur s'est produite pendant le calcul")
break

if selection.GetCount() == 0:
gui.MessageDialog('Selectionner un polygone')


c4d.EventAdd()

if __name__=='__main__':
main()

Condor34
19/03/2014, 14h21
En script python ça ferait un truc de ce genre pour placer la camera dans la normal du polygone sélectionné.

Il faudrait améliorer le code pour qu'il prenne la normal moyenne des triangles qui composent le polygone ou le ngon. Dans ce code il ne prends que les trois premier point du premier polygone sélectionné trouvé sur les objets sélectionnés.



import c4d
from c4d import gui
#Welcome to the world of Python


def _SetCamera(obj,polygon):

bd = doc.GetActiveBaseDraw()
if not bd :
return False
cam = bd.GetSceneCamera(doc)
if not cam :
cam = bd.GetEditorCamera()
if not cam:
return False

objMg = obj.GetMg()

pA = obj.GetPoint(polygon.a) * objMg
pB = obj.GetPoint(polygon.b) * objMg
pC = obj.GetPoint(polygon.c) * objMg
pD = obj.GetPoint(polygon.d) * objMg


bary = ((pA + pB + pC + pD) * 0.25)


vAB = pB - pA
vAC = pC - pA

norm = vAB.Cross(vAC)
norm.Normalize()

camrot = c4d.utils.VectorToHPB(norm)

camdist = c4d.Vector(cam.GetRelPos() - bary).GetLength()
campos = bary + norm * camdist


newmg = c4d.utils.HPBToMatrix (c4d.utils.VectorToHPB(-norm) )
newmg.off = campos

cam.SetMg(newmg)

return True


def main():

docMode = doc.GetMode()
"""
if docMode != c4d.Mpolygons :
gui.MessageDialog('Vous devez être en mode polygone')
return
"""
objects = doc.GetActiveObjectsFilter(False, c4d.Opolygon, c4d.NOTOK)
if not objects:
gui.MessageDialog("Selectionnez un objet")
return

selection = c4d.BaseSelect()

for obj in objects:
selection = obj.GetPolygonS()
if selection.GetCount() > 0:
polynum = selection.GetAll(obj.GetPolygonCount()).index(1)
if not (_SetCamera (obj, obj.GetPolygon(polynum))):
gui.MessageDialog("Une erreur s'est produite pendant le calcul")
break

if selection.GetCount() == 0:
gui.MessageDialog('Selectionner un polygone')


c4d.EventAdd()

if __name__=='__main__':
main()




Ca c'est excellent ! Exactement ce que je souhaite.

Affecté à la touche ², c'est d'une remarquable convivialité.

Pourquoi n'est-ce pas en standard alors qu'il semble que ce soit si facile à faire ?

Merci beaucoup, je vais gagner énormément en manipulations.

Fluffy
19/03/2014, 14h45
Ce n'est pas standard parceque ce n'est pas un logiciel de CAD, c'est un logiciel d'animation avant-tout :)

Aurety
19/03/2014, 15h12
Pourquoi n'est-ce pas en standard alors qu'il semble que ce soit si facile à faire ?

Mouais... enfin n'est pas Valkaari qui veux ! :crying:

La question qui vient quand on lit l'ensemble de tes messages est pourquoi tu n'utilises pas un modeleur Nurbs ( Genre MOI ou autre Rhino ) avant que d'importer dans C4D pour tes rendus ? Ce serait un workflow sans doute plus naturel pour toi ?!

valkaari
19/03/2014, 15h54
J'aurais tendance à dire que dans la liste des priorités ce genre d'ajout est trèèèsssssss loin (sur la liste que je ferais du moins)

Condor34
19/03/2014, 20h40
Mouais... enfin n'est pas Valkaari qui veux ! :crying:

La question qui vient quand on lit l'ensemble de tes messages est pourquoi tu n'utilises pas un modeleur Nurbs ( Genre MOI ou autre Rhino ) avant que d'importer dans C4D pour tes rendus ? Ce serait un workflow sans doute plus naturel pour toi ?!


Tout simplement parce que je ne les connais pas...

De formation mécanique, j'utilise Solidworks.

A titre loisir, j'ai utilisé C4D dans le cadre du montage vidéo.

Depuis j'ai souhaité aller un peu plus loin et un collègue de forum m'a donné comme travail pratique de réaliser ce missile. Je l'ai tout d'abord réalisé sur solidworks mais il est tombé à la renverse en voyant le nombre de polygones. Je me suis donc intéressé de près à C4d qui est plutôt orienté modelage pour vidéo/jeux et permet de gérer les polygones.

Mais effectivement s'il y a plus adapté, je suis preneur.

;)