Members mrmaller1905 Posted April 19, 2024 Members Posted April 19, 2024 (edited) What is .iff from Project IGI and can someone make an IFF plugin for Blender or Noesis, and do IFFs contain skeletons or animations? I've asked NEWME0 (Artiom Rotari) on GitHub but he won't create a 3D model or skeleton viewer: https://github.com/NEWME0/Project-IGI/issues/21 I tried Artiom's binary template for IGI 1 IFF but it failed: https://github.com/Jones-HM/project-igi-research-data/blob/f9bd5c32e239465305e3add1cc1d760368ba89a6/Templates/IGI1/IGI1_IFF.bt 000iff.rar Edited May 17 by mrmaller1905
Members mrmaller1905 Posted yesterday at 02:42 PM Author Members Posted yesterday at 02:42 PM (edited) In case who are interested in parsing and converting bones and animations from IGI 1 .iff files, here is the 010 Editor binary template. IFF.bt Edited yesterday at 02:46 PM by mrmaller1905
Engineers shak-otay Posted yesterday at 04:41 PM Engineers Posted yesterday at 04:41 PM (edited) You were told to check for the models first and I found that wasn't finished. Now seems you're trying to do the second step before the first one and I fear that won't work. edit: since I don't have the 010 editor I used the pfp py project and got this skeleton with 33 bones: subChunk[2] = struct { fourcc = Char[4] ('TLST') size = UInt(396 [0000018c]) bone_pos = struct[33] bone_pos[0] = struct { px = Float(0.0) py = Float(0.0) pz = Float(0.0) } bone_pos[1] = struct { px = Float(-0.5138922929763794) py = Float(183.35211181640625) pz = Float(553.5579833984375) } bone_pos[2] = struct { px = Float(0.1523585021495819) py = Float(-377.4803771972656) pz = Float(1280.41357421875) } bone_pos[3] = struct { px = Float(0.07410892099142075) py = Float(96.04873657226562) pz = Float(631.0419921875) } bone_pos[4] = struct { px = Float(-3.967119118897244e-05) py = Float(103.25892639160156) pz = Float(352.92730712890625) } bone_pos[5] = struct { px = Float(-1.018150806427002) py = Float(97.74694061279297) pz = Float(891.6131591796875) } bone_pos[6] = struct { px = Float(-0.11346861720085144) py = Float(76.36090850830078) pz = Float(121.43697357177734) } bone_pos[7] = struct { px = Float(3.710103192133829e-05) py = Float(454.25048828125) pz = Float(-358.7002258300781) } bone_pos[8] = struct { px = Float(-873.77099609375) py = Float(180.32762145996094) pz = Float(-380.1419677734375) } bone_pos[9] = struct { px = Float(-498.6019592285156) py = Float(-220.04612731933594) pz = Float(-1074.8599853515625) } bone_pos[10] = struct { px = Float(-476.04119873046875) py = Float(213.7456512451172) pz = Float(-980.4103393554688) } bone_pos[11] = struct { px = Float(-231.91920471191406) py = Float(-0.0029697269201278687) pz = Float(-439.615478515625) } bone_pos[12] = struct { px = Float(-11.216732025146484) py = Float(0.00010558709618635476) pz = Float(-200.45413208007812) } bone_pos[13] = struct { px = Float(-15.135907173156738) py = Float(-5.449031596072018e-05) pz = Float(-306.6474304199219) } bone_pos[14] = struct { px = Float(877.7891235351562) py = Float(180.32720947265625) pz = Float(-380.14031982421875) } bone_pos[15] = struct { px = Float(494.1496276855469) py = Float(-220.12353515625) pz = Float(-1074.810791015625) } bone_pos[16] = struct { px = Float(468.0498962402344) py = Float(213.82183837890625) pz = Float(-985.9440307617188) } bone_pos[17] = struct { px = Float(232.67367553710938) py = Float(-0.00010443734936416149) pz = Float(-433.71722412109375) } bone_pos[18] = struct { px = Float(13.601054191589355) py = Float(0.0003244699619244784) pz = Float(-200.13710021972656) } bone_pos[19] = struct { px = Float(2.6307296752929688) py = Float(-0.00010907361138379201) pz = Float(-307.5419921875) } bone_pos[20] = struct { px = Float(5.440348148345947) py = Float(725.950439453125) pz = Float(-228.98277282714844) } bone_pos[21] = struct { px = Float(9.466634219279513e-05) py = Float(2103.57861328125) pz = Float(392.4938659667969) } bone_pos[22] = struct { px = Float(8.082063141046092e-05) py = Float(1614.331787109375) pz = Float(1297.79296875) } bone_pos[23] = struct { px = Float(-430.3789978027344) py = Float(94.9665756225586) pz = Float(-44.37565231323242) } bone_pos[24] = struct { px = Float(-0.8461065888404846) py = Float(208.38644409179688) pz = Float(-1737.64599609375) } bone_pos[25] = struct { px = Float(79.94613647460938) py = Float(-363.0055236816406) pz = Float(-1827.7457275390625) } bone_pos[26] = struct { px = Float(-23.128799438476562) py = Float(390.8931579589844) pz = Float(-163.42630004882812) } bone_pos[27] = struct { px = Float(-30.827518463134766) py = Float(738.0623168945312) pz = Float(-258.8499755859375) } bone_pos[28] = struct { px = Float(435.3146667480469) py = Float(94.96534729003906) pz = Float(-44.37565231323242) } bone_pos[29] = struct { px = Float(3.454439401626587) py = Float(208.38644409179688) pz = Float(-1737.650146484375) } bone_pos[30] = struct { px = Float(-79.11219024658203) py = Float(-363.0055236816406) pz = Float(-1827.7415771484375) } bone_pos[31] = struct { px = Float(16.629308700561523) py = Float(390.8931579589844) pz = Float(-163.42630004882812) } bone_pos[32] = struct { px = Float(10.211040496826172) py = Float(738.0623168945312) pz = Float(-258.8499755859375) } _skipped = Char[0] ('') } I see frames with translation data but have no idea how to connect them to the bones: subChunk[2] = struct { fourcc = Char[4] ('BOTD') size = UInt(200 [000000c8]) translationData = struct[5] translationData[0] = struct { px = Float(7.546019554138184) py = Float(3.9196670055389404) pz = Float(3812.746337890625) time = Float(0.0) unk = Float[6] } translationData[1] = struct { px = Float(7.546060562133789) py = Float(1915.4722900390625) pz = Float(3615.44873046875) time = Float(640.0) unk = Float[6] } translationData[2] = struct { px = Float(7.5461015701293945) py = Float(5260.68994140625) pz = Float(3812.746826171875) time = Float(1760.0) unk = Float[6] } translationData[3] = struct { px = Float(7.546142578125) py = Float(7172.2421875) pz = Float(3615.448974609375) time = Float(2400.0) unk = Float[6] } translationData[4] = struct { px = Float(7.5461835861206055) py = Float(10039.5712890625) pz = Float(3812.746826171875) time = Float(3520.0) unk = Float[6] } _skipped = Char[0] ('') } For all reading here randomly, concerning an animation viewer for iff files this is the answer from DotCube1 on Apr 15, 2024 Quote No cause there are 2 major problems IFF can't be converted straight to animation. Either you can convert it into .BEF file to view it in plain format or convert it in .XAF file to import it into 3DS Max. Second problem is that till you don't convert the models to load them into a 3d editor animations are no use so I suggest you to work on models Edited 3 hours ago by shak-otay
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now