Home Creators Posts Import Register Favorites Logout

Downloads

Content

A new head bone editor for HS2 Studio. See every face bone as a sphere marker, pick one with a click, and shape it with the same hotkeys you'd reach for in Blender — no menus, no axis pickers, no sliders to fight.

Changelog v1.3

Added Timeline support.

Getting started

Select a character in Studio, press V, and yellow dots appear on every bone in their head — eyes, jaw, lashes, mouth, tongue, all of it. Hover a dot to see the bone's name. Left-click to select.

Moving bones

With a bone selected:

G — grab and drag the bone with the cursor

R — rotate the bone with the cursor

S — scale the bone by cursor distance

Left-click or Enter to confirm. Right-click or Esc to bail out and snap back to where the bone was. The bone follows the cursor directly — that's the whole controls list.

The little panel

A small window in the corner shows the bone you've got selected, plus two safety nets:

Reset to Default — undo every change to that bone, back to where it was the first time the plugin saw it.

Set Current as Default — lock the bone's current pose in as the new "default", so future resets come back here instead.

There's also a marker size slider if the dots feel too big or too small for your scene.

Stays with your scene

Everything sticks. Save your scene, close Studio, reload it tomorrow — your bone edits are exactly where you left them.

Standalone

No HSPE needed. Just KKAPI and BepisPlugins, which you already have.

Installation

Drop the DLL in your BepInEx/plugins folder. That's it.

If you want support for: Hair, Body, Clothing, Accesories and Items, check out the Pro Version

Files

Comments

Ruykiru

Can you add a store to your patreon to buy the visual bone Pro plugin? I'd rather make a single purchase than sub monthly.

Seung

Hi. I've been attempting to try this out... but no luck so far. I start StudioNeo2, add a character. I press the Visualizer hotkey (W for me, because V conflicts with "Item layer edit" plugin. The Visualizer window and the bone spheres appear. And 7 seconds later, StudioNeo2 crashes back to Windows. After many tries, the only thing I've been able to do with Visualizer is change the size of the spheres. Any idea what could be wrong? P.S. There is this in the HS2 output_log.txt: [Info :Bone Visualizer Lite] HSPE bridge initialized (assembly: HS2PE). [Error :Bone Visualizer Lite] Chained noCtrlCondition threw (suppressed): System.StackOverflowException: The requested operation caused a stack overflow. at UnityEngine.Object.IsNativeObjectAlive (UnityEngine.Object o) [0x00007] in :0 at UnityEngine.Object.CompareBaseObjects (UnityEngine.Object lhs, UnityEngine.Object rhs) [0x00024] in :0 at UnityEngine.Object.op_Inequality (UnityEngine.Object x, UnityEngine.Object y) [0x00001] in :0 at HS2BoneVisualizerLite.BoneVisualizerLitePlugin.ShouldStudioCameraIgnoreInput () [0x00013] in :0 at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <7ba07f088431485bb722f3b3373e87ee>:0 at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <7ba07f088431485bb722f3b3373e87ee>:0 at System.Delegate.DynamicInvokeImpl (System.Object[] args) [0x000e7] in <7ba07f088431485bb722f3b3373e87ee>:0 at System.MulticastDelegate.DynamicInvokeImpl (System.Object[] args) [0x00008] in <7ba07f088431485bb722f3b3373e87ee>:0 at System.Delegate.DynamicInvoke (System.Object[] args) [0x00000] in <7ba07f088431485bb722f3b3373e87ee>:0 Then this block repeats many times until crash: at HS2BoneVisualizerLite.BoneVisualizerLitePlugin.ShouldStudioCameraIgnoreInput () [0x00064] in :0 at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <7ba07f088431485bb722f3b3373e87ee>:0 at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <7ba07f088431485bb722f3b3373e87ee>:0 at System.Delegate.DynamicInvokeImpl (System.Object[] args) [0x000e7] in <7ba07f088431485bb722f3b3373e87ee>:0 at System.MulticastDelegate.DynamicInvokeImpl (System.Object[] args) [0x00008] in <7ba07f088431485bb722f3b3373e87ee>:0 at System.Delegate.DynamicInvoke (System.Object[] args) [0x00000] in <7ba07f088431485bb722f3b3373e87ee>:0 at QuickPick.QuickPick.ShouldBlockCamera () [0x0007d] in <2149714ebd164da7a2f77993d1fc6603>:0