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.

[request] black desert(pac,pab,paa,pam)import script for blender

Featured Replies

  • Author
  • Localization

hassuny, posted Fri Sep 23, 2016 11:38 am (17590)


hello guys

please i want import script for blender for black desert models and bones and animations
  • Author
  • Localization

Karpati, posted Fri Sep 23, 2016 5:31 pm (17609)


Did you try out the 3D Object Converter?
http://3doc.i3dconverter.com

It supports the following formats:
.pac/pab
.pam
.mapdata

Install or use the portable version of the program. Just use the Help/Check for updates... function to get the latest version (v6.417).
  • Author
  • Localization

hassuny, posted Fri Sep 23, 2016 7:00 pm (17612)


Karpati wrote:
Did you try out the 3D Object Converter?
http://3doc.i3dconverter.com

It supports the following formats:
.pac/pab
.pam
.mapdata

Install or use the portable version of the program. Just use the Help/Check for updates... function to get the latest version (v6.417).


yes bro i have tried 3D Object Converter

but i didn't support .paa files -( animation)

there is an import script for blender in xentax forum that support (pac,pab,paa,pam)
from the member Szkaradek123 in this thread : http://forum.xentax.com/viewtopic.php?f ... hilit=.paa

if you can give a link to this script because i don't have account in that forum please ?? :roll:
  • Author
  • Localization

Karpati, posted Sat Sep 24, 2016 7:46 am (17621)


hassuny,

Please read your PM.
  • Author
  • Localization

Darko, posted Mon Sep 26, 2016 2:12 am (17643)


Here's the script.
  • Author
  • Localization

hassuny, posted Mon Sep 26, 2016 3:18 pm (17659)


Karpati wrote:
hassuny,

Please read your PM.



thank you very much
  • Author
  • Localization

hassuny, posted Mon Sep 26, 2016 3:18 pm (17660)


Darko wrote:
Here's the script.


thank you very much
  • Author
  • Localization

hassuny, posted Mon Sep 26, 2016 3:21 pm (17661)


godskin wrote:
Same Release http://prnt.sc/cmgl23

what you show ??



Image

thank you for responding

i didn't catch the idea but as you seee i can't download form xentax forum so that i wanted an external link .
  • Author
  • Localization

hassuny, posted Mon Sep 26, 2016 3:28 pm (17662)


guys thank you for your help

but how to add the script to the import menu

this script is different from other blender scripts that i have worked with ??

i put the script in "Blender\2.74\scripts\addons\"

but i can't in find in user prefrences -> addon-ons -> import-export
  • Author
  • Localization

godskin, posted Tue Sep 27, 2016 2:16 am (17679)


hassuny wrote:
godskin wrote:
Same Release http://prnt.sc/cmgl23

what you show ??



Image

thank you for responding

i didn't catch the idea but as you seee i can't download form xentax forum so that i wanted an external link .


register -__-
easy for register
  • Author
  • Localization

hassuny, posted Tue Sep 27, 2016 6:21 am (17680)


godskin wrote:
hassuny wrote:
godskin wrote:
Same Release http://prnt.sc/cmgl23

what you show ??



Image

thank you for responding

i didn't catch the idea but as you seee i can't download form xentax forum so that i wanted an external link .


register -__-
easy for register


bro ,

in xentax forum if u want to register u have to pay 5$ that's all.
  • Author
  • Localization

parttimegamer15, posted Sun Apr 30, 2017 11:18 pm (22768)


Has anyone managed to export the animation (PAA) files? Using the script I can import mesh (PAC) as well as armature(PAB). However on importing animation (PAA) file the mesh and armature gets horribly deformed...Not sure if there is some scaling issues. I have posted on the XeNTaX forum, however response id usually slow over there. Anyone here who can help?
Cheers
Image

Image
  • Author
  • Localization

hassuny, posted Sun Jul 09, 2017 2:43 pm (24471)


parttimegamer15 wrote:
Has anyone managed to export the animation (PAA) files? Using the script I can import mesh (PAC) as well as armature(PAB). However on importing animation (PAA) file the mesh and armature gets horribly deformed...Not sure if there is some scaling issues. I have posted on the XeNTaX forum, however response id usually slow over there. Anyone here who can help?
Cheers
Image

Image



Use This script :

Code:
# Import Library
import newGameLib
reload(newGameLib)
from newGameLib import *
import Blender   

# Mesh Importer
def pacParser(filename,g):
   idMagic = g.i(1)[0]; parVer = g.H(1)[0]
   g.seek(0x10)
   if parVer == 259:
      boneCount     = g.B(1)[0]
      bonehashList=[]
      for m in range(boneCount):bonehashList.append(g.i(1)[0])
      usedBoneCount = g.B(1)[0]
      usedBones     = g.B(usedBoneCount)
      totalVert, totalFace,  = g.i(2)
      meshCount=g.H(1)[0]
      for a in range(0, meshCount):
         meshNameSize = g.B(1)[0]
         meshName = g.word(meshNameSize)
         print meshName
         flag = g.H(1)[0]
         material = Mat()
         material.TRIANGLE=True
         material.ZTRANS=True
         texture_path=g.dirname.split('model')[0] os.sep 'texture' os.sep
         material.diffuse=texture_path meshName '.dds'
         material.specular=texture_path meshName '_sp.dds'
         material.normal=texture_path meshName '_n.dds'
         mesh=Mesh()
         for b in range(0, 3):
            vertCount = g.H(1)[0]
            skin=Skin()
            for m in range(vertCount):
               t=g.tell()
               mesh.vertPosList.append(g.f(3))
               g.seek(t 16)
               mesh.vertUVList.append(g.half(2))
               g.seek(t 24)
               mesh.skinIndiceList.append(g.B(4))
               mesh.skinWeightList.append(g.B(4))
               g.seek(t 0x20)
            faceCount = g.i(1)[0]
            mesh.indiceList=g.H(faceCount)
            skin.boneMap=bonehashList
            if b                mesh.TRIANGLE=True
               mesh.matList.append(material)
               mesh.skinList.append(skin)
               mesh.BINDSKELETON='armature'
               mesh.draw()   

# Skeleton Importer
def pabParser(filename,g):   
   g.word(4)
   parVer = g.H(1)[0]
   g.seek(0x10)   
   skeleton=Skeleton()
   skeleton.ARMATURESPACE=True
   skeleton.BINDMESH=True
   g.seek(16)
   boneCount = g.H(1)[0]
   for m in range(0, boneCount):
      bone=Bone()
      bone.name = str(g.i(1)[0])
      name=g.word(g.B(1)[0])
      bone.parentID = g.i(1)[0]
      bone.matrix=Matrix4x4(g.f(16))
      g.seek(64,1)
      g.seek(64,1)
      g.seek(64,1)
      boneScale = g.f(3)
      BoneQuat  = g.f(4)
      BonePos   = g.f(3)
      g.seek(0x2,1)
      skeleton.boneList.append(bone)
   skeleton.draw()   
   
# Animation Importer   
def paaParser(filename,g):
   action=Action()
   action.BONESPACE=True
   action.BONESORT=True
   action.skeleton='armature'
   g.word(4)
   g.seek(16)
   boneCount=g.H(1)[0]
   g.H(4)
   for m in range(boneCount):
      g.logWrite('key' str(m))
      bone=ActionBone()
      bone.name=str(g.i(1)[0])   
      c1=g.H(1)[0]
      for n in range(c1):#scale key
         g.H(4)
      c2=g.H(1)[0]
      for n in range(c2):#rotation key
         bone.rotFrameList.append(g.H(1)[0]/33)
         bone.rotKeyList.append(QuatMatrix(g.half(4)).resize4x4())   
         
      c3=g.H(1)[0]
      for n in range(c3):#transaltion key
         bone.posFrameList.append(g.H(1)[0]/33)
         bone.posKeyList.append(VectorMatrix(g.half(3)))   
      action.boneList.append(bone)   
   action.draw()
   action.setContext()   

# Static Object Importer   
def pamParser(filename,g):
   if 'object' os.sep in filename:
      texDir=filename.split('object')[0] 'object' os.sep 'texture'
   else:
      texDir=g.dirname
   idMagic = g.word(4); parVer = g.H(1)[0]
   g.seek(0x10)
   if parVer == 1286:
      meshList=[]
      meshCount=g.i(1)[0]
      g.f(6)
      g.B(10)
      g.seek(1040)
      for m in range(meshCount):
         mesh=Mesh()
         mat=Mat()
         mat.TRIANGLE=True
         t=g.tell()
         mesh.info=g.i(5)
         mat.diffuse=texDir os.sep g.find('\x00')
         g.seek(t 276)
         mesh.matList.append(mat)
         meshList.append(mesh)
      for i,mesh in enumerate(meshList):
         for m in range(mesh.info[0]):
            t=g.tell()
            mesh.vertPosList.append(g.f(3))
            g.seek(t 16)
            mesh.vertUVList.append(g.half(2))
            g.seek(t 28)
      for i,mesh in enumerate(meshList):
         mesh.indiceList=g.H(mesh.info[1])
         mesh.draw()   
   elif parVer == 1030:
      meshList=[]
      meshCount=g.i(1)[0]
      g.f(6)
      g.B(10)
      g.seek(1040)
      for m in range(meshCount):
         mesh=Mesh()
         mat=Mat()
         mat.TRIANGLE=True
         t=g.tell()
         mesh.info=g.i(4)
         mat.diffuse=texDir os.sep g.find('\x00')
         g.seek(t 272)
         mesh.matList.append(mat)
         meshList.append(mesh)
      for i,mesh in enumerate(meshList):
         for m in range(mesh.info[0]):
            t=g.tell()
            mesh.vertPosList.append(g.f(3))
            g.seek(t 16)
            mesh.vertUVList.append(g.half(2))
            g.seek(t 28)
      for i,mesh in enumerate(meshList):
         mesh.indiceList=g.H(mesh.info[1])
         mesh.draw()   
   else:
      print 'WARNING:unknow version:',parVer   
   
# File Type Detection   
def Parser():
   filename=input.filename
   ext=filename.split('.')[-1].lower()   
   
   if ext=='pac':
      file=open(filename,'rb')
      g=BinaryReader(file)
      pacParser(filename,g)
      file.close()
   
   if ext=='pab':
      file=open(filename,'rb')
      g=BinaryReader(file)
      pabParser(filename,g)
      file.close()
   
   if ext=='paa':
      file=open(filename,'rb')
      g=BinaryReader(file)
      paaParser(filename,g)
      file.close()
      
   if ext=='pam':
      file=open(filename,'rb')
      g=BinaryReader(file)
      pamParser(filename,g)
      file.close()
   
# Open File function
def openFile(flagList):
   global input,output
   input=Input(flagList)
   output=Output(flagList)
   parser=Parser()
   
# Select file window   
Blender.Window.FileSelector(openFile,'import','Black Desert files: pac-mesh, pab-skeleton, paa-animation, pam-static object ') 






# ACTIVE THIS WINDOW
# PRESS (Alt P) IN KEYBOARD
# SELECT File To Import :
# *.PAC (SKINED MESH)
# *.PAB (SKELETON)
# *.PAA (ANIMATION)
# *.PAM (STATIC OBJECT)


by the way what is the .paz unpacking tool u are using ?
  • Author
  • Localization

Skykila, posted Sat Jul 15, 2017 11:35 am (24607)


hassuny wrote:
parttimegamer15 wrote:
by the way what is the .paz unpacking tool u are using ?


Use this tool.

PAZUnpacker_CBT2_v0.0.5_r22.rar

  • Author
  • Localization

darsig, posted Mon Aug 28, 2017 7:55 am (25989)


any chance to see skeleton and animation importer script for blender or noesis with normal bones names , not numbers?
Guest
This topic is now closed to further replies.

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.