アバターのシーン配置と、胸のブレンドシェイプに関する条件を提供します。 Editor Event Handlers と VRChat SDK が必要です。
VRChat SDK の Descriptor 型を検出すると、条件は自動登録されます。 導入と管理画面の操作は、リポジトリの README を参照してください。
AvatarAddedToScene:Descriptor を持つアバター Prefab が、通常シーンに新しく配置された通知です。Avatar がアバターのルートです。AvatarHasBreastBlendShapes:配置入力に対応するアバター側に、胸シェイプがある場合の通知です。Avatar が編集範囲です。AvatarObjectWithBreastBlendShapesAdded:アバターの階層へ作成・移動された対象に、胸シェイプがある場合の通知です。直下に限りません。Avatar が編集範囲、AddedObject が追加対象です。胸シェイプは、名前に breast を含むものを大文字・小文字を区別せず探します。
非アクティブな対象も探索し、Armature 以下と入れ子の別アバターを除外します。
アバター側の判定では追加対象の階層も除外し、追加対象だけに胸シェイプがある場合は成立させません。
どちらの胸シェイプ条件も、1つ見つかれば探索を終了します。 具体的なレンダラー・シェイプの探索、衣装の判定、対応付けは利用側で行ってください。
アバター側と追加対象側の両方に胸シェイプがある場合に、子オブジェクトを作る例です。
シーンへのアバター配置だけを扱う場合は、AvatarAddedToScene を単一購読します。
Assets/ExampleFeature/Editor/ExampleFeature.Editor.asmdef を作成します。
{
"name": "ExampleFeature.Editor",
"references": ["EditorEventHandlers.Editor", "AvatarPlacement.Editor"],
"includePlatforms": ["Editor"],
"autoReferenced": true
}
次のコードを Assets/ExampleFeature/Editor/ExampleHandler.cs に保存します。
using AvatarPlacement.Editor;
using EditorEventHandlers.Editor;
using UnityEditor;
[InitializeOnLoad]
internal static class ExampleRegistration
{
private static readonly EventSubscription Subscription;
static ExampleRegistration()
{
Subscription = EditorEvents.SubscribeAll(new Handler(), new[]
{
typeof(AvatarHasBreastBlendShapes),
typeof(AvatarObjectWithBreastBlendShapesAdded)
});
}
private sealed class Handler : IEventHandler<CompositeEvent>
{
public string Id => "example.breast-shape-feature";
public HandlerResult Execute(HandlerContext<CompositeEvent> context)
{
context.CheckDeadline();
if (!context.Event.TryGet<AvatarObjectWithBreastBlendShapesAdded>(out var added)
|| added.AddedObject == null)
return HandlerResult.Skip("Target is unavailable.");
if (context.Root.transform.Find("ExampleAdornment") != null)
return HandlerResult.Skip("Already configured.");
context.CreateChild("ExampleAdornment");
return HandlerResult.Success();
}
}
}
AvatarPlaced は AvatarAddedToScene に変更しました。Avatar プロパティとシーン配置の判定範囲は同じです。
AvatarChildBreastBlendShapesPlaced と検出一覧型 BreastBlendShape は廃止し、追加対象の存在判定は AvatarObjectWithBreastBlendShapesAdded に置き換えました。
登録・実行の基本 / シーン配置の通知 / アバター側の条件 / 追加対象の通知
MIT。
io.github.merciagrimauge.avatar-placement
0.2.4
2022.3 以降
なし
なし