뼈를 미러링하는 방법?

본 미러 옵션을 찾을 수 없습니다.

약 2 년 전에 블렌더를 사용했을 때 미러 옵션이 숨겨져있었습니다. 리그 / 오브젝트 패널이지만 이제 명확한 옵션이 표시되지 않습니다.

2.7+에서 골격을 미러링하려면 어떻게해야합니까?

답변

편집 모드로 들어간 다음 T 를 눌러 도구 패널을 엽니 다. 옵션 아래에 X 축 미러 확인란이 있습니다. 확인

여기에 이미지 설명을 입력하세요.

이 옵션은 X 축을 가로 지르는 뼈에서 수행되는 작업을 미러링합니다. 설정을 위해 리그의 경우 뼈에 왼쪽 또는 오른쪽 접미사 (예 : .R / .L, _R / _L 또는 _right / _left…)를 지정하고 나머지 이름이 일치하는지 확인합니다. 가운데에있는 뼈에는 접미사가 필요하지 않습니다. 미러링되지 않기 때문입니다.

선물

댓글

  • 대단합니다. 그 작은 탭도 눈치 채지 못했습니다. 그는 ' s jus 조용히 숨는 거 아니야. ' TY
  • 탭으로 인해 슬픔이 사라지지 않습니다 … 사용성 문제를 해결해야합니다 … 🙁 그런 일이 없었습니다.

답변

Blender 2.79b

도구 상자의 x 축 옵션을 사용하여 미러링하면 양쪽에 대해 각 뼈의 이름을 수동으로 지정해야한다는 사실을 방금 발견했습니다. 인간, 인간형 캐릭터 또는 가장 좋은 방법은 x 축 옵션을 확인하지 않고 아래 단계를 따르는 것입니다.

  1. 편집 모드, 한쪽에 미러링 할 모든 뼈 (팔, 다리, 손 손가락)를 선택합니다. )
  2. 미러링 할 각 본 이름이 LEFT를 의미하는 .L (예 : hand.L)로 끝나는 지 확인합니다. 이것은 매우 중요합니다!
  3. 커서가 중앙에 있는지 확인합니다 (Shift + C).
  4. 커서가베이스에 위치하도록 메시도 중앙에 있어야합니다.
  5. W를 누르고 대칭 화를 선택합니다 (복제는 자동).
  6. 이제 뼈가 미러링되고 이름이 자동으로 확장자 .R (오른쪽을 나타냄)로 업데이트되었습니다.

완료되었습니다!

댓글

  • 또는 (v2.79에서) W > Symmetrize를 사용할 수 있습니다. 위의 모든 것을 한 번에.
  • 대칭 화 옵션을 시도하면 X 축이 아닌 Y 축과 함께 복제되는 것 같습니다. 처음에는 내 리그가 ' 캐릭터의 앞쪽이 Y 축을 향하도록 올바르게 방향이 지정되지 않았기 때문일 수 있다고 생각했지만 (이전에 X 축을 아래로 향했던 것처럼) 모든 것을 회전시킨 후에도 내가 원하는 것과 반대 차원으로 대칭됩니다. 아이디어가있으세요?

답변

. .. 양쪽에 대해 각 뼈의 이름을 수동으로 지정해야합니다 …

예, 큰 문제가 될 수 있습니다.
DAZ에서
.fbx 또는 Collada를 통해 G2f 캐릭터를 가져온 것으로 밝혀지면 블렌더에서
DAZ 뼈대가 완벽하게 나오지 않는 것을 발견했습니다.
제 경우에는 손가락 뼈를 조정해야합니다.
충분히 부지런한 후에는 왼손 등을 달성 할 수 있습니다.
그런 다음 컴퓨터가 모든 것을 반복 하고 싶습니다. 오른쪽에
자동으로 미세 조정됩니다.

표준 블렌더 옵션을 사용해도 아무 일도 일어나지 않습니다.
G2f (ditto V4) 용 DAZ 뼈대는
왼쪽 및 오른쪽 뼈의 이름이 l 또는 r의 접두사 .

수정 : V4는 해당 규칙을 따랐습니다. Genesis 1,2,3 그림은 DAZ Studio에서 볼 수 있듯이
접두사 왼쪽및 오른쪽을 사용합니다.
전송 프로세스 는 Collada 또는 .fbx를 통해 ,
는 블렌더 측에서 볼 때 접두사 l 또는 r,
및 관련 정점 그룹에 대한 ditto가되도록 만듭니다.

