Legacy:T3D File: Difference between revisions

From Unreal Wiki, The Unreal Engine Documentation Site
Solarsys (talk | contribs)
m removed my signature - seems I put it accidentally there
 
(8 intermediate revisions by 3 users not shown)
Line 14: Line 14:


===Exporting T3D ===
===Exporting T3D ===
* Export the whole map: File -> Export...  
* Export the whole map
* export one brush:
** File -> Export... (UnrealEd 1,2,3)
* export a part of a map: either save, delete discards and export as above, or select, copy, paste into a text editor and save as a T3D file
** File -> Export -> All.. (UnrealEd 4 - UT3)
* Export selected actors: File-> Export-> Selected Only ... (UnrealEd 4 only - UT3)
* Export one brush: Brush -> Export ...
* Copy/Paste: can copy paste any actor from any UnrealEd version to another one (Except for UnrealEd 4) or to any text editor such as notepad (Windows)


===Importing T3D ===
===Importing T3D ===
Line 32: Line 35:


The T3D format is a text file which stores information about map actors. It's in fact identical to what can be copied from UnrealEd to a text editor. An exported map looks like this:
The T3D format is a text file which stores information about map actors. It's in fact identical to what can be copied from UnrealEd to a text editor. An exported map looks like this:


<uscript>
<uscript>
Line 90: Line 94:
End Map</uscript>
End Map</uscript>


External link: http://unreal.jall.org/tutorials/t3d.html (new URL)
===Loading T3D brush geometry===


You must parse those informations correctly: PrePivot, Location, Rotation, MainScale, PostScale, TempScale, Polygon / Vertexes
External link: http://web.archive.org/web/20060710080159/http://unreal.jall.org/tutorials/t3d.html (new URL)


=== T3D File Structure ===
== Ux,UT,UT200x Maps ==
<uscript>
<uscript>
FOR each vertex of each polygon of parsed brush DO:
Begin Map
  do MainScale ... x *= MainScale[x], y *= MainScale[y], z *= MainScale[z]
    Begin Actor Class=<ClassName>
  do translation (-PrePivot[x], -PrePivot[y], -PrePivot[z])
    ...
  do rotation Yaw, Pitch, Roll
    End Actor
  do PostScale ... x *= PostScale[x], y *= PostScale[y], z *= PostScale[z]
    Begin Actor Class=<ClassName>
  do TempScale ... x *= TempScale[x], y *= TempScale[y], z *= TempScale[z]
    ...
  do translation (Location[x], Location[y], Location[z])
    End Actor
ENDFOR
    ...
End Map
</uscript>
</uscript>


Note:
== UT3 Maps ==
For Unreal Engine 3.x based maps (Unreal Tournament 2004 and 2003),PostScale,MainScale,TempScale and Rotation values are always null as the editor automatically updates vertices,origin and normal values when scaling up/down or rotating a brush.
 
 
Rotation matrix are the following:
 
<uscript>Roll Matrix-X Axis:
1, 0, 0, 0,
0, cos(roll),-sin(roll), 0,
0, sin(roll),cos(roll), 0,
0, 0, 0, 1</uscript>
 
<uscript>Pitch Matrix-Y Axis:
cos(pitch), 0, sin(pitch), 0,
0, 1, 0, 0,
-sin(pitch), 0,cos(pitch), 0,
0, 0, 0, 1)</uscript>
 
<uscript>Yaw Matrix-Z Axis:
cos(yaw), sin(yaw), 0, 0,
-sin(yaw), cos(yaw), 0, 0,
0, 0, 1, 0,
0, 0, 0, 1</uscript>
 
<uscript>Global Rotation Matrix=(Roll Matrix)*(Pitch Matrix)*(Yaw Matrix)</uscript>
 
Yaw, Roll and Pitch values are in radians. Original values from t3d files are in "Unreal format" where 2 rad = 65536.
For more information about Yaw, Pitch, Roll rotation matrix see http://mathworld.wolfram.com/EulerAngles.html.
 
Unknown (correct) effect: SheerAxis
 
Texturing information:<br>
Texture U and Texture V: contains information about scaling and texture rotation<br>
PanU and PanV: only used in Unreal Tournament<br>
Origin: where the texture is centered<br>
Normal: normally, the perpendicular vector of the surface where the texture is applied.<br>
 
TextureU, TextureV, PanU, PanV, Origin and Normal are informations about how to apply texture for the polygon.
 
[[Image:texinfot3d.jpg]] <br>
Texture Scaling can be found using this formula:
<uscript>
<uscript>
TexScaleX=1/(TextureU_x²+TextureV_x²)
Begin Map
TexScaleY=1/(TextureU_y²+TextureV_y²)
  Begin Level NAME=PersistentLevel
TexScaleZ=1/(TextureU_z²+TextureV_z²)
      Begin Actor Class=<ClassName>
      ...
      End Actor
      Begin Actor Class=<ClassName>
      ...
      End Actor
      ...
  End Level
Begin Surface
End Surface
End Map
</uscript>
</uscript>
Python T3D loader (doesn't care about texture informations): http://carolina.mff.cuni.cz/~gib/ut_utils/unreal_t3d_loader.zip see readme.txt in zip file


=== Scaling up/down whole map ===
Note: as UT3 T3D files have different header, any other not-UT3 t3d file can't be imported into UT3 editor (UnrealEd 4)
This operation is mainly needed when you want to port Unreal 1 or Unreal Tournament map to Unreal Tournament 2004 or Unreal Tournament 3.


To do so,considering ScaleFactor:
===T3D brush geometry===
<uscript>For each actor in T3D File
Information geometry is contained in the following actors:
set Location = ScaleFactor*Location
*Brush
set PrePivot = ScaleFactor*PrePivot
*Mover (only UT and U1 game)
If Actor==Brush
  For each polygon
    set Origin = ScaleFactor*Origin
    For each vertex
      set Vertex = ScaleFactor*Vertex
If Actor==StaticMesh
  set DrawScale3D = ScaleFactor*DrawScale3D
</uscript>


Usually scale factor values:
For more information about T3D brushes, see [[Legacy:T3D_Brush|T3D Brush]].
Unreal 1/Unreal Tournament to UT2003/UT2004/UT3: 1.25


==T3D Utilities ==
==T3D Utilities ==
* [[Legacy:MapScale|MapScale]] scales an entire .t3d file
* [[Legacy:MapScale|MapScale]] scales an entire .t3d file
* [[Legacy:MeshMaker|MeshMaker]] converts a prefab in .t3d format to a [[Legacy:Decoration|decoration]]
* [[Legacy:MeshMaker|MeshMaker]] converts a prefab in .t3d format to a [[Legacy:Decoration|decoration]]
* [http://www.unrealroc.com/Converter.html UnrealROC] converters: from 3DMF, to VRML/X3D/OBJ (including textures et al).
* [http://darendash.home.comcast.net/~darendash/Converter.html UnrealROC] converters: from 3DMF, to VRML/X3D/OBJ (including textures et al).


==Related Topics ==
==Related Topics ==
Line 183: Line 146:
* [[Legacy:Brush Exporting And Importing|Brush Exporting And Importing]]
* [[Legacy:Brush Exporting And Importing|Brush Exporting And Importing]]
* [[Legacy:Brush Hacking|Brush Hacking]]
* [[Legacy:Brush Hacking|Brush Hacking]]
* [[Legacy:T3D Brush|T3D Brush]]


'''Kefik:''' There can be also a tag 'CsgOper' which have one of two values ... 'CSG_Subtract' -> subtract the brush from space or 'CSG_Add' -> add this brush to shape.
'''Kefik:''' There can be also a tag 'CsgOper' which have one of two values ... 'CSG_Subtract' -> subtract the brush from space or 'CSG_Add' -> add this brush to shape.


'''Sobiwan:''' New to WIKI editing, but not using it.  I was searching for the actual format of T3D and found [http://users.skynet.be/fa550206/Slug-Production/Data/OpenGL-Documents/T3D-File-Format/T3D-File-Format.htm Mongo's description] of [http://www.planetunreal.com Planetunreal] to be extremely helpful.  I'll ask him ([email protected]) if we can use and/or edit his description here.  The format is much more involved than described here.  We can even supply examples of how to do particular hacks.
'''Sobiwan:''' New to WIKI editing, but not using it.  I was searching for the actual format of T3D and found <!-- invalid URL "http://users.skynet.be/fa550206/Slug-Production/Data/OpenGL-Documents/T3D-File-Format/T3D-File-Format.htm" replaced, --SeriousBarbie (talk) 21:11, 11 August 2016 (EDT) -->
[http://web.archive.org/web/20050913035722/http://users.skynet.be/fa550206/Slug-Production/Data/OpenGL-Documents/T3D-File-Format/T3D-File-Format.htm Mongo's description] of [http://www.planetunreal.com Planetunreal] to be extremely helpful.  I'll ask him ([email protected]) if we can use and/or edit his description here.  The format is much more involved than described here.  We can even supply examples of how to do particular hacks.


'''MadNad:''' Interestingly, I was able to convert a [http://madnad.com/ut2k3/Screenshots/q3dm7.jpg?link Quake3_Level] into a unreal map.  Quite interesting.  First i converted a *.bsp to a *.map in quake, then I made a level that was just a huge cube and converted it to *.t3d.  With an external app (i'll have to find the name of it ) I was able to merge these two together.  After some scaling and switching additive brushes in quake to subtractive brushes in ued and subtractive to additive, I compiled and had q3dm7 geometry. I don't necessarily recommend doing this, as it will take more time to fix than create it from scratch, but I thought I would share a little experience I had with this.
'''MadNad:''' Interestingly, I was able to convert a [http://madnad.com/ut2k3/Screenshots/q3dm7.jpg?link Quake3_Level] into a unreal map.  Quite interesting.  First i converted a *.bsp to a *.map in quake, then I made a level that was just a huge cube and converted it to *.t3d.  With an external app (i'll have to find the name of it ) I was able to merge these two together.  After some scaling and switching additive brushes in quake to subtractive brushes in ued and subtractive to additive, I compiled and had q3dm7 geometry. I don't necessarily recommend doing this, as it will take more time to fix than create it from scratch, but I thought I would share a little experience I had with this.

Latest revision as of 20:42, 26 January 2017

The T3D file format or Unreal Text File holds a text list of Unreal map objects. An entire map can be saved as this file format, or just a single actor or brush.

Note that while brushes, their applied textures and light actors are saved, the Unreal Geometry itself is not saved: upon importing a T3D file the map must be built.

Copying objects from UnrealEd and pasting into a text editor produces the same format.

Unreal Text format

Exported brushes and (other) actors. See T3D file.

  • Created by:
    • UnrealEd's File -> Import command
    • UnrealEd's Brush -> Import command (see Data Import and Export for more on both these commands).
    • is this created by external stuff too?

Exporting T3D

  • Export the whole map
    • File -> Export... (UnrealEd 1,2,3)
    • File -> Export -> All.. (UnrealEd 4 - UT3)
  • Export selected actors: File-> Export-> Selected Only ... (UnrealEd 4 only - UT3)
  • Export one brush: Brush -> Export ...
  • Copy/Paste: can copy paste any actor from any UnrealEd version to another one (Except for UnrealEd 4) or to any text editor such as notepad (Windows)

Importing T3D

File -> Import...

(note importing may take a LONG time)

Overheard on #utjb... :-)

<tarquin> t3d stores brushes & actors but not texturing, right?
<Mychaeel> Texturing as well.
(melds into the opening speech from Reservoir Dogs...)
<DaveA>Stores links to textures, and texture transforms, but not the pixels themselves

The T3D format is a text file which stores information about map actors. It's in fact identical to what can be copied from UnrealEd to a text editor. An exported map looks like this:


<uscript> Begin Map Begin Actor Class=LevelInfo Name=LevelInfo0

   TimeSeconds=17.008888
   Summary=LevelSummary'Entry.LevelSummary'
   DefaultGameType=Class'Botpack.UTIntro'
   AIProfile(0)=23784352
   AIProfile(1)=52
   AIProfile(2)=41
   AIProfile(3)=42
   AIProfile(4)=40
   AIProfile(5)=44
   AIProfile(6)=45
   AIProfile(7)=21846171
   AvgAITime=0.000000
   Level=LevelInfo'Entry.LevelInfo0'
   Tag=LevelInfo
   Region=(Zone=LevelInfo'Entry.LevelInfo0',iLeaf=-1)
   Name=LevelInfo0

End Actor Begin Actor Class=Brush Name=Brush0

   MainScale=(SheerAxis=SHEER_ZX)
   PostScale=(Scale=(X=0.250000,Y=8.000000,Z=3.000000),SheerAxis=SHEER_ZX)
   TempScale=(Scale=(X=0.250000,Y=8.000000,Z=3.000000),SheerAxis=SHEER_ZX)
   Level=LevelInfo'Entry.LevelInfo0'
   Tag=Brush
   Region=(Zone=ZoneInfo'Entry.ZoneInfo0',iLeaf=1,ZoneNumber=1)
   Location=(X=464.000000,Y=-16.000000,Z=64.000000)
   Begin Brush Name=Brush
      Begin PolyList
         Begin Polygon Item=OUTSIDE Texture=black1 Flags=4194304 Link=0
            Origin   -00160.000000,+00000.000000,+00128.000000
            Normal   +00000.000000,+00000.000000,+00001.000000
            TextureU +00004.000000,+00000.000000,+00000.000000
            TextureV +00000.000000,+00004.000000,+00000.000000
            Vertex   -00128.000000,-00128.000000,+00128.000000
            Vertex   +00128.000000,-00128.000000,+00128.000000
            Vertex   +00128.000000,+00128.000000,+00128.000000
            Vertex   -00128.000000,+00128.000000,+00128.000000
         End Polygon
         ...
      End PolyList
   End Brush
   Brush=Model'Entry.Brush'
   Name=Brush0

End Actor Begin Actor Class=PlayerStart Name=PlayerStart0

   Level=LevelInfo'Entry.LevelInfo0'
   Tag=PlayerStart
   Region=(Zone=ZoneInfo'Entry.ZoneInfo0',iLeaf=1,ZoneNumber=1)
   Location=(X=183.134430,Y=-987.334167,Z=33.978027)
   OldLocation=(X=-217.561523,Y=-44.538128,Z=-87.899948)
   Name=PlayerStart0

End Actor ... End Map</uscript>


External link: http://web.archive.org/web/20060710080159/http://unreal.jall.org/tutorials/t3d.html (new URL)

T3D File Structure

Ux,UT,UT200x Maps

<uscript> Begin Map

   Begin Actor Class=<ClassName>
   ...
   End Actor
   Begin Actor Class=<ClassName>
   ...
   End Actor
   ...

End Map </uscript>

UT3 Maps

<uscript> Begin Map

  Begin Level NAME=PersistentLevel
     Begin Actor Class=<ClassName>
     ...
     End Actor
     Begin Actor Class=<ClassName>
     ...
     End Actor
     ...
  End Level

Begin Surface End Surface End Map </uscript>

Note: as UT3 T3D files have different header, any other not-UT3 t3d file can't be imported into UT3 editor (UnrealEd 4)

T3D brush geometry

Information geometry is contained in the following actors:

  • Brush
  • Mover (only UT and U1 game)

For more information about T3D brushes, see T3D Brush.

T3D Utilities

Related Topics

Kefik: There can be also a tag 'CsgOper' which have one of two values ... 'CSG_Subtract' -> subtract the brush from space or 'CSG_Add' -> add this brush to shape.

Sobiwan: New to WIKI editing, but not using it. I was searching for the actual format of T3D and found Mongo's description of Planetunreal to be extremely helpful. I'll ask him ([email protected]) if we can use and/or edit his description here. The format is much more involved than described here. We can even supply examples of how to do particular hacks.

MadNad: Interestingly, I was able to convert a Quake3_Level into a unreal map. Quite interesting. First i converted a *.bsp to a *.map in quake, then I made a level that was just a huge cube and converted it to *.t3d. With an external app (i'll have to find the name of it ) I was able to merge these two together. After some scaling and switching additive brushes in quake to subtractive brushes in ued and subtractive to additive, I compiled and had q3dm7 geometry. I don't necessarily recommend doing this, as it will take more time to fix than create it from scratch, but I thought I would share a little experience I had with this.