두 점 사이의 축에서 개체 회전

개체 하나와 전체 개체를 회전하는 데 필요한 두 점이 있습니다. 회전 지점에 대해 두 개의 빈을 만들었고 두 빈 사이의 선으로 형성된 축을 중심으로 회전해야합니다. 나는 아무 소용이없는 객체 제약을 추가하려고했습니다. 아래 이미지에서 빨간색 선의 축을 중심으로 삼각형을 회전해야합니다.

댓글

  • 다른 질문과 유사합니다. 이 방법 을 시도해 볼 수 있습니다.
  • 이 질문을 한 이후 Blender 2.8은이 기능을 적절하고 쉽게 액세스 할 수있는 기능으로 도입했습니다. 쉬운 해결책을 찾으려면 이전 답변을지나 아래로 스크롤하십시오. (그런데 ' 이전 답변에 반대표를 던지지 마세요. 이전 버전의 Blender를 사용하는 모든 사람에게 유용합니다.)

Answer

주어진 축을 따라 개체가 이동하는 방식을 결정하는 3D보기 내에서 사용할 수있는 여러 변환 방향이 있습니다.

여기에 이미지 설명 입력

이러한 옵션이 작업에 맞지 않으면 사용자 지정 방향 을 정의 할 수 있습니다. .이 옵션은 속성 사이드 바에서 사용할 수 있습니다. N

여기에 이미지 설명 입력

입력하려면 간단히 개체를 추가하고 z 축에서 23.6도 회전 한 다음이를 사용하여 사용자 지정 방향을 정의하면 해당 방향을 사용하여 동일한 x 및 y 축을 따라 다른 개체를 이동, 회전 또는 배율 조정할 수 있습니다. 세계 x 및 y 축에서 23.6도.

두 개의 빈 공간이있을 때 사용하려면-

  1. 하나의 emp를 선택하십시오. ty를 누른 다음 Shift S 를 누르고 커서를 선택 항목으로 선택합니다.
  2. 평면을 추가하고 x 축 ( S X 0 Enter ).
  3. 정점에 스냅 활성화 이미지 설명 입력 여기 3D 헤더에 있습니다.
  4. 뷰가 두 개의 빈 공간을 똑바로 바라 보는 사전 설정 (왼쪽, 상단, 앞 …)에 정렬되어 2는 정의하려는 각도입니다. 둘 이상의 축을 변경하는 방향을 정의하려면 세 가지보기에서 다음 단계를 여러 번 반복하여 정렬을 올바르게 할 수 있습니다.
  5. 평면 회전 시작 R 및 두 번째 빈 공간 위로 커서를 이동합니다. 빈 중심 주위에 원이 표시되면 스냅되고 있음을 나타내는 회전을 수락합니다. 이제 평면의 회전이 두 빈 공간 사이의 각도와 일치합니다.
  6. 속성 사이드 바를 표시하고 Transform Orientations 패널을 찾은 다음 입력 이미지를 클릭하여 새 방향을 만듭니다. 여기에 설명.

이제 평면을 삭제할 수 있으며 새 변환 방향을 사용하여 두 빈 사이의 선에 평행 한 축을 따라 다른 개체를 이동하거나 회전 할 수 있습니다. .

사용자 정의 방향을 선택하면 X X , Y Y Z Z 일반적으로 로컬 축에서 이동하는 데 사용되는 단축키는 로컬 축 대신 사용자 지정 축을 사용합니다.

Answer

실제로 가상의 축을 형성하려는 경우 두 개의 빈 공간을 만들 필요가 없습니다. 상대적으로 간단하고 빠른 작업은 다음과 같습니다.

편집 모드 :

  1. 회전하려는 모든 요소를 선택한 다음 Shift 를 누른 상태에서 해당 가장자리를 두 번 클릭하여 활성화합니다.
  2. Alt . (마침표), Shift 숫자 키패드 1 ;
  3. R 원하는대로 회전하려면 Enter 를 누르십시오. 완료되었습니다.

여기에 이미지 설명 입력


개체 모드 :

  1. 하나 이상의 개체를 선택하고 대상 개체가 마지막에 선택되었는지 확인합니다. 편집 모드에서 대상 가장자리를 선택합니다.
  2. Shift S 커서 선택, . (마침표), Shift 숫자 1 ;
  3. 개체 모드, 회전 할 R , Enter . 완료되었습니다.

여기에 이미지 설명 입력

PS : 물론 Alt 스페이스 바 를 눌러 일반 쉬운 판단을위한 조정 시스템 또는 Ctrl Alt 스페이스 바 는 다른 사람들이 언급했듯이 추가 사용을 위해 새로운 변환 방향을 생성 / 저장합니다. 가장 빠르고 정확한 방법을 제안하고 싶습니다.

댓글

  • ' 모르는 사용자를 위해 Alt+.는 피벗 포인트를 활성 요소로 변경합니다. 음영 옵션 바로 옆에있는 메뉴에서 다른 피벗 옵션을 볼 수 있습니다.

답변

수동 방법

먼저, 빈 공간 중 하나를 선택하고 SHIFT + S Cursor to Selected를 누르십시오. 여기에 이미지 설명을 입력

그런 다음 MMB 로 두 개의 빈 공간이 정렬 될 때까지보기를 회전합니다. 여기에 이미지 설명 입력

이제 를 누릅니다. (마침표)를 눌러 피벗 포인트를 3D 커서로 설정합니다. 마지막으로 개체를 선택하고 R 를 눌러 회전합니다.

Pythonic Way

이 스크립트는 두 개의 빈 공간 사이의 벡터와 3D 커서를 중심으로 회전 을 사용합니다. p>

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() 

답변

Mesh Align Plus (내 애드온). GIF의 단계를 보거나 아래의 텍스트 버전을 읽으십시오 (위에서 설명한 설정을 기록한 다음 비슷한 작업을 수행하려는 경우를 대비하여 몇 가지 일반적인 예제를 기록했습니다).

여기에 이미지 설명 입력

원하는 기능은 Quick Axis입니다. 3D보기 도구 패널 (T)> 메시 정렬 플러스 탭 의 회전 연산자는 자체 패널에 있습니다. p>

  1. 편집 모드 (Tab)에서 대상 축을 선택합니다. Shift + 오른쪽 클릭을 사용하여 두 개의 가장자리 정점을 선택합니다 (선택된 상태로두고 Auto Grab Source 이 선택되어 있으며 기본적으로 설정되어 있습니다.)

  2. Amount 에 대해 회전 할 각도를 입력하고 적용 할 개체와 함께 선택한 항목으로 회전, 적용 대상 : 개체

답변

편집 모드에서 대상 축 (가장자리)을 선택합니다.

3D 커서를 선택한 가장자리에 스냅합니다 ( Shif t + S 를 클릭하고 커서 선택됨 )을 클릭합니다.

3D 커서를 피벗 포인트로 설정 ( 키보드 마침표 버튼 ).

속성 선반 N 을 열고 하단에있는 Tranfsorm Orientation 롤아웃으로 이동합니다. 패널.

“더하기”버튼을 클릭하여 새 변환 방향을 만듭니다 (또는 Ctrl + Alt + Space 누르기). .
생성 된 방향이 활성 방향인지 확인합니다.

이제 R Y + Y를 눌러 해당 가장자리를 중심으로 회전 할 수 있습니다. (해당 가장자리의 로컬 Y 축을 따라)

답변

Blender 2.8 +

최근 Blender 릴리스에서는 훨씬 간단합니다.

비디오 데모

편집 모드에서 두 지점을 선택합니다 ( Vertex Select 모드) 또는 Edge ( Edge Select 모드)

Transform Orientation 팝 오버를 엽니 다.

방향 변환

그런 다음 방향 만들기 " + " 버튼 :

방향 만들기

이렇게하면 기본적으로 " Edge "라는 이름의 사용자 지정 변환 방향이 생성됩니다. 사용할 때 선택했는지 확인하거나 완료되면 기본값 인 글로벌 으로 다시 전환하세요. " X

이름 옆 :

사용자 지정 변환

사용자 지정 변환 방향이 활성화되면 R Y 를 사용하여 Y 축을 따라 회전하거나 회전 기즈모를 사용할 수 있습니다.

기즈모 회전 사용중인 기즈모 회전

응답

기존의 답변이 마음에 들지 않습니다. 먼저 이유를 말씀 드리겠습니다. 그런 다음 저만의 솔루션을 제공하겠습니다.

첫째, 이것은 애드온이 필요한 것이 아니며 단순히 할 수있을 때 애드온을 설치할 필요가 없습니다.

둘째, 피벗 포인트를 중심으로 회전하면 애니메이션에서 사용할 때 이상한 보간이 발생합니다. 그 이유는 직선 회전이 아니라 회전과 평행 이동의 조합이기 때문입니다. 로컬 축에 따라 잘 작동하는 경우가 있지만 혼란스럽게 잘못 작동하는 경우가 있습니다.

세 번째로, Euler 각도를 사용할 때 임의의 축을 중심으로 회전하면 이상한 보간이 발생할 수 있습니다. 그림에 뼈가 없다는 것은 “변환에 Euler 각도를 사용하고 있음을 나타냅니다.) 오일러 각도를 사용할 때 임의의 축을 중심으로 회전하면 쉽게 혼란 스러울 수 있습니다. " rubik의 큐브 "에서 가장 잘 보여줍니다. 애니메이션.

그러면 제가 옹호하는 해결책은 무엇입니까? 기본적으로 시작했지만 완료 할 수 없었던 것 : 한 쌍의 빈 및 제약 조건. 축을 정의하는 어느 한 지점에있는 빈 쌍으로 시작합니다. 아직 상위 항목이 없습니다. 다음으로 비어있는 항목에 감쇠 된 항목을 제공합니다. 다른 빈을 대상으로 추적합니다. 마지막으로 회전하려는 개체를 제한된 빈 개체로 부모로 지정합니다. 개체를 회전하려면 로컬 Y 축에서 부모를 빈 상태로 회전합니다. (다른 개체에서 회전을 방지하기 위해이 빈 변환 잠금을 제공 할 수 있습니다. 축 및 변환 / 크기 조정; 이에 대한 델타도 설정하는 것이 좋습니다.)

표준 블렌더 도구 만 사용하여 애드온이 필요하지 않으며 변환 모드 및 축에 관계없이 좋은 보간을 제공합니다. 모든 회전은 비어있는 하나의 로컬 축에 있습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다