XeNTaX Forum Index
Forum MultiEx Commander Tools Tools Home
It is currently Sun Oct 21, 2018 3:12 pm

All times are UTC + 1 hour


Forum rules


Please click here to view the forum rules



Post new topic Reply to topic  [ 146 posts ]  Go to page Previous  1 ... 5, 6, 7, 8, 9, 10  Next
Author Message
 Post subject: Re: [Request] Dirge Of Cerberus Final Fantasy VII models
PostPosted: Fri Dec 28, 2012 6:00 pm 
Offline
ultra-veteran
ultra-veteran
User avatar

Joined: Tue Jul 20, 2010 2:08 am
Posts: 345
Has thanked: 13 times
Have thanks: 22 times

Please release this script!

You can make the ads go away by registering


_________________
BBSFM and KH2FM+ saves are compatible with KH2.5. http://forum.xentax.com/viewtopic.php?t=13424


Top
 Profile  
 
 Post subject: Re: [Request] Dirge Of Cerberus Final Fantasy VII models
PostPosted: Fri Dec 28, 2012 9:33 pm 
Offline
mega-veteran
mega-veteran

Joined: Wed Apr 14, 2010 7:55 pm
Posts: 267
Has thanked: 4 times
Have thanks: 5 times
What are you going to do with just bone data?


Top
 Profile  
 
 Post subject: Re: [Request] Dirge Of Cerberus Final Fantasy VII models
PostPosted: Wed Jan 02, 2013 3:16 am 
Offline
ultra-veteran
ultra-veteran
User avatar

Joined: Tue Jul 20, 2010 2:08 am
Posts: 345
Has thanked: 13 times
Have thanks: 22 times
The textures and models can be captured with PCSX2, but only this importer can extract the skeletons.

_________________
BBSFM and KH2FM+ saves are compatible with KH2.5. http://forum.xentax.com/viewtopic.php?t=13424


Top
 Profile  
 
 Post subject: Re: [Request] Dirge Of Cerberus Final Fantasy VII models
PostPosted: Wed Jan 02, 2013 12:30 pm 
Offline
Moderator
User avatar

Joined: Sun May 18, 2008 3:01 pm
Posts: 2486
Has thanked: 57 times
Have thanks: 1239 times
There is now ps2 vif tag support in noesis. It is only exposed to the dll side of things right now but it is on the roadmap to be added to python. Once it is added into python I should be able to code up a noesis plugin for this.


Top
 Profile  
 
 Post subject: Re: [Request] Dirge Of Cerberus Final Fantasy VII models
PostPosted: Wed Jan 02, 2013 6:48 pm 
Offline
veteran
User avatar

Joined: Wed Nov 17, 2010 2:57 pm
Posts: 156
Location: Germany
Has thanked: 127 times
Have thanks: 49 times
OMG please doo *_*


Top
 Profile  
 
 Post subject: Re: [Request] Dirge Of Cerberus Final Fantasy VII models
PostPosted: Wed Jan 09, 2013 10:40 pm 
Offline
Moderator
User avatar

Joined: Mon Mar 23, 2009 2:57 am
Posts: 1007
Has thanked: 44 times
Have thanks: 495 times
Noesis 4.03 is out with VIFcode unpacking exposed to Python. Also, if you do the trick of renaming FILELIST.BIN to FILELIST_scru.x360.BIN and renaming KEL.DAT to white_scru.x360.bin, Noesis will extract them with proper filenames and paths. Although the decompressed filelist still uses blank names for lots of the RFD's, they'll still get the right extension.


Top
 Profile  
 
 Post subject: Re: [Request] Dirge Of Cerberus Final Fantasy VII models
PostPosted: Sun Jan 20, 2013 10:49 pm 
Offline
ultra-veteran
ultra-veteran
User avatar

Joined: Tue Jul 20, 2010 2:08 am
Posts: 345
Has thanked: 13 times
Have thanks: 22 times
Does Chrrox know VIF support has been added? Because he hasn't said anything about this since he said "I'll start working on a DoC plugin when PS2 VIF tag support has been added to the Python side of Noesis."