물론 대칭 화를 위해
실제로 뼈의 점수 이름을 바꾸고 싶지는 않습니다.
그런 다음 다시 이름을 바꿔야합니다.
정점 그룹과 일치하십시오!

일부 Python을 제거하는 경우 :

# # Given: selected armature, with left/right bone names starting with l,r # (as is the case of DAZ Victoria 4 and Genesis2) or L,R # (Blender assumes they end in .L,.R) # # Does: symmetrizes armature, by copying coordinates of head,tail of each left EditBone # to corresponding right EditBone, but with x-axis mirrored, and copies roll with opposite sign. # # Author, Tom Telos, presents this in June 2017 to the Public Domain, as experimental code, no warranties. # import bpy #, bmesh , math , mathutils Arm = bpy.context.scene.objects.active if (Arm.type != "ARMATURE") : raise RuntimeError("Please select your armature; quit().") bpy.ops.object.mode_set(mode="EDIT") #"EDIT_ARMATURE" not available, implicit. #print( "Armature name: " , Arm.name , "\n" ) lNames = [] rNames = [] for EdBone in Arm.data.edit_bones : NamePrx = EdBone.name[0] if (NamePrx == "l" or NamePrx == "L") : lNames.append(EdBone.name) if (NamePrx == "r" or NamePrx == "R") : rNames.append(EdBone.name) #print( lNames , rNames , "\n" ) NamePairs = [] for iNamePair in range( len(lNames) ) : lName = lNames[ iNamePair ] rR = "r" if (lName[0] == "l") else "R" rName = rR + lName[1:] if rName in rNames : NamePairs.append([ lName , rName ]) #print( NamePairs , "\n" ) for NamePair in NamePairs : lName = NamePair[0] rName = NamePair[1] Arm.data.edit_bones[rName].head = Arm.data.edit_bones[lName].head Arm.data.edit_bones[rName].head[0] *= -1 Arm.data.edit_bones[rName].tail = Arm.data.edit_bones[lName].tail Arm.data.edit_bones[rName].tail[0] *= -1 Arm.data.edit_bones[rName].roll = - Arm.data.edit_bones[lName].roll # bpy.ops.object.mode_set(mode="OBJECT") 

답변

대본을 보내 주셔서 감사합니다. 많은 도움이되었습니다. 🙂 약간의 조정을했습니다. 이름의 미리 정의 된 부분을 사용하여 왼쪽과 오른쪽 부분을 구분할 수 있도록했습니다. 제 예에서 : “LT”와 “RT”를 사용하고 있습니다 (하지만 내 선택은 아님).

수정 된 스크립트는 다음과 같습니다.

# # Given: selected armature, with left/right bone names starting with l,r # (as is the case of DAZ Victoria 4 and Genesis2) or L,R # (Blender assumes they end in .L,.R) # # Does: symmetrizes armature, by copying coordinates of head,tail of each left EditBone # to corresponding right EditBone, but with x-axis mirrored, and copies roll with opposite sign. # # Author, Tom Telos, presents this in June 2017 to the Public Domain, as experimental code, no warranties. # # Updated by Fouad jeniani October 2018: # to: support any predefined Left Right text anywhere in the bone name # for now user has to enter manually the names in scripts # import bpy #, bmesh , math , mathutils Arm = bpy.context.scene.objects.active if (Arm.type != "ARMATURE") : raise RuntimeError("Please select your armature; quit().") bpy.ops.object.mode_set(mode="EDIT") #"EDIT_ARMATURE" not available, implicit. print( "Armature name: " , Arm.name , "\n" ) lNames = [] rNames = [] for EdBone in Arm.data.edit_bones : if EdBone.name.find("LT") != -1 : lNames.append(EdBone.name) if EdBone.name.find("RT") != -1 : rNames.append(EdBone.name) print( lNames , rNames , "\n" ) NamePairs = [] for iNamePair in range( len(lNames) ) : lName = lNames[ iNamePair ] rR = "RT" rName = lName.replace("LT","RT") if rName in rNames : NamePairs.append([ lName , rName ]) print( NamePairs , "\n" ) for NamePair in NamePairs : lName = NamePair[0] rName = NamePair[1] Arm.data.edit_bones[rName].head = Arm.data.edit_bones[lName].head Arm.data.edit_bones[rName].head[0] *= -1 Arm.data.edit_bones[rName].tail = Arm.data.edit_bones[lName].tail Arm.data.edit_bones[rName].tail[0] *= -1 Arm.data.edit_bones[rName].roll = - Arm.data.edit_bones[lName].roll # bpy.ops.object.mode_set(mode="OBJECT") 

도움이 될 것입니다 🙂

답글 남기기

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