Rotar objeto en el eje entre dos puntos

Tengo un objeto y dos puntos que necesito para rotar todo el objeto. Creé dos vacíos para los puntos de rotación y necesito rotarlos alrededor de un eje formado por la línea entre los dos vacíos. Intenté agregar restricciones de objeto en vano. En la imagen de abajo, necesito rotar el triángulo alrededor del eje de la línea roja.

Comentarios

  • Similar a otra pregunta. Puedes probar de esta manera .
  • Desde que hice esta pregunta, Blender 2.8 introdujo esto como una característica adecuada y de fácil acceso. Desplácese hacia abajo más allá de las respuestas anteriores para obtener una solución fácil. (Por cierto, no ‘ t rechace las respuestas antiguas; son útiles para cualquiera que utilice una versión anterior de Blender).

Respuesta

Tenemos varias orientaciones de transformación disponibles dentro de la vista 3D que determinan en qué dirección se mueve un objeto a lo largo de un eje dado.

ingrese la descripción de la imagen aquí

Cuando estas opciones no se ajusten a la tarea, puede definir una orientación personalizada . Esta opción está disponible en la barra lateral de propiedades N

ingrese la descripción de la imagen aquí

Para ponerlo simplemente, si agrega un objeto y lo gira 23.6 grados en el eje zy luego lo usa para definir una orientación personalizada, puede usar esa orientación para mover, rotar o escalar otro objeto a lo largo del mismo eje xey que será a 23,6 grados del eje xey del mundo.

Para usar esto cuando tiene dos vacíos en su lugar –

  1. Seleccione un emp y presione Shift S y seleccione Cursor to Selected.
  2. Agregue un plano y escala a cero en el eje x ( S X 0 Enter ).
  3. Habilite el ajuste al vértice ingrese la descripción de la imagen aquí en el encabezado 3D.
  4. Asegúrese de que la vista esté alineada con un ajuste preestablecido (izquierda, superior, frontal …) que mire directamente a los dos vacíos de modo que el único ángulo entre dos es el ángulo que desea definir. Si desea definir una orientación que altere más de un eje, puede repetir el siguiente paso varias veces desde tres vistas para obtener la alineación correcta.
  5. Comience a rotar el plano R y mueva el cursor sobre el segundo vacío. Cuando se muestra un círculo alrededor del centro del vacío que muestra que se está ajustando a él, acepte la rotación. La rotación del plano ahora coincidirá con el ángulo entre los dos vacíos.
  6. Muestre la barra lateral de propiedades y busque el panel Transformar orientaciones, cree una nueva orientación haciendo clic en ingresar imagen descripción aquí.

El plano ahora se puede eliminar y la nueva orientación de transformación se puede usar para mover o rotar otros objetos a lo largo de un eje paralelo a una línea entre los dos vacíos .

Cuando se selecciona una orientación personalizada, X X , Y Y y Z Z Los atajos que normalmente se utilizan para moverse en el eje local utilizarán el eje personalizado en lugar del eje local.

Respuesta

En realidad, no es necesario crear los dos vacíos si solo va a formar un eje imaginario. Creo que la operación relativamente simple y rápida aquí sería:

Si quieres hacerlo en modo de edición :

  1. Seleccione todos los elementos que desea rotar, luego mantenga presionado Shift y haga clic en ese borde dos veces para activarlo;
  2. Alt . (punto), Mayús Teclado numérico 1 ;
  3. R para rotar como desee, luego Enter . Listo.

ingrese la descripción de la imagen aquí


Si desea hacerlo en Modo de objeto:

  1. Seleccione uno o más objetos, asegúrese de que el objeto de destino esté seleccionado en último lugar. Seleccione el borde de destino en el modo Editar ;
  2. Shift S Cursor a Seleccionado, . (punto), Shift Teclado numérico 1 ;
  3. Volver a Objeto modo, R para rotar, Enter . Listo.

ingrese la descripción de la imagen aquí

PS: Por supuesto, puede presionar Alt barra espaciadora para mostrar la Normal sistema de coordenadas para juzgar fácilmente, o CtrlAlt Barra espaciadora para crear / almacenar una nueva orientación de transformación basada en eso para su uso posterior, tal como otros mencionaron. Solo quiero sugerir la forma más rápida y precisa.

Comentarios

  • Para aquellos que ‘ no lo saben, Alt+. cambia el punto de pivote al elemento activo. Puede ver las otras opciones de pivote en el menú junto a las opciones de sombreado.

Responder

Modo manual

Primero, seleccione uno de los vacíos y presione SHIFT + S Cursor to Selected. ingrese la descripción de la imagen aquí

luego MMB para rotar la vista hasta que los dos vacíos se alineen. ingrese la descripción de la imagen aquí

Ahora, presione . (punto) para establecer el punto de pivote en el cursor 3D. Finalmente, seleccione el objeto y presione R para rotar.

Pythonic Way

Este script usa el vector entre los dos vacíos y la rotación alrededor del Cursor 3D .

import bpy from mathutils import Vector def main(): C = bpy.context D = bpy.data #rotation set to 90 degrees (rotation in radians) rotation = (6.283185/4) #Save objects by their presumed names empty0 = D.objects["Empty"] empty1 = D.objects["Empty.001"] object_to_rot = D.objects["Suzanne"] #################################################### #set pivot point to be one of the empties by temporarily placing cursor there #use of Vector() here is to avoid copying reference to cursor location old_cursor_loc = Vector(CursorAccess.getCursor()) CursorAccess.setCursor( empty0.location ) CursorAccess.findSpace().pivot_point = "CURSOR" #make object the active object C.scene.objects.active = object_to_rot #get axis we rotate around rotation_axis = empty1.location - empty0.location #override the rotate operator override = get_override("VIEW_3D", "WINDOW") bpy.ops.transform.rotate( override, value=rotation, axis=rotation_axis ) #restore old cursor position CursorAccess.setCursor( old_cursor_loc ) def get_override(area_type, region_type): """Returns a dictionary which can be used to override certain bpy operators""" for area in bpy.context.screen.areas: if area.type == area_type: for region in area.regions: if region.type == region_type: override = {"area": area, "region": region} return override #error message if the area or region wasn"t found raise RuntimeError("Wasn"t able to find", region_type," in area ", area_type, "\n Make sure it"s open while executing script.") class CursorAccess: """This code allows you to set and get the cursor location. It came from the addon Cursor Control http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/3D_interaction/Cursor_Control""" @classmethod def findSpace(cls): area = None for area in bpy.data.window_managers[0].windows[0].screen.areas: if area.type == "VIEW_3D": break if area.type != "VIEW_3D": return None for space in area.spaces: if space.type == "VIEW_3D": break if space.type != "VIEW_3D": return None return space @classmethod def setCursor(cls,coordinates): spc = cls.findSpace() spc.cursor_location = coordinates @classmethod def getCursor(cls): spc = cls.findSpace() return spc.cursor_location if __name__=="__main__": main() 

Responder

Puede hacer esto con Mesh Align Plus (mi complemento). Observe los pasos en el GIF o lea la versión de texto a continuación (grabé la configuración que describió anteriormente y luego un par de ejemplos más generalizados en caso de que quiera hacer algo similar):

ingrese la descripción de la imagen aquí

La función que está buscando es el Eje rápido Rotar operador en la Vista 3D Panel de herramientas (T)> Pestaña Mesh Align Plus , en su propio panel.

  1. Elija un eje de destino en el modo de edición (Tab), usando Mayús + clic derecho para seleccionar los dos bordes verticales (déjelos seleccionados y asegúrese de Fuente de captura automática está marcado, es por defecto)

  2. Escriba el ángulo por el cual rotar por Cantidad , y con el objeto que desea aplicar el rotación al seleccionado, presione Aplicar a: Objeto

Responder

Elija un eje de destino (borde) en el modo de edición.

Coloque el cursor 3D en el borde seleccionado ( Shif t + S y haga clic en Cursor para seleccionar ).

Establezca el cursor 3D como punto de pivote ( botón de período del teclado ).

Abra el estante Propiedades N y vaya al despliegue Orientación de Tranfsorm en la parte inferior del panel.

Haga clic en el botón «más» para crear una nueva orientación de transformación (o presione Ctrl + Alt + Espacio ) .
Asegúrese de que la orientación creada sea la activa.

Ahora puede girar alrededor de ese borde presionando R y Y + Y (a lo largo del eje Y local de ese borde dado).

Respuesta

Blender 2.8+

Esto es mucho más simple en las versiones recientes de Blender.

Video de demostración

En el modo de edición, seleccione sus dos puntos (en Modo de selección de vértice ) o su borde (en el modo de Selección de borde ).

Abra la ventana emergente Orientación de transformación :

Transformar la orientación

Luego haga clic en Crear orientación » + » botón:

Crear orientación

Esto crea una orientación de transformación personalizada, probablemente denominada » Edge » de forma predeterminada. Asegúrese de que esté seleccionado cuando quiera usarlo, o vuelva al valor predeterminado de Global cuando haya terminado. También puedes eliminar la orientación de transformación personalizada con » X » junto a su nombre:

Transformación personalizada

Cuando su orientación de transformación personalizada está activa, puede rotar a lo largo de su eje Y con R Y o utilizar el gizmo Rotar :

Girar gizmo Girar gizmo en uso

Responder

No me gustan las respuestas existentes. Primero, te diré por qué. Luego, ofreceré mi propia solución.

Primero, esto no es algo para lo que se requieran complementos, y la instalación de complementos cuando se puede hacer simplemente no es necesario.

En segundo lugar, la rotación alrededor de los puntos de pivote produce una interpolación extraña cuando se usa en una animación. La razón de esto es que no es una rotación recta, sino una combinación de rotación y traslación. Hay ocasiones en las que funcionará bien, dependiendo de los ejes locales, pero otras veces funcionará de manera confusamente incorrecta.

En tercer lugar, la rotación sobre ejes arbitrarios también puede producir una interpolación extraña cuando se utilizan ángulos de Euler (y la ausencia de huesos en sus imágenes sugiere que está utilizando ángulos de Euler para sus transformaciones).) Girar sobre ejes arbitrarios cuando se usan ángulos de Euler también puede generar una rareza confusa, que se demuestra mejor con el » cubo de rubik » animaciones.

Entonces, ¿cuál es la solución que recomendaría? Básicamente, con lo que comenzó, pero no pudo terminar: un par de vacíos y restricciones. Comience con el par de vacíos que tiene, uno en cada punto que define su eje. Aún no hay nada parental. A continuación, asigne a uno vacío un seguimiento apuntando al otro vacío. Finalmente, pare el objeto que desea rotar al vacío restringido. Para rotar el objeto, rote el padre vacío en su eje Y local. (Es posible que desee darle a estos vacíos transformaciones bloqueadas para evitar la rotación en ejes y posiblemente traducción / escala; es posible que desee establecer deltas para ello también.)

Esto no requiere complementos, utiliza solo herramientas estándar de Blender, y le brinda una buena interpolación independientemente del modo de transformación y los ejes, porque toda su rotación estará en un eje local de su vacío.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *