TG3 File Format

From TexGen
Jump to navigationJump to search

Introduction

The file format for storing TexGen data has the extension TG3 which stands for TexGen v3. It is an XML file where each element usually corresponds to a class within TexGen core. When a TG3 file is saved, there is an option as to how much data is saved:

No matter which of the options is chosen TexGen is able to read the data and recreate the exact some model as was originally saved provided files are saved and loaded by the same version of TexGen. Results may vary when loading a file from a different version of TexGen depending on the output type. For example, if the class to represent a specific textile (e.g. CTextileWeave2D) is modified so that the geometry is created in a different way. Files saved with an old version with minimal output will have the new geometry whereas files saved with standard or full output will retain the old geometry.

Minimal

When minimal output is selected only the information within the Textile derived class is saved. For example, if a textile was created with the CTextileWeave2D class then only the weave pattern, fabric thickness, yarn heights, widths and spacings will be saved. From this the yarn path can be reconstructed. If the textile being saved is not a derived class then it will save as Standard instead.

Standard

When standard output is selected then the information about the yarns will be saved as well. This includes yarn master nodes, interpolation function, yarn section, repeats, etc...

Full

When full output is selected then everything that TexGen stores in memory is saved to file. This includes information such as the actual points lying on the surface of a yarn. These files tend to be very large and should not be used unless it is absolutely necessary.

Structure

The file follows the XML conventions and as such is human readable. Here is an example file:

   <?xml version="1.0" ?>
   <TexGenModel version="2.9.0">
       <Textile name="2DWeave(W:2,H:2)" type="CTextileWeave2D" AssignedDomain="Planes(N:6)" NeedsBuilding="0" NumXYarns="2" NumYYarns="2" GapSize="0" FabricThickness="0.2" Refine="0">
           <Yarn index="0" NumSlaveNodes="26" NumSectionPoints="20" NeedsBuilding="7">
               <Interpolation Periodic="1" type="CInterpolationBezier" />
               <YarnSection type="CYarnSectionConstant">
                   <SectionList index="0" type="CSectionEllipse" NeedsMeshing="1" Width="0.8" Height="0.1" />
               </YarnSection>
               <Repeat value="2, 0, 0" />
               <Repeat value="0, 2, 0" />
               <MasterNode index="0" Position="0, 0, 0.05" Tangent="0, 0, 0" Up="0, 0, 1" />
               <MasterNode index="1" Position="1, 0, 0.15" Tangent="0, 0, 0" Up="0, 0, 1" />
               <MasterNode index="2" Position="2, 0, 0.05" Tangent="0, 0, 0" Up="0, 0, 1" />
           </Yarn>
           <Yarn index="1" NumSlaveNodes="26" NumSectionPoints="20" NeedsBuilding="7">
               <Interpolation Periodic="1" type="CInterpolationBezier" />
               <YarnSection type="CYarnSectionConstant">
                   <SectionList index="0" type="CSectionEllipse" NeedsMeshing="1" Width="0.8" Height="0.1" />
               </YarnSection>
               <Repeat value="2, 0, 0" />
               <Repeat value="0, 2, 0" />
               <MasterNode index="0" Position="0, 1, 0.15" Tangent="0, 0, 0" Up="0, 0, 1" />
               <MasterNode index="1" Position="1, 1, 0.05" Tangent="0, 0, 0" Up="0, 0, 1" />
               <MasterNode index="2" Position="2, 1, 0.15" Tangent="0, 0, 0" Up="0, 0, 1" />
           </Yarn>
           <Yarn index="2" NumSlaveNodes="26" NumSectionPoints="20" NeedsBuilding="7">
               <Interpolation Periodic="1" type="CInterpolationBezier" />
               <YarnSection type="CYarnSectionConstant">
                   <SectionList index="0" type="CSectionEllipse" NeedsMeshing="1" Width="0.8" Height="0.1" />
               </YarnSection>
               <Repeat value="2, 0, 0" />
               <Repeat value="0, 2, 0" />
               <MasterNode index="0" Position="0, 0, 0.15" Tangent="0, 0, 0" Up="0, 0, 1" />
               <MasterNode index="1" Position="0, 1, 0.05" Tangent="0, 0, 0" Up="0, 0, 1" />
               <MasterNode index="2" Position="0, 2, 0.15" Tangent="0, 0, 0" Up="0, 0, 1" />
           </Yarn>
           <Yarn index="3" NumSlaveNodes="26" NumSectionPoints="20" NeedsBuilding="7">
               <Interpolation Periodic="1" type="CInterpolationBezier" />
               <YarnSection type="CYarnSectionConstant">
                   <SectionList index="0" type="CSectionEllipse" NeedsMeshing="1" Width="0.8" Height="0.1" />
               </YarnSection>
               <Repeat value="2, 0, 0" />
               <Repeat value="0, 2, 0" />
               <MasterNode index="0" Position="1, 0, 0.05" Tangent="0, 0, 0" Up="0, 0, 1" />
               <MasterNode index="1" Position="1, 1, 0.15" Tangent="0, 0, 0" Up="0, 0, 1" />
               <MasterNode index="2" Position="1, 2, 0.05" Tangent="0, 0, 0" Up="0, 0, 1" />
           </Yarn>
           <PatternCell x="0" y="0">
               <PatternElement value="1" />
               <PatternElement value="0" />
           </PatternCell>
           <PatternCell x="1" y="0">
               <PatternElement value="0" />
               <PatternElement value="1" />
           </PatternCell>
           <PatternCell x="0" y="1">
               <PatternElement value="0" />
               <PatternElement value="1" />
           </PatternCell>
           <PatternCell x="1" y="1">
               <PatternElement value="1" />
               <PatternElement value="0" />
           </PatternCell>
           <XYarnData index="0" Width="0.8" Height="0.1" Spacing="1" />
           <XYarnData index="1" Width="0.8" Height="0.1" Spacing="1" />
           <YYarnData index="0" Width="0.8" Height="0.1" Spacing="1" />
           <YYarnData index="1" Width="0.8" Height="0.1" Spacing="1" />
           <XYarns index="0">
               <XYarn yarnindex="0" />
           </XYarns>
           <XYarns index="1">
               <XYarn yarnindex="1" />
           </XYarns>
           <YYarns index="0">
               <YYarn yarnindex="2" />
           </YYarns>
           <YYarns index="1">
               <YYarn yarnindex="3" />
           </YYarns>
       </Textile>
       <Domain name="Planes(N:6)" type="CDomainPlanes">
           <Plane Normal="1, 0, 0" d="-0.5" />
           <Plane Normal="-1, 0, 0" d="-1.5" />
           <Plane Normal="0, 1, 0" d="-0.5" />
           <Plane Normal="0, -1, 0" d="-1.5" />
           <Plane Normal="0, 0, 1" d="-0.01" />
           <Plane Normal="0, 0, -1" d="-0.21" />
       </Domain>
   </TexGenModel>