Girar objeto no eixo entre dois pontos

Tenho um objeto e dois pontos que preciso girar ao redor do objeto inteiro. Criei dois vazios para os pontos de rotação e preciso girá-los em torno de um eixo formado pela linha entre os dois vazios. Tentei adicionar restrições de objeto sem sucesso. Na imagem abaixo, preciso girar o triângulo em torno do eixo da linha vermelha.

Comentários

  • Semelhante a outra pergunta. Você pode tentar desta forma .
  • Já que fiz esta pergunta, o Blender 2.8 introduziu isso como um recurso adequado e facilmente acessível. Percorra as respostas antigas para encontrar a solução mais fácil. (Não ‘ t downvote respostas antigas, a propósito – elas são úteis para qualquer pessoa que use uma versão mais antiga do Blender.)

Resposta

Temos várias orientações de transformação disponíveis na visualização 3D que determinam de que maneira um objeto se move ao longo de um determinado eixo.

insira a descrição da imagem aqui

Quando essas opções não se encaixam na tarefa, você pode definir uma orientação personalizada . Esta opção está disponível na barra lateral de propriedades N

insira a descrição da imagem aqui

Para colocá-la simplesmente, se você adicionar um objeto e girá-lo 23,6 graus no eixo z e depois usá-lo para definir uma orientação personalizada, você pode usar essa orientação para mover, girar ou dimensionar outro objeto ao longo do mesmo eixo xey que será a 23,6 graus do eixo xey mundial.

Para usar isso quando você tiver dois vazios no lugar –

  1. Selecione um emp ty e pressione Shift S e selecione Cursor para selecionado.
  2. Adicione um plano e escala para zero no eixo x ( S X 0 Digite ).
  3. Ative o ajuste ao vértice insira a descrição da imagem aqui no cabeçalho 3D.
  4. Certifique-se de que a visualização esteja alinhada a uma predefinição (esquerda, topo, frente …) que está olhando diretamente para os dois vazios de modo que o único ângulo entre dois é o ângulo que você deseja definir. Se você deseja definir uma orientação que altera mais de um eixo, você pode repetir a próxima etapa várias vezes a partir de três vistas para obter o alinhamento correto.
  5. Comece girando o plano R e mova o cursor sobre o segundo vazio. Quando um círculo é mostrado em torno do centro do vazio, mostrando que está se encaixando nele, aceite a rotação. A rotação do plano agora corresponderá ao ângulo entre os dois vazios.
  6. Mostre a barra lateral de propriedades e encontre o painel Orientações de transformação, crie uma nova orientação clicando em inserir imagem descrição aqui.

O plano agora pode ser excluído e a nova orientação de transformação pode ser usada para mover ou girar outros objetos ao longo de um eixo paralelo a uma linha entre os dois vazios .

Quando uma orientação personalizada é selecionada, o X X , Y Y e Z Z normalmente usados para mover no eixo local usarão o eixo personalizado em vez do eixo local.

Resposta

Na verdade, não há necessidade de criar os dois vazios se você for apenas formar um eixo imaginário. Acho que a operação relativamente simples e rápida aqui seria:

Se você quiser fazer no modo de edição :

  1. Selecione todos os elementos que deseja girar, segure Shift e clique na borda duas vezes para torná-la ativa;
  2. Alt . (ponto final), Shift Numpad 1 ;
  3. R para girar como você deseja, então Enter . Feito.

insira a descrição da imagem aqui


Se desejar fazer em Modo de objeto:

  1. Selecione um ou mais objetos, certifique-se de que o objeto de destino seja selecionado por último. Selecione a aresta de destino em Editar modo;
  2. Shift S Cursor para selecionado, . (ponto final), Shift Numpad 1 ;
  3. Voltar para Objeto modo, R para girar, Enter . Pronto.

insira a descrição da imagem aqui

PS: Claro, você pode pressionar Alt Barra de espaço para exibir como Normal sistema de coordenação para julgamento fácil ou CtrlAlt Barra de espaço para criar / armazenar uma nova orientação de transformação com base nela para uso posterior, assim como outros mencionaram. Só quero sugerir a maneira mais rápida e precisa.

Comentários

  • Para aqueles que não ‘ sabem, Alt+. muda o ponto de pivô para o elemento ativo. Você pode ver as outras opções de pivô no menu ao lado das opções de sombreamento.

Resposta

Maneira manual

Primeiro, selecione um dos recipientes vazios e pressione SHIFT + S Cursor to Selected. insira a descrição da imagem aqui