_________________
BBSFM and KH2FM+ saves are compatible with KH2.5. http://forum.xentax.com/viewtopic.php?t=13424


Top
 Profile  
 
 Post subject: Re: [Request] Dirge Of Cerberus Final Fantasy VII models
PostPosted: Sun Jan 20, 2013 10:51 pm 
Offline
mega-veteran
mega-veteran

Joined: Wed Apr 14, 2010 7:55 pm
Posts: 267
Has thanked: 4 times
Have thanks: 5 times
He likely does, just chill :P


Top
 Profile  
 
 Post subject: Re: [Request] Dirge Of Cerberus Final Fantasy VII models
PostPosted: Tue Feb 12, 2013 1:01 pm 
Offline
ultra-veteran
ultra-veteran
User avatar

Joined: Tue Jul 20, 2010 2:08 am
Posts: 345
Has thanked: 13 times
Have thanks: 22 times
Well, it's been another month, so I'm assuming everyone's just given up on a Dirge of Cerberus plugin. Then again, there is already a plugin for 3DSmax to extract the Dirge of Cerberus models' skeletons, and one could always rip the models and textures out with GSDX and TexMod, so you could reconstruct any given model from that. A plugin would just greatly simplify this process, right? I hope I'm not being too rude or ignorant for asking.

_________________
BBSFM and KH2FM+ saves are compatible with KH2.5. http://forum.xentax.com/viewtopic.php?t=13424


Top
 Profile  
 
 Post subject: Re: [Request] Dirge Of Cerberus Final Fantasy VII models
PostPosted: Mon Mar 25, 2013 6:19 pm 
Offline
ultra-n00b

Joined: Sun Jul 15, 2012 5:06 pm
Posts: 6
Has thanked: 0 time
Have thanks: 0 time
I hope rip this game can be possible.Thanks for your work on this.


Top
 Profile  
 
 Post subject: Re: [Request] Dirge Of Cerberus Final Fantasy VII models
PostPosted: Sat Apr 06, 2013 10:16 pm 
Offline
mega-veteran
mega-veteran
User avatar

Joined: Sun Mar 20, 2011 7:35 pm
Posts: 221
Has thanked: 27 times
Have thanks: 52 times
Well I was going to try out the skinning, but I forgot how it works in Maxscript. :bleh:
Maybe someone else can check it out......

( The extension ms is not allowed? )
F*** it, here's the code:

Code:
clearListener()
fname = getOpenFileName \
caption:"Dirge of Cerberus: Final Fantasy VIIl" \
types:"DoC game model(*.*)|*.*" \
historyCategory:"Dirge of Cerberus Presets"
f = fopen fname "rb"

--    Wik

--    Alsø wik

--    Alsø alsø wik

--    Wi nøt trei a høliday in Sweden this yer?

--    See the løveli lakes

--    The wonderful telephøne system

--    And mani interesting furry animals


pos=0
MainTableArr=#()
demBones = #()



--    The Producers would like to thank The Forestry Commission
--    Doune Admissions Ltd, Keir and Cowdor Estates, Stirling
--    University, and the people of Doune for their help in the
--    making of this film.
--    The Characters and incidents portrayed and the names used
--    are fictitious and any similarity to the names, characters,
--    or history of any person is entirely accidental and
--    unintentional.
--                Signed RICHARD M. NIXON


