Skip to content
View in the app

A better way to browse. Learn more.

ResHax

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Help us keep the site running.

How to reverse bone/skeleton file

Featured Replies

On 6/30/2025 at 7:26 PM, AexaDev said:

你好,我和他来自同一个地方,这是一个Discord服务器

Can you tell me the name of this Discord server?thx

  • 2 months later...
  • Supporter

What I've been curious about is, if my skin file has no parent bone index information, or no hierarchy information, how should I rebuild the skeleton? , currently I only have matrix information, and bone weight information, I am trying to build the hierarchy based on the name, but it is obviously wrong, because the skeleton loaded out is very confusing
skin_cesf.SkinSkeleton provides matrix and name information
The bone data starts after 20 bytes, and the following structure is read in each loop
1 byte - bone name length
48-byte transformation matrix - after analysis, the 3x4 matrix is more reasonable
actual bone name

mesh_cesf.Mesh provides bone weights and indices
Index information starts at offset 177 and is 146892 bytes long
Vertex data starts at the end of the index, and is a vertex every 32 bytes, with a length of 585664 bytes
Bone weight and index data start where the vertex ends, occupy 8 bytes each, and are 146416 bytes in length
The 208 bytes at the end of the file are the bounding box information of the four sub-grids, each grid occupies 52 bytes

skin.zip

  • Supporter
9 hours ago, shak-otay said:

I made a wild guess and the result might be not totally wrong (upside down, maybe):

Messiah smd.png

mesh_viewer_Messiah.png.a07af3b379792d139437a78af4afa27e.png

How did you get this result? Did you use the matrix I described? Or is there a certain rotation applied?

If you open it directly without applying rotation, the skeleton will look like it is sideways.

When I rotated the Z axis, the skeleton finally stood up, but the position still felt wrong.

IMG_20260224_081335.jpg

fmt_skin_test.py

  • Supporter
3 hours ago, wq223 said:

How did you get this result? Did you use the matrix I described? Or is there a certain rotation applied?

I don't understand the question, A 4x3 matrix usually has a rotation part. Which I used.

Edited by shak-otay

  • 2 months later...
  • Supporter
On 2/24/2026 at 12:13 PM, shak-otay said:

I don't understand the question, A 4x3 matrix usually has a rotation part. Which I used.

I've made some progress. The matrix is a 4x3 inverse bind pose matrix. Currently, there are only two ways to reconstruct the hierarchy. One is the naming convention approach they're using internally, which tends to break easily since there are so many bones with non-standard names. The other is to infer the hierarchy from skin weight data—I have versions both with and without bone connections.

Image_1777173686659_698.png

Image_1777173690187_545.png

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.