e depois MMB para girar a visualização até que os dois vazios se alinhem. insira a descrição da imagem aqui

Agora, pressione . (ponto final) para definir o ponto de pivô para o cursor 3D. Finalmente, selecione o objeto e pressione R para girar.

Caminho Pythônico

Este script usa o vetor entre os dois vazios e rotação em torno do 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() 

Resposta

Você pode fazer isso com Mesh Align Plus (meu complemento). Observe as etapas no GIF ou leia a versão em texto abaixo (gravei a configuração que você descreveu acima e, a seguir, alguns exemplos mais generalizados, caso você queira fazer algo semelhante):

insira a descrição da imagem aqui

O recurso que você está procurando é o Quick Axis Operador Girar na Visualização 3D Painel de ferramentas (T)> Guia Mesh Align Plus , em seu próprio painel.

  1. Escolha um eixo de destino no modo de edição (Tab), usando shift + clique com o botão direito para selecionar os dois verts de aresta (deixe-os selecionados e certifique-se de Auto Grab Source está marcada, é por padrão)

  2. Digite o ângulo para girar para Quantidade , e com o objeto que você deseja aplicar o rotação para selecionado, pressione Aplicar a: Objeto

Resposta

Escolha um eixo alvo (aresta) no modo Editar.

Posicione o cursor 3D na aresta selecionada ( Shif t + S e clique em Cursor para Selecionado ).

Defina o cursor 3D como ponto de pivô ( botão de período do teclado ).

Abra a prateleira Propriedades N e vá para o rollout Orientação do tranfsorm na parte inferior do painel.

Clique no botão “mais” para criar uma nova orientação de transformação (ou pressione Ctrl + Alt + Espaço ) .
Certifique-se de que a orientação criada está ativa.

Agora você pode girar em torno dessa borda pressionando R e Y + Y (ao longo do eixo Y local dessa borda fornecida).

Resposta

Blender 2.8+

Isso é muito mais simples nas versões recentes do Blender.

Demonstração em vídeo

No modo de edição, selecione seus dois pontos (em modo Vertex Select ) ou sua aresta (no modo Edge Select ).

Abra o popover Transform Orientation :

Transformar orientação

Em seguida, clique em Criar orientação + ” botão:

Criar orientação

Isso cria uma orientação de transformação personalizada, provavelmente denominada ” Edge ” por padrão para você. Certifique-se de que está selecionado quando quiser usá-lo ou volte para o padrão Global quando terminar. Você também pode excluir a orientação de transformação personalizada com o ” X ” ao lado do nome:

Transformação personalizada

Quando sua orientação de transformação personalizada está ativa, você pode girar ao longo de seu eixo Y com R Y ou usar o gizmo Girar :

Girar gizmo Girar gizmo em uso

Resposta

Não gosto das respostas existentes. Em primeiro lugar, direi por quê. Então, vou oferecer minha própria solução.

Primeiro, isso não é algo para o qual nenhum complemento seja necessário, e instalar complementos quando isso puder ser feito simplesmente não é necessário.

Em segundo lugar, a rotação em torno dos pontos de pivô oferece uma interpolação estranha quando usada em uma animação. A razão para isso é porque não é uma rotação reta, mas uma combinação de rotação e translação. Às vezes funciona bem, dependendo dos eixos locais, mas às vezes funciona confusamente errado.

Terceiro, a rotação em torno de eixos arbitrários também pode dar uma interpolação estranha, ao usar ângulos de Euler (e a ausência de ossos em suas fotos sugere que você está usando ângulos de Euler para suas transformações.) Girar em torno de eixos arbitrários ao usar ângulos de Euler também pode causar estranhezas confusas – melhor demonstrado por ” cubo de rubik “” animações.

Então, qual é a solução que eu defendo? Basicamente, o que você começou, mas não conseguiu terminar: um par de vazios e restrições. Comece com o par de vazios que você tem, um em qualquer ponto que define o seu eixo. Nada foi criado ainda. Em seguida, dê a um vazio um amortecedor trilha visando o outro vazio. Por fim, pareie o objeto que deseja girar para o vazio restrito. Para girar o objeto, gire o objeto parente vazio em seu eixo Y local. (Você pode desejar dar a este vazio bloqueios de transformação para evitar a rotação eixos e possivelmente translação / escala; você pode querer definir deltas para ele também.)

Isso não requer complementos, usando apenas ferramentas padrão do Blender, e oferece uma boa interpolação, independentemente do modo de transformação e eixos, porque toda a sua rotação estará em um eixo local do seu vazio.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *