READ THE RULES: Click here

Follow us on Facebook: https://www.facebook.com/xentax/ :)

3d Models, animation importer - FatImporter

General game file tools that are useful for more than one game
pixellegolas
ultra-veteran
ultra-veteran
Posts: 423
Joined: Mon Aug 11, 2008 11:30 pm
Has thanked: 27 times
Been thanked: 15 times

Re: 3d Models, animation importer - FatImporter

Post by pixellegolas » Sun Jun 02, 2013 7:03 pm

sweet update!

Drawing
veteran
Posts: 146
Joined: Wed Jan 11, 2012 10:21 pm
Has thanked: 17 times
Been thanked: 2 times

Re: 3d Models, animation importer - FatImporter

Post by Drawing » Tue Jun 04, 2013 9:32 pm

good update :) but dragona importer sometimes doesn't work:
some times the model are not skinned, some animations stop...

Nazaroff
advanced
Posts: 40
Joined: Mon Oct 11, 2010 12:30 pm
Has thanked: 7 times
Been thanked: 12 times

Re: 3d Models, animation importer - FatImporter

Post by Nazaroff » Thu Jun 20, 2013 9:15 am

fatduck wrote: - YS Online: The Call of sodum
Call of Solum maybe? Where can we find this game, anybody know?

Allanoon
n00b
Posts: 18
Joined: Sat Apr 14, 2012 9:00 pm
Has thanked: 9 times
Been thanked: 2 times

Re: 3d Models, animation importer - FatImporter

Post by Allanoon » Thu Jun 20, 2013 1:52 pm

Nazaroff wrote:
fatduck wrote: - YS Online: The Call of sodum
Call of Solum maybe? Where can we find this game, anybody know?
If you google around you can find an old CB game client (i dlded it a few weeks ago), around 2 GB~

anime663
veteran
Posts: 102
Joined: Mon Jun 04, 2012 1:45 am
Has thanked: 21 times
Been thanked: 2 times

Re: 3d Models, animation importer - FatImporter

Post by anime663 » Mon Jun 24, 2013 8:18 pm

Can you maybe add Shining Blade/Ark for the PSP?

Darko
double-veteran
double-veteran
Posts: 702
Joined: Mon Jul 13, 2009 6:16 pm
Has thanked: 70 times
Been thanked: 118 times

Re: 3d Models, animation importer - FatImporter

Post by Darko » Tue Aug 27, 2013 8:18 pm

Does someone know how to extract hi no kakera chaotic eclipse dat files?? Fatduck importer has support for this game but I can't find anything about that.
Image

User avatar
BloodForce
ultra-n00b
Posts: 5
Joined: Wed Oct 30, 2013 3:49 pm
Has thanked: 2 times

Re: 3d Models, animation importer - FatImporter

Post by BloodForce » Tue Nov 12, 2013 4:36 am

when try import .chr files from archeage have error
---------------------------
-- Runtime error: array index must be positive number, got: -1672745836
trying in 3ds max 2009 and 2010

User avatar
Rimbros
ultra-veteran
ultra-veteran
Posts: 495
Joined: Fri Jul 09, 2010 12:23 am
Has thanked: 41 times
Been thanked: 13 times

Re: 3d Models, animation importer - FatImporter

Post by Rimbros » Mon Nov 18, 2013 7:28 pm

wolfen wrote:hello i have a error with plugin
download/file.php?mode=view&id=6024
How u can unpack the .dp files? i cant found .bms or something.
Renders Art by Rimbros
http://s303.photobucket.com/albums/nn12 ... E/Renders/

Personal Game repository samples, send PM

User avatar
CriticalError
double-veteran
double-veteran
Posts: 641
Joined: Sun Jul 05, 2009 2:03 am
Has thanked: 75 times
Been thanked: 35 times

Re: 3d Models, animation importer - FatImporter

Post by CriticalError » Fri Dec 20, 2013 8:52 pm

Hello fat, really like yourwork and gratefull for that, today I download 榮耀世紀 Carpe Diem, with help of finale00 I unpack them, but when try import any files "brv_chr" I get this error in MaxScript 2010, maybe you can fix them?

榮耀世紀 Carpe Diem

Image

Code: Select all

rollout MainRoll "Carpe Diem" (fn a5ff801d f c3f8964b fscale = (e5ff12a0 = #();b3ed996a = #();d2884eab = #();c9eed647 = #();a44b593e = #();ib376025 = readlong f;f38eb60a = readlong f;fseek f 16 #seek_cur;for i = 1 to ib376025 do (vx = readfloat f; vy = readfloat f; vz = readfloat f;append e5ff12a0 ([vx,vy,vz]*fscale);vx = readfloat f; vy = readfloat f; vz = readfloat f;append b3ed996a [vx,vy,vz];vx = readfloat f; vy = readfloat f;append d2884eab [vx,(1-vy),0]);hb84005a = #();for i = 1 to ib376025 do (f47e885b = readlong f;if (finditem hb84005a f47e885b)== 0 then append hb84005a f47e885b;a44b593e[i] = #(#(f47e885b+1),#(1.0));try (g4e6da02 = (transMatrix e5ff12a0[i]) * c3f8964b[(f47e885b+1)].transform;e5ff12a0[i] = g4e6da02.pos) catch (););for i = 1 to f38eb60a do (f1 = readshort f;f2 = readshort f;f3 = readshort f;if c3f8964b == undefined then append c9eed647 ([f1,f2,f3]+1) else append c9eed647 ([f3,f2,f1]+1));a8d6e5fc = mesh vertices:e5ff12a0 faces:c9eed647;a8d6e5fc.numTVerts = d2884eab.count;buildTVFaces a8d6e5fc;for j = 1 to d2884eab.count do setTVert  a8d6e5fc j d2884eab[j];for j = 1 to c9eed647.count do setTVFace a8d6e5fc j c9eed647[j];for j = 1 to b3ed996a.count do setNormal  a8d6e5fc j b3ed996a[j];if c3f8964b != undefined then AutoskinMeshNT a8d6e5fc c3f8964b a44b593e;return a8d6e5fc);fn b4738ef0 f e9e026ac fscale c3f8964b bde864e5 = (d74a55c3 = $'AnimData';a854ed63 = 0;c3e76d5a = 0;if d74a55c3==undefined then (d74a55c3 = dummy name:"AnimData" boxsize:([1,1,1]*fscale);c3f8964b = #();) else (d74a55c3.transform = matrix3 1;a854ed63 = getUserProp d74a55c3 "ACnt";if a854ed63 != undefined then c3e76d5a = getUserProp d74a55c3 ("A"+(a854ed63 as string)+"ED")+1 else a854ed63 = 0);animationRange = (interval 0f 100f);SliderTime = 0f;b7b5688d = readlong f;he3224f9 = readlong f;if (c3f8964b.count>0)AND(c3f8964b.count!=he3224f9) then return c3f8964b;for j = 1 to he3224f9 do (f47e885b = readlong f;gb809647 = readMTX44 f fscale;if a854ed63==0 then (ef84606e = dummy boxsize:[.1,.1,.1] showLinks:true showLinksOnly:true wirecolor:yellow;ef84606e.transform = gb809647;setUserProp ef84606e "BoneID" f47e885b;ef84606e.name = "Bone";if j <= 10 then ef84606e.name +="0";ef84606e.name += f47e885b as string;append c3f8964b ef84606e) else ef84606e = c3f8964b[j];for i = 1 to b7b5688d do (qx = readfloat f; qy = readfloat f;qz = readfloat f; qw = readfloat f;px = readfloat f; py = readfloat f; pz = readfloat f;with Animate on at Time (((i-1)*e9e026ac)+c3e76d5a) (ef84606e.rotation = (quat qx qy qz qw);ef84606e.position = ([px,py,pz]*fscale));if i==1 then (f47e885b = numkeys ef84606e.position.controller.X_Position.controller;if f47e885b>0 then (ef84606e.pos.controller.X_Position.controller.keys[f47e885b].inTangentType = #step;ef84606e.pos.controller.Y_Position.controller.keys[f47e885b].inTangentType = #step;ef84606e.pos.controller.Z_Position.controller.keys[f47e885b].inTangentType = #step)));f47e885b = numkeys ef84606e.position.controller.X_Position.controller;ef84606e.pos.controller.X_Position.controller.keys[f47e885b].outTangentType = #step;ef84606e.pos.controller.Y_Position.controller.keys[f47e885b].outTangentType = #step;ef84606e.pos.controller.Z_Position.controller.keys[f47e885b].outTangentType = #step);a854ed63 += 1;SetUserProp d74a55c3 ("A"+(a854ed63 as string)+"NE") (filenameFromPath bde864e5);SetUserProp d74a55c3 ("A"+(a854ed63 as string)+"ST") c3e76d5a;SetUserProp d74a55c3 ("A"+(a854ed63 as string)+"ED") (b7b5688d*e9e026ac+c3e76d5a-1);SetUserProp d74a55c3 "ACnt" a854ed63;AnimationRange = interval 0 ((b7b5688d-1)*e9e026ac);return c3f8964b);fn ce860b22 f f3ed944a fscale = (f3ed944a += "data\\";fseek f 0x3C #seek_set;i22ed89a = readlong f;be864d3a = #();c4ee802a = #();d90aff72 = #();for i = 1 to i22ed89a do (he39025e = (readlong f) as string;for j = 1 to (4-he39025e.count) do he39025e = "0" + he39025e;he39025e = f3ed944a + he39025e + ".msh";readlong f;ga4756f0 = readlong f;append be864d3a (ga4756f0+1);fseek f 0x48 #seek_cur;if (doesFileExist he39025e)==true then (mf = fopen he39025e "rb";a8d6e5fc = a5ff801d mf undefined fscale;a8d6e5fc.name = filenameFromPath he39025e;a8d6e5fc.transform = a8d6e5fc.transform * (matrix3 [1,0,0] [0,0,1] [0,1,0] [0,0,0]);fclose mf;d90aff72[i] = a8d6e5fc) else messagebox (he39025e + " Not found!"));g90e580c = readlong f;for i = 1 to g90e580c do (fb4d354b = (readlong f) as string;for j = 1 to (4-fb4d354b.count) do fb4d354b = "0" + fb4d354b;e4dfd20e = standardmaterial name:("mtl_"+fb4d354b) twosided:true;d3fb464a=f3ed944a + fb4d354b + ".dds";e4dfd20e.diffusemap = bitmapTexture name:("tex_"+fb4d354b) filename:d3fb464a;e4dfd20e.diffusemap.monoOutput = 1;e4dfd20e.diffusemap.alphaSource = 2;ShowTextureMap e4dfd20e e4dfd20e.diffusemap on;append c4ee802a e4dfd20e);for i = 1 to d90aff72.count do (if d90aff72[i]!=undefined then d90aff72[i].material = c4ee802a[(be864d3a[i])]));fn e8005f6d f i9f4ee57 e9e026ac fscale = (f3ed944a = (getFilenamePath i9f4ee57);fseek f 0 #seek_end;a5663ef1 = ftell f;fseek f 0x38 #seek_set;fb4a8783 = #();c3f8964b = #();for kk = 1 to 90 do (d48e565c = (readlong f);if d48e565c >= 0 then (a66ed904 = finditem fb4a8783 d48e565c;if a66ed904==0 then (append fb4a8783 d48e565c;d48e565c = d48e565c as string;for j = 1 to (4-d48e565c.count) do d48e565c = "0" + d48e565c;d48e565c = f3ed944a + "ani\\" + d48e565c + ".ani";af = fopen d48e565c "rb";if af!=undefined then (c3f8964b = b4738ef0 af e9e026ac fscale c3f8964b d48e565c;fclose af))));if c3f8964b != undefined then (b4ff4682 = $'AnimData';for b in c3f8964b do b.parent = b4ff4682;b4ff4682.transform = (matrix3 [1,0,0] [0,0,1] [0,1,0] [0,0,0]));if a5663ef1 > 0x4E8 then fseek f 0x4E8 #seek_set else fseek f 0x1A0 #seek_set;i5efd347 = readlong f;for i = 1 to i5efd347 do (hb399f51 = (readlong f) as string;for j = 1 to (4-hb399f51.count) do hb399f51 = "0" + hb399f51;hb399f51 = f3ed944a + hb399f51 + ".brv_itm";if (doesFileExist hb399f51)==true then (ff = fopen hb399f51 "rb";ef398653 = (readlong ff) as string;for j = 1 to (4-ef398653.count) do ef398653 = "0" + ef398653;ef398653 = f3ed944a + "data\\" + ef398653 + ".msh";fseek ff -8 #seek_end;ga4756f0 = (readlong ff) as string;for j = 1 to (4-ga4756f0.count) do ga4756f0 = "0" + ga4756f0;d3fb464a=f3ed944a + "data\\" + ga4756f0 + ".dds";fclose ff;if (doesFileExist ef398653)==true then (mf = fopen ef398653 "rb";a8d6e5fc = a5ff801d mf c3f8964b fscale;fclose mf;a8d6e5fc.name = filenameFromPath ef398653;a8d6e5fc.material = standardmaterial name:("mtl_"+(getfilenamefile d3fb464a));a8d6e5fc.material.diffusemap =  bitmapTexture name:("tex_"+ga4756f0) filename:d3fb464a;a8d6e5fc.material.diffusemap.monoOutput = 1;a8d6e5fc.material.diffusemap.alphaSource = 2;ShowTextureMap a8d6e5fc.material a8d6e5fc.material.diffusemap on) else messagebox (ef398653 + " Not Found!")) else messagebox (hb399f51 + " Not Found!")));button opnRes images:#(FatImage,undefined,10,ImgIdx,ImgIdx,ImgIdx,ImgIdx) width:200 Height:150 align:#center tooltip:"Import  Carpe Diem  File";on opnRes pressed do (bde864e5 = getOpenFileName caption:"Open Carpe DiemFile" types:"Carpe Diem Character (*.brv_chr)|*.brv_chr|Carpe Diem Object (*.brv_obj)|*.brv_obj|All File (*.*)|*.*|";if bde864e5 != undefined then (f = fopen bde864e5 "rb";c47fbb50 = GetFilenameType bde864e5;if c47fbb50==".brv_chr" then e8005f6d f  bde864e5 1 fscale else if c47fbb50==".brv_obj" then ce860b22 f (getFilenamePath bde864e5) fscale else Messagebox "Unsupported file!";fclose f)))
天龍八步 Dragon Oath

Image

Code: Select all

GameInfo = undefined;GameStg=#();cfg = fopen (scriptsPath + "FatImporter\\FatImporter.cfg") "rb";if cfg==undefined then (messagebox "Configuration file not found")else( nGames=readshort cfg #unsigned;GameInfo=for j=1 to nGames collect #((readstring cfg),(readstring cfg),(readstring cfg),(readbyte cfg #unsigned));fclose cfg);if GameInfo != undefined then (GameStg = for j in GameInfo collect j[1];sort GameStg);global fscale = 1;global TexExt = ".tga";global FatImage = scriptsPath + "FatImporter\\Fatbar01.jpg";global ImgIdx = 1;global GameTitle = "";fn readMTX44 fstream fscale=(m11=readfloat fstream;m12=readfloat fstream;m13=readfloat fstream;m14=readfloat fstream;m21=readfloat fstream;m22=readfloat fstream;m23=readfloat fstream;m24=readfloat fstream;m31=readfloat fstream;m32=readfloat fstream;m33=readfloat fstream;m34=readfloat fstream;m41=readfloat fstream;m42=readfloat fstream;m43=readfloat fstream;m44=readfloat fstream;mtx=matrix3 [m11,m12,m13] [m21,m22,m23] [m31,m32,m33] ([m41,m42,m43]*fscale);return mtx);fn readFixedString fstream nChar=(txt="";Null=false;for j=1 to nChar do (chr = readByte fstream #unsigned;if chr==0 then Null=true;if Null==true then continue;txt+=bit.intAschar(chr));return txt);fn AutoskinMeshNT msh BNary SKary=(DisableSceneRedraw();skn=skin();addmodifier msh skn;select msh;max modify mode;for b in BNary do(skinops.addbone skn b 1);select msh;for i=1 to msh.numVerts do skinops.ReplaceVertexWeights skn i SKary[i][1] SKary[i][2];max select none;EnableSceneRedraw());fn StripName txt=(rst=""; ss=txt as stringstream;while ((eof ss) != true) do (c=readchar ss; if c==" " then rst+="_" else rst+=c);return rst);rollout MainRoll "" ( );rollout AnimRoll "Fatduck Animation Viewer" (button ResetAmn "Reset" width:60 align:#left offset:[-5,0] across:2;Spinner Arange "Animation: " fieldwidth:45 type:#integer range:[1,100,1] align:#right offset:[5,3];button listAnim "List Animation" height:25 width:190 align:#center;label lbl "" align:#center;on ResetAmn pressed do (stopAnimation immediateReturn:true;animationRange = interval 0f 100f;sliderTime = 0);on listAnim pressed do (dmy = $'AnimData';if dmy != undefined then (try (numAnim = getUserProp dmy "ACnt";clearlistener();format "No. of Animation: %\n" numAnim;for i = 1 to numAnim do format "%>\t%\t[%,%]\n" i (getUserProp dmy ("A"+(i as string)+"NE")) (getUserProp dmy ("A"+(i as string)+"ST")) (getUserProp dmy ("A"+(i as string)+"ED"));Arange.range.y = numAnim) catch (messagebox "Animation Data not correct!" title:"")) else messagebox "Animation Data not found!" title:"");on Arange changed val do (dmy = $'AnimData';if dmy != undefined then (try (numAnim = getUserProp dmy "ACnt";Arange.range.y = numAnim;if val > numAnim then val = numAnim;st = getUserProp dmy ("A"+(val as string)+"ST");ed = getUserProp dmy ("A"+(val as string)+"ED");try ( lbl.text = ">>  " + (getUserProp dmy ("A"+(val as string)+"NE")) + "  <<" ) catch (lbl.text = "");if ed == st then ed+=1;stopAnimation immediateReturn:true;AnimationRange = interval st ed;SliderTime = st;playAnimation immediateReturn:true) catch (messagebox "Animation Data not correct!" title:"")) else messagebox "Animation Data not found!" title:""));if FatImpGUI != undefined then closeRolloutFloater FatImpGUI;FatImpGUI = newRolloutFloater "Fat Importer V1.5" 220 480 10 70;rollout GeneralRoll "General Setting" (dropdownlist GameList "Game List: " height:16 items:GameStg;group "Texture type" (radiobuttons TexType "" labels:#("tga","jpg","bmp","dds") columns:4 offset:[0,-3]);spinner VTscale "Import Scale : " range:[0.00001,100000,1] fieldwidth:60 align:#right;checkbutton AnimView "Fatduck Animation Viewer" height:25 width:190 align:#center;button HLP "?" height:17 width:17 pos:[180,5] tooltip:"About FatImporter";on HLP pressed do (rollout FatHelp "" (label lbl1 "FatImporter v1.5";label lbl2 "by";label lbl3 "Fatduck";label lbl4 "20 July, 2012";label lbl5 "";label lbl6 "If you like this Importer, you are welcome " align:#left;label lbl7 "to make some donation to support me!" align:#left;label lbl8 "";label lbl9 "For any feed back please go to my Forum" align:#left;hyperLink GRF "Game Research Chinese Forum" color:blue address:"http://gameresearch.5d6d.com" align:#left;label lbla "alternatively, find me on " align:#left across:2;hyperLink XTF "Xentax Forum" color:blue address:"http://forum.xentax.com/" align:#right;button ClHelp images:#((scriptsPath+"FatImporter\\FatIcon.jpg"),undefined,1,1,1,1,1) width:75 Height:75 align:#center;on ClHelp pressed do DestroyDialog FatHelp);createDialog  FatHelp 220 300);on GameList selected idx do (if AnimView.state==true then (removeRollout AnimRoll FatImpGUI;AnimView.checked=false);removeRollout MainRoll FatImpGUI;GC();for g in GameInfo where g[1]==GameList.selected do (GameTitle = g[1];if g[4]>128 then filein(scriptsPath + "FatImporter\\"+g[2]+".mse") else filein(scriptsPath + "FatImporter\\"+g[2]+".ms");FatImage = scriptsPath+"FatImporter\\"+g[3]+".jpg";ImgIdx = bit.and g[4] 127;exit);addRollout MainRoll FatImpGUI);on VTscale changed val do fscale = val;on TexType changed state  do (TexExt = case TexType.state of (1: ".tga";2: ".jpg";3: ".bmp";4: ".dds"););on AnimView changed state do (if state==true then addRollout AnimRoll FatImpGUI else removeRollout AnimRoll FatImpGUI));addRollout GeneralRoll FatImpGUI

User avatar
CriticalError
double-veteran
double-veteran
Posts: 641
Joined: Sun Jul 05, 2009 2:03 am
Has thanked: 75 times
Been thanked: 35 times

Re: 3d Models, animation importer - FatImporter

Post by CriticalError » Thu Feb 27, 2014 6:35 am

eyy fat i'm again here, well you don't answer me before but take a look this time, when try load animation in RF Online I get that, please if you can fix that, really gratefull, thanks.

Image
You do not have the required permissions to view the files attached to this post.

deant
n00b
Posts: 13
Joined: Mon Jul 15, 2013 11:11 am
Has thanked: 1 time

Re: 3d Models, animation importer - FatImporter

Post by deant » Fri Mar 14, 2014 6:32 pm

anyone got a way to open So Blonde *.dat file?

Sureno13
ultra-n00b
Posts: 1
Joined: Tue Dec 16, 2014 2:11 am

Re: 3d Models, animation importer - FatImporter

Post by Sureno13 » Tue Dec 16, 2014 2:54 am

Thank you so much!

ssringo
veteran
Posts: 96
Joined: Sat Apr 19, 2014 8:02 am
Has thanked: 45 times
Been thanked: 10 times

Re: 3d Models, animation importer - FatImporter

Post by ssringo » Sat Jan 24, 2015 5:57 am

Venetica went on Steam today (a game I hadn't heard of) and turns out to be pretty awesome. Saw there was tools that could import the models!

Tool not available anymore...

Sigh, I'm always too late to get tools. Anyone mind sharing it via PM?

User avatar
Acewell
VIP member
VIP member
Posts: 1253
Joined: Wed Nov 05, 2008 12:16 pm
Has thanked: 2379 times
Been thanked: 720 times

Re: 3d Models, animation importer - FatImporter

Post by Acewell » Sat Jan 24, 2015 12:25 pm


cire992
beginner
Posts: 25
Joined: Sun May 02, 2010 4:39 am

Re: 3d Models, animation importer - FatImporter

Post by cire992 » Sat Apr 11, 2015 10:45 pm

Sorry about the bump, does anyone still have the season 3 scripts? They weren't on the blog entry posted above.

Post Reply