Jump to content

Recommended Posts

  • Members
Posted (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 by mrmaller1905
  • mrmaller1905 changed the title to Project IGI .iff
  • 6 months later...
  • Engineers
Posted (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 by shak-otay

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...