骨をミラーリングする方法は?

ボーンミラーオプションが見つかりません。

約2年前にBlenderを使用したとき、ミラーオプションが隠れていました。リグ/オブジェクトパネルですが、明確なオプションが表示されません。

2.7以降でボーンをミラーリングするにはどうすればよいですか?

回答

編集モードに入り、 T を押してツールパネルを開きます。オプションの下に、 X軸ミラーというチェックボックスがあります。チェックボックスをオンにします。

ここに画像の説明を入力してください

このオプションは、X軸全体でボーンに対して実行されるアクションをミラーリングします。リグの場合は、ボーンに左側または右側のサフィックス(.R / .L、_R / _L、または_right / _left…など)を付けて、残りの名前が一致することを確認します。中央に配置されているボーンにはサフィックスは必要ありません。ミラーリングされていないためです。

Gif

コメント

  • それは素晴らしいことです。私はその小さなタブにさえ気づきませんでした。彼は' s jus静かに隠れているようなものではありません' TY
  • タブは私に悲しみの終わりを引き起こしません… それらはユーザビリティの問題を修正することになっています… :(それは決して起こりませんでした。

回答

ブレンダー2.79b

ツールボックスのx軸オプションを使用してミラーリングする場合は、両側の各ボーンに手動で名前を付ける必要があることを発見しました。人間、ヒューマノイドキャラクター、または動物の場合、最良の方法はx軸オプションをチェックするのではなく、以下の手順に従うことです。

  1. 編集モードで、片側にミラーリングするすべてのボーン(腕、脚、手の指)を選択します。 )
  2. ミラーリングする各ボーン名が.Lで終わることを確認します。これはLEFTを意味します(例:hand.L)。これは非常に重要です!
  3. カーソルが中央にあることを確認してください(Shift + C)。
  4. カーソルがメッシュのベースに配置されるように、メッシュも中央に配置する必要があります
  5. Wを押して[対称化]を選択します(複製は自動です)
  6. ボーンがミラーリングされ、名前が自動になりました拡張子.R(右を表す)で更新されました。

これで完了です。

コメント

  • または(v2.79では)W > Symmetrizeを使用できます。上記のすべてを一度に。
  • Symmetrizeオプションを試してみると、X軸ではなく、Y軸に沿って複製されているように見えます。最初は、リグが'キャラクターの正面をY軸に沿って(以前はX軸を下に向けていたため)正しく方向付けられていなかったためだと思いましたが、すべてを回転させた後でも、それは私が望むものとは反対の次元に対称化します。何かアイデアはありますか?

回答

。 ..両側の各ボーンに手動で名前を付ける必要があります…

はい、それは大きな問題になる可能性があります。
G2fキャラクターをDAZから
.fbxまたはCollada経由でインポートしたことが判明した場合、
Blenderで、
DAZアーマチュアが完璧に機能しなかったことがわかります。
私の場合、指の骨を調整する必要があります。これは、
十分な注意を払った後、たとえば左手で達成できます。
しかし、その後、コンピュータにすべてを繰り返してもらいたいのです。右側の
を自動的に微調整します。

標準のBlenderオプションを試しても、何も起こりません。
G2f(V4と同じ)のDAZアーマチュアは、
左右のボーンの名前がを使用するという規則に従っているためです。 lまたはrのプレフィックス

修正: V4はその規則に従いました。 Genesis 1,2,3の図は、DAZ Studioで示されているように、
「Left」と「Right」のプレフィックスを使用しています。
ただし、転送プロセスは、Colladaまたは.fbxを介して行われます。 、
は、Blender側から見ると、接頭辞lまたはr、
と、関連する頂点グループの同上であるようにします。

もちろん、対称化するために、
骨のスコアの名前を変更したくないので、
名前を変更する必要があります。
名前を変更する必要があります。頂点グループに一致します!

一部の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") 

願っていますそれはいくつかの助けになるでしょう:)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です