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.

Mascot Capsule 3D .mbac

Featured Replies

  • Localization

The format is actually fairly well-documented.  The problem is that none of the tools available for ripping them work quite right.  None of them handle materials, the ones that handle UVs get them blown up to a ridiculous scale, and if there are vertex colors, the model is going to break entirely.

The Noesis script linked is the closest to being correct, but it appears to be mistaking colors as a third UVW vector.  I'm mostly hoping for it to be fixed so that the majority of models in this format can actually be properly ripped, even if the actual materials have to be manually created.

In the following ZIP, I've included several examples from the Machi-Chara software, and PVMicro, an official tool, to see what the models "should" look like.

mbac.zip

  • Author
  • Localization
2 hours ago, Durik256 said:

try it fmt_mbac.py

This is the noesis plugin I already linked to

I appreciate you making it four years ago, but it has the already mentioned issues, and doesn't seem to have been updated to fix them.

  • Supporter

For Hitsuji_no_Shitsuji-kun_(Butler_Course).mbac there is a very interesting problem with

Quote

def setUVs(self, uvList, slot = 0):
        noesis.validateListType(uvList, NoeVec3)

which says

---------------------------
Noesis Python Error
---------------------------
Traceback (most recent call last):
  File "C:\Noesis\noesisv4466-74\plugins\python\fmt_mbac.py", line 154, in mbacLoadModel
    if uvs: mesh.setUVs(uvs)
  File "C:\Noesis\noesisv4466-74\plugins\python\inc_noesis.py", line 1137, in setUVs
    noesis.validateListType(uvList, NoeVec3)
RuntimeError: Undesirable object type at index 2064 in list

(With cnt starting at 0) I logged the list (print(cnt, i,x, uvs[x]); cnt +=1) but I didn't understand the error:

2060 0 1147 [142, 19, 0]
2061 1 1149 [131, 22, 0]
2062 2 1151 [138, 23, 0]
2063 3 1150 [134, 27, 0]
2064 0 1150 [142, 19, 0]   <<< index 2064 in the list, isn't it?
2065 1 1152 [131, 22, 0]
2066 2 1153 [138, 23, 0]
2067 3 1124 [134, 27, 0]

The mbac2obj.py (+ mascotcapsule.py) creates an obj file from said mbac without such a problem so I'm wondering if the problem is in Noesis/inc_noesis.py (which is near to impossible, of course).

edit: I've logged the uv list directly (without using setUVs()) so that Noesis finishes the job but the uvs are integers (same as for mbac2obj.py) which are not displayed:

Quote

vt 184 122
vt 184 122
vt 184 105
vt 184 105
vt 184 122
vt 183 122
vt 184 105
vt 183 105
vt 183 122
vt 183 122
vt 183 105
vt 183 105
vt 183 122
vt 183 122
vt 183 105
vt 183 105
vt 200 122
vt 200 122
vt 200 105
vt 200 105
vt 200 122

...

edit2: int to float, uvs don't look too nice:

Hitsuji_uvs_mbac.thumb.png.390827e4e1dfc0f0d05a4390e2e76815.png

edit3: doronjo mbac

doronjo.thumb.png.afa6ef1dd30fe481bd2ebd482938da15.png

Edited by shak-otay

  • Supporter
On 4/19/2026 at 7:47 PM, Grounder said:

handle UVs get them blown up to a ridiculous scale

UVs in this format are not stored directly in 0..1, but are integer texture coordinates in pixels, and they need to be divided by the actual texture size. (u/txW_px, v/txH_px)

  • Supporter
On 4/20/2026 at 1:23 AM, shak-otay said:

which says

The provided *.mbac scenes contain both textured and untextured meshes. Therefore, the untextured ones had a UVS of None, which caused the error. I fixed this (simply filling their UVS with zero vectors). I also normalized the UVS to one (although this is incorrect (see the message above), it works on many models (those with a 256x256 texture). 

EDIT: (i update plugin in my gitHub)

Edited by Durik256

  • Author
  • Localization
On 4/25/2026 at 7:13 PM, Durik256 said:

The provided *.mbac scenes contain both textured and untextured meshes. Therefore, the untextured ones had a UVS of None, which caused the error. I fixed this (simply filling their UVS with zero vectors). I also normalized the UVS to one (although this is incorrect (see the message above), it works on many models (those with a 256x256 texture). 

EDIT: (i update plugin in my gitHub)

Yep, this works.  Thank you for the update!

  • Author
  • Localization

EDIT 2: The old method for UVs, oddly, seems to work better minus the scaling issue.

EDIT 3: It's getting way more faces than the OBJ script...

Edited by Grounder
oi 2

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.