fn ReadFixedString bstream fixedLen = (
   local str =""
   for i=1 to fixedLen do (
      str+=bit.intAsChar (ReadByte bstream #unsigned)
   )
   str
)

fn align4 file = (
   ch=ftell file
   msk=0xF
   b1=bit.and ch msk
   case of (
      (b1 >0 and b1 <4): ch+=(4-b1)
      (b1 >4 and b1 <8): ch+=(8-b1)
      (b1 >8 and b1 <12): ch+=(12-b1)
      (b1 >12): ch+=(16-b1)
      default: ch+=0
   )
   fseek file ch #seek_set
)

fn align16 file = (
   ch=ftell file
   msk=0xF
   b1=bit.and ch msk
   case of (
      (b1 != 0): ch+=(16-b1)
      default: ch+=0
   )
   fseek file ch #seek_set
)

fn find4CycleTrimmer file = (
   ch=readlong file
   if ch != 16778244 then
      while ch != 16778244 do (
         ch=readlong file
      )
   fseek file -4 #seek_cur
)


fn store_count file array_arg= (
   fseek file 2 #seek_cur
   count=readbyte f
   append array_arg count
   fseek file -3 #seek_cur
)



--      Including the majestic møøse

--      A Møøse once bit my sister ...

--      No realli!  She was Karving her initials on the møøse
--      with the sharpened end of an interspace tøøthbrush given
--      her by Svenge - her brother-in-law - an Oslo dentist and
--      star of many Norwegian møvies:  "The Høt Hands of an Oslo
--      Dentist", "Fillings of Passion", "The Huge Mølars of Horst
--      Nordfink".

fn ar_store outArray tmpArray i = (
   d=2^7-1
   case of (
      (i==1): append outArray tmpArray[1]
      (i==2): ( a=tmpArray[1]; b=tmpArray[2]; append outArray [a,b]   )
      (i==3): ( a=tmpArray[1]/d; b=tmpArray[2]/d; c=tmpArray[3]/d; append outArray [a,c,b] )
      (i==4): ( a=tmpArray[1]; b=tmpArray[2]; c=tmpArray[3]; d=tmpArray[4]; append outArray [a,b,c,d] )
      default: append outArray tmpArray[1]
   )
)

fn unpack_to outArray i:vn = (
   --  Usage:       unpack_to yourArray
   --  Optional:    unpack_to yourArray i:x    where x is <= vn
   --  Example:    unpack_to Normal_array i:3
   vn = 0
   addr=readbyte f
   flag=readbyte f
   count=readbyte f
   comm_spec=readbyte f
   vnMSK=0xC
   vlMSK=3
   vna=bit.and comm_spec vnMSK
   vn=bit.shift vna -2
   vn+=1
   if i==0 then i=vn
   vl=bit.and comm_spec vlMSK
   case of (
      (vl==0): (
         for x=1 to count do (
            tmpArray=#()
            for y=1 to vn do ( p=readfloat f; append tmpArray p )
            ar_store outArray tmpArray i
         )
      )
      (vl==1): (
         for x=1 to count do (
            tmpArray=#()
            for y=1 to vn do ( p=readshort f; append tmpArray p )
            ar_store outArray tmpArray i
         )
      )
      (vl==2): (
         for x=1 to count do (
            tmpArray=#()
            for y=1 to vn do ( p=readbyte f; append tmpArray p )
            ar_store outArray tmpArray i
         )
      )
      (vl==3): (
         for x=1 to count do (
            tmpArray=#()
            for y=1 to vn do ( p=readshort f; append tmpArray p )
            ar_store outArray tmpArray i
         )
      )
   )
   vn = 0
)




--    We apologise for the fault in the
--    subtitles.  Those responsible have been
--    sacked.

models=ReadFixedString f 8
rfd=readstring f
fsize=readlong f
tableCount=readshort f-1
unk2=readshort f
for x = 1 to tableCount do (
   mrOffset=readlong f
   append MainTableArr mrOffset
)
skelOff=readlong f


fseek f skelOff #seek_set
SkeletonStart=ReadFixedString f 12   --   skeletonskd
endOfFile = readlong f-1
Off_REL=ftell f
SK2=SM2=ReadFixedString f 4
unk1=readlong f
smdNamesCount=readshort f
unk2=readshort f
namesStart=readlong f
unk3=readlong f
boneCount=readlong f
matrix1Table_Start=readlong f      --   the ones not used by the bones / used for pre-multiplying vertices...?
fseek f (Off_REL + matrix1Table_Start) #seek_set
matrix1Offs=#()
for i = 1 to boneCount do (
   o=readlong f
   append matrix1Offs o
)
fseek f (Off_REL + matrix1Offs[1]) #seek_set

for x = 1 to boneCount do (
   o11 = readfloat f; o12 = readfloat f; o13 = readfloat f; o14 = readfloat f
   o21 = readfloat f; o22 = readfloat f; o23 = readfloat f; o24 = readfloat f
   o31 = readfloat f; o32 = readfloat f; o33 = readfloat f; o34 = readfloat f
   o41 = readfloat f; o42 = readfloat f; o43 = readfloat f; o44 = readfloat f
   thing1=(matrix3[o11,o12,o13][o21,o22,o23][o31,o32,o33][o41,o42,o43])
   
   hash=ReadFixedString f 0x30

   BIndex=readlong f + 1
   unk1=readlong f
   unk2=readlong f
   unk3=readlong f
   m11 = readfloat f; m12 = readfloat f; m13 = readfloat f; m14 = readfloat f
   m21 = readfloat f; m22 = readfloat f; m23 = readfloat f; m24 = readfloat f
   m31 = readfloat f; m32 = readfloat f; m33 = readfloat f; m34 = readfloat f
   m41 = readfloat f * 8; m42 = readfloat f * 8; m43 = readfloat f * 8; m44 = readfloat f * 8
   thing2=(matrix3[m11,m13,m12][m31,m33,m32][m21,m23,m22][m41,m43,m42])
   
   BParent=readshort f + 1
   unk=readshort f
   if BParent == 65536 then BParent = 1
   unk4=readlong f
   BLength=readfloat f
   unk5=readfloat f
   
   rTemp=thing1.rotationpart as matrix3
   newBone = bonesys.createbone   \
   thing2.row4   \
   (thing2.row4 + .01 * (normalize thing2.row1)) \
   (normalize thing2.row3)
   newBone.width  = .01
   newBone.height = .01
   newBone.transform = inverse thing2
   newBone.setBoneEnable false 0
   newBone.wirecolor = yellow
   newbone.showlinks = true
   newBone.pos.controller      = TCB_position ()
   newBone.rotation.controller = TCB_rotation ()
   if (x != 1) then (
      newBone.parent = demBones[BParent]
   )
   demBones[x] = newBone
)
select $Bone001
rotate $ (angleaxis 180.0 [0,1,0])
move $ [0,0,56.0]




for i = 3 to MainTableArr.count do (
   Weights_array=#()
   uv_Array=#()
   vert_Array=#()
   Face_array=#()
   Normal_array=#()
   smallestChunkCounts=#()
   unkLongs=#()
   prettyColors=#()
   unkN1=#()
   unkBytes=#()
   bone_Array=#()
   boneID_Array=#()
   
   fseek f MainTableArr[i] #seek_set   --   SMD
   SMD_start=ftell f
   smdName=ReadFixedString f 12
   nextSMD=readlong f
   nextSMD_loc=(SMD_start + nextSMD)
   SM2=ReadFixedString f 4
   unkCount1=readbyte f
   longNullCount=readbyte f
   unkCount2=readbyte f
   unkCount3=readbyte f
   unk1=readshort f
   mainObjCount=readbyte f
   nullByte=readbyte f
   nullLongA=readlong f
   nullLongB=readlong f
   unk10=readlong f
   unk11=readlong f
   unk100=readlong f
   ThisIsImportantStupid=ftell f
   unk101=readlong f
   unk110=readlong f
   unk111=readlong f
   unk1000=readlong f
   fseek f (longNullCount*4) #seek_cur
   tableArrMajor=#()
   for x = 1 to mainObjCount do (      --   smd sub-objects
      t=readlong f
      append tableArrMajor t
   )
   tempVar = deepcopy tableArrMajor
   deleteItem tempVar 1
   append tempVar skelOff
   for y = 1 to tableArrMajor.count do (
      countArray=#()
      nextSubBlock=(ThisIsImportantStupid + tableArrMajor[y])
      _nextSubBlock=(ThisIsImportantStupid + tempVar[y])
      fseek f nextSubBlock #seek_set
      bonesOff=ftell f
      subObjCount=readlong f      --   sub sub-objects - weights, vertices
      unk1001=readlong f
      boneTableOff=readlong f
      ten=readlong f
      for LillianGish = 1 to subObjCount do (      -- Total babe!
         unkA=readlong f      --   Start      00 00 00 20
         unkB=readlong f
         set_cycle=readlong f
         anotherStupidNull=readlong f
         store_count f countArray
         unpack_to Weights_array
         unpack_to uv_Array
         unpack_to vert_Array
         align16 f
      )
      boneTMP=#()
      boneTMP2=#()
      fseek f (boneTableOff + bonesOff) #seek_set
      for TonyCurtis = 1 to subObjCount do (
         boneID=readshort f
         tempName="bone"
         boneName = tempName + formattedPrint boneID format:"#03u"
         something=readshort f
         somethingElse=readshort f
         YoMamma=readshort f
         append boneTMP boneName
         append boneTMP2 boneID
      )
      n=0
      for a in countArray do (      --   store Bone ID for each vertex?
         n+=1                     --  this seems like the wrong way of going about it.......???????
         for b = 1 to a do (
            append bone_Array boneTMP[n]
         )
      )
      
--      ******************
--      SMALLEST CHUNKS
--      ******************
      
      --find4CycleTrimmer f --   skip ahead a few bytes to start of smallest chunks ( 04 04 00 01 )
      
--       ( currently commented out until someone finds something useful to do with the data )
      /*while (pos < _nextSubBlock-64) and (pos < nextSMD_loc-64) do (
         pos=ftell f
         fourCycleTrimmerShindaiwa=readlong f
         unpack_to unkLongs
         twoCycleTrimmerToro=readlong f
         unpack_to prettyColors
         twoCycleTrimmerCraftsman=readlong f
         unpack_to unkN1
         unpack_to unkBytes
         align4 f
         end=readlong f   --   00 00 00 17
         ch=readlong f      --  check for set cycle command - sometimes there's 0x20 bytes between chunks
         if ch==0 then (align16 f; fseek f 0x20 #seek_cur)
            else fseek f -4 #seek_cur
      )*/
   
   )
   msh=mesh vertices:Vert_array faces:Face_array
   msh.numTVerts=Vert_array.count
   select msh
   rotate $ (angleaxis 180.0 [0,1,0])
   move $ [0,0,56.0]
--    buildTVfaces msh
   
   
--    max modify mode
--    skinMod = skin()
--    addModifier msh skinMod
--    modPanel.setCurrentObject skinMod
--    
--    for i = 1 to  bone_Array.count do (
--       maxbone = getnodebyname bone_Array[i]
--       skinOps.addBone skinMod maxbone 1
--    )
--    
--    for j = 1 to Vert_array.count do (
--       skinOps.ReplaceVertexWeights skinMod j bone_Array[j] Weights_array[j]
--    )
   
   msh.name=smdName
)

/*
--   Mynd you, møøse bites Kan be pretty nasti...

--   We apologise again for the fault in the subtitles.  Those
--   responsible for sacking the people who have just been sacked
--   have been sacked.




--   Møøse trained by            TUTTE HERMSGERVORDENBROTBORDA

--   Special Møøse Effects      OLAF PROT
--   Møøse Costumes            SIGGI CHURCHILL
--   Møøse Choreographed by      HORST PROT III
--   Miss Taylor's Møøses by     HENGST DOUGLAS-HOME
--   Møøse trained to mix
--   concrete and sign com-
--   plicated insurance
--   forms by                  JURGEN WIGG
--   Møøses' noses wiped by      BJORN IRKESTOM-SLATER WALKER

--   Large møøse on the left
--   half side of the screen
--   in the third scene from
--   the end, given a thorough
--   grounding in Latin,
--   French and "O" Level
--   Geography by               BO BENN

--   Suggestive poses for the
--   Møøse suggested by         VIC ROTTER
--   Antler-care by            LIV THATCHER




--   The directors of the firm hired to
--   continue the credits after the other
--   people had been sacked, wish it to
--   be known that they have just been
--   sacked.
*/







fclose f






/*
Executive Producer
        JOHN GOLDSTONE & "RALPH" The Wonder Llama

  EARL J. LLAMA
  MIKE Q. LLAMA III
  SY LLAMA
  MERLE Z. LLAMA IX
  Directed By
  40 SPECIALLY TRAINED
  ECUADORIAN MOUNTAIN LLAMAS
  6 VENEZUELAN RED LLAMAS
  142 MEXICAN WHOOPING LLAMAS
  14 NORTH CHILEAN GUANACOS
  (CLOSELY RELATED TO THE LLAMA)
  REG LLAMA OF BRIXTON
  76000 BATTERY LLAMAS
  FROM "LLAMA-FRESH" FARMS NEARE PARAGUAY
*/




Image


Top
 Profile  
 
 Post subject: Re: [Request] Dirge Of Cerberus Final Fantasy VII models
PostPosted: Wed Apr 10, 2013 7:09 pm 
Offline
ultra-veteran
ultra-veteran
User avatar

Joined: Tue Jul 20, 2010 2:08 am
Posts: 345
Has thanked: 13 times
Have thanks: 22 times
This is a 3DS Max script for importing Dirge of Cerberus models, sans UVs?

_________________
BBSFM and KH2FM+ saves are compatible with KH2.5. http://forum.xentax.com/viewtopic.php?t=13424


Top
 Profile  
 
 Post subject: Re: [Request] Dirge Of Cerberus Final Fantasy VII models
PostPosted: Wed Apr 10, 2013 7:37 pm 
Offline
mega-veteran
mega-veteran
User avatar

Joined: Sun Mar 20, 2011 7:35 pm
Posts: 221
Has thanked: 27 times
Have thanks: 52 times
Well, sans almost everything actually. ಥ_ಥ
But by God all the offsets are in there and it parses the data pretty quick! ┌( ಠ_ಠ)┘


Top
 Profile  
 
 Post subject: Re: [Request] Dirge Of Cerberus Final Fantasy VII models
PostPosted: Mon Apr 15, 2013 7:56 pm 
Offline
mega-veteran
mega-veteran

Joined: Wed Apr 14, 2010 7:55 pm
Posts: 267
Has thanked: 4 times
Have thanks: 5 times
So what does it actually do then? :P


Top
 Profile  
 
 Post subject: Re: [Request] Dirge Of Cerberus Final Fantasy VII models
PostPosted: Tue Apr 16, 2013 4:16 am 
Offline
mega-veteran
mega-veteran
User avatar

Joined: Sun Mar 20, 2011 7:35 pm
Posts: 221
Has thanked: 27 times
Have thanks: 52 times
It'll import the skeleton and all the vertex data.
Like I said, I was going to try skinning the vertices to the bones and see what happened, but I forgot how the skinning code works and got busy trying to keep the weeds from taking over my yard and then my allergies went nuts and almost killed me to death. :cry:

Here's some more random junk:
These are the bone-vertex assignments. You can look at the skeleton in Max, pick a bone, then using Cheat Engine + PCSX2 change one of those values and predict, with 100% reliability, what will happen i.e., what bone those block of vertices will reattach themselves to.
Image

Also, like I mentioned in the code, those other matrices in the skeleton data have their own offset table which would imply they're pretty important. Wasn't sure if the verts need to be pre-multiplied with those or not.



Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 146 posts ]  Go to page Previous  1 ... 5, 6, 7, 8, 9, 10  Next

All times are UTC + 1 hour


Who is online

Users browsing this forum: No registered users and 14 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group