Question for IPACS Developers; Creation / Workflow for making a 'tmd' file

  • Hey Team,

    When you start out to make a TMD file, is there an efficient way to do it? Or would one just go through the slow process of adding all the blocks of data for the animations and things?

    Is there a way to just make a template sheet with all the animations, then go through and set it up for a plane and delete the unwanted animations, etc? What do you suggest?

    My first thoughts were to copy/paste/rename a TMD and start setting it up and adapting it for the new plane. But sitting here, I was thinking 'I wonder if these guys have an efficient way to setup the sections in the TMD.'


    Very nice compiler, by the way. I havent seen something so exotic as to be able to convert the model, textures, sound files, AND create a screenshot. Nice.......

  • Hello Lionheart,

    Most of the times we use an existing tmd file of an aircraft with similar functionality. But you can also create a brand new txt file, rename it to tmd and then add the content all manually. You'll end up copy pasting from the existing aircraft sooner or later.

    In your case it would probably be best to copy the Extra 330LX extra330.tmd, extra330.tmc and extra330_takeoff.tmd, extra330_clean.tmd and extra330_landing.tmd into your own aircraft folder and rename them to fit your aircraft folder name.

    1. Then open the tmc, rename the aircraft, set the most important parameters like DisplayName, MinimumSpeed, ApproachSpeed, CruiseSpeed, MaximumSpeed etc. (Q stuff is not so important). ContactSpheres will need to be set, foreach entry you can set the third parameter (z-value) to -5.0 or so, then your aircraft will be initialized above ground for now.

    2. Open the tmd file and throw out all objects in the graphics section content (leave the <[]... > frame for the graphics section). Then either check if any collisionhull objects from the dynamics section have old 3D object names in their "Geometry" attributes or just delete all collision hull objects from the dynamics section.
    => Anywhere where you find "Geometry" or "GeometryList" as a parameter of an object, you have to make sure the name(s) of the 3D object(s) in that parameter is/are also present in your 3D model. Otherwise delete the collisionhull or graphics object.

    3. Open the _clean, _takeoff, etc. tmd files and comment out or delete the things in the "DynamicObjects" list. (Leave the frame for later)


    Then you edit the tmd file: Scroll to the beginning of the graphics section add this code:

    Code
    <[string8][object][rigidbodygraphics]
                <[string8][Name][Fuselage]>
                <[uint32][PositionID][Fuselage.R]>
                <[uint32][OrientationID][Fuselage.Q]>
                <[string8][GeometryList][  ]>
            >

    Then inside the GeometryList you add all 3D model objects from your 3D model. The exporter log file should provide you with that list, so you can just copy paste that over.

    Now you have your 3D model in the sim and you can still fly the extra physics.
    Then I'd manually add the entire graphics section. Start by adding something simple such as the elevator animation:

    Add this code after the Fuselage code from above, in the GeometryList add all 3D object names from the model, make sure to delete the names of these objects from the "GeometryList" of the Fuselage rigidbodygraphics object from above.

    Code
    <[string8][object][hingedbodygraphics]
                <[string8][Name][ElevatorGraphics]>
                <[uint32][PositionID][Fuselage.R]>
                <[uint32][OrientationID][Fuselage.Q]>
                <[string8][GeometryList][  ]>
                <[tmvector3d][Axis] [ 0.0 1.0 0.0 ]>
                <[tmvector3d][Pivot][ 0.0 0.0 0.0 ]>
                <[string8][InputID][ServoElevator.Output]>
            >


    Then adjust the Pivot (should be provided by the exporter log file as well I think, if you have the origin of 3D object set in 3Ds Max)

    Good luck,
    Jan

  • Rigidbody.R is the location vector of "Rigidbody"
    Rigidbody.Q is the orientation quaternion of "Rigidbody"
    Rigidbody.V is the velocity vector of "Rigidbody" (used in sound for doppler effect)

    I think technically those are pointers to the vectors, so you need to have a rigidbody in the physics that you can use.