Mostly Harmless

Difference between revisions of "Legacy:T3D Brush"

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search
(*MainScale: Scales up or down current brush before being rotated)
 
(Splitting T3D File to T3D Brush)
Line 2: Line 2:
  
 
The following actors used as brushes in T3D files:
 
The following actors used as brushes in T3D files:
*[http://wiki.beyondunreal.com/Legacy:Brushes[Brush]]
+
*[http://wiki.beyondunreal.com/Legacy:Brush[Brushes]]
 
*[http://wiki.beyondunreal.com/Legacy:Mover[Movers]] (only in Unreal 1 and Unreal Tournament)
 
*[http://wiki.beyondunreal.com/Legacy:Mover[Movers]] (only in Unreal 1 and Unreal Tournament)
  
= Actor structure =
+
=== Actor structure ===
 
<uscript>Begin Actor Class=Brush Name=Brush0
 
<uscript>Begin Actor Class=Brush Name=Brush0
 
     MainScale=(SheerAxis=SHEER_ZX)
 
     MainScale=(SheerAxis=SHEER_ZX)
Line 14: Line 14:
 
     Region=(Zone=ZoneInfo'Entry.ZoneInfo0',iLeaf=1,ZoneNumber=1)
 
     Region=(Zone=ZoneInfo'Entry.ZoneInfo0',iLeaf=1,ZoneNumber=1)
 
     Location=(X=464.000000,Y=-16.000000,Z=64.000000)
 
     Location=(X=464.000000,Y=-16.000000,Z=64.000000)
 +
    Rotation=(Yaw=49152)
 
     Begin Brush Name=Brush
 
     Begin Brush Name=Brush
 
       Begin PolyList
 
       Begin PolyList
Line 32: Line 33:
 
     Name=Brush0
 
     Name=Brush0
 
End Actor</uscript>
 
End Actor</uscript>
 +
 +
*MainScale: scales up or down current brush before make it rotate.
 +
*PostScale: scales up or down current brush after make it rotate.
 +
*TempScale: unknown effect
 +
*Location: where the brush is located in the map
 +
*Rotation: contains up to 3 values
 +
**Roll: X axis rotation
 +
**Pitch: Y axis rotation
 +
**Yaw: Z axis rotation
 +
*Begin Polygon Item=OUTSIDE Texture=black1 Flags=4194304 Link=0
 +
**Texture: texture applied to the current polygon with formatted string.
 +
***[TextureName] for Unreal 1 / Unreal Tournament maps
 +
***[PackageName.TextureName] for other UTx games.
 +
**Origin: where the texture is centered
 +
**Normal: normally, the perpendicular vector of the surface where the texture is applied
 +
**Texture U,V: contains information about scaling and texture rotation
 +
**PanU,PanV: only used in Unreal Tournament and Unreal 1
 +
**Vertex: X,Y,Z coordinates of the specified vertex
 +
 +
Note: NumTriangles = NumVertices-Floor(NumVertices/3)
 +
 +
[[Image:texinfot3d.jpg]]
 +
 +
===Loading T3D brush geometry===
 +
 +
You must parse those informations correctly: PrePivot, Location, Rotation, MainScale, PostScale, TempScale, Polygon / Vertexes
 +
 +
<uscript>
 +
FOR each vertex of each polygon of parsed brush DO:
 +
  do MainScale ... x *= MainScale[x], y *= MainScale[y], z *= MainScale[z]
 +
  do translation (-PrePivot[x], -PrePivot[y], -PrePivot[z])
 +
  do rotation Yaw, Pitch, Roll
 +
  do PostScale ... x *= PostScale[x], y *= PostScale[y], z *= PostScale[z]
 +
  do TempScale ... x *= TempScale[x], y *= TempScale[y], z *= TempScale[z]
 +
  do translation (Location[x], Location[y], Location[z])
 +
ENDFOR
 +
</uscript>
 +
 +
Note:
 +
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.
 +
 +
=== Scaling up/down brushes ===
 +
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:
 +
<uscript>For each actor in T3D File
 +
set Location = ScaleFactor*Location
 +
set PrePivot = ScaleFactor*PrePivot
 +
For each polygon
 +
    set Origin = ScaleFactor*Origin
 +
    For each vertex
 +
      set Vertex = ScaleFactor*Vertex
 +
</uscript>
 +
 +
Usually scale factor values:
 +
Unreal 1/Unreal Tournament to UT2003/UT2004/UT3: 1.25
 +
 +
=== Tools ===
 +
*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
 +
*[[Legacy:MapScale|MapScale]] scales an entire .t3d file (only works for UT/U1 maps)

Revision as of 02:39, 20 January 2009

A T3D Brush is geometry information contained into [T3D Files].

The following actors used as brushes in T3D files:

Actor structure

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)
    Rotation=(Yaw=49152)
    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
  • MainScale: scales up or down current brush before make it rotate.
  • PostScale: scales up or down current brush after make it rotate.
  • TempScale: unknown effect
  • Location: where the brush is located in the map
  • Rotation: contains up to 3 values
    • Roll: X axis rotation
    • Pitch: Y axis rotation
    • Yaw: Z axis rotation
  • Begin Polygon Item=OUTSIDE Texture=black1 Flags=4194304 Link=0
    • Texture: texture applied to the current polygon with formatted string.
      • [TextureName] for Unreal 1 / Unreal Tournament maps
      • [PackageName.TextureName] for other UTx games.
    • Origin: where the texture is centered
    • Normal: normally, the perpendicular vector of the surface where the texture is applied
    • Texture U,V: contains information about scaling and texture rotation
    • PanU,PanV: only used in Unreal Tournament and Unreal 1
    • Vertex: X,Y,Z coordinates of the specified vertex

Note: NumTriangles = NumVertices-Floor(NumVertices/3)

Texinfot3d.jpg

Loading T3D brush geometry

You must parse those informations correctly: PrePivot, Location, Rotation, MainScale, PostScale, TempScale, Polygon / Vertexes

FOR each vertex of each polygon of parsed brush DO:
   do MainScale ... x *= MainScale[x], y *= MainScale[y], z *= MainScale[z]
   do translation (-PrePivot[x], -PrePivot[y], -PrePivot[z])
   do rotation Yaw, Pitch, Roll
   do PostScale ... x *= PostScale[x], y *= PostScale[y], z *= PostScale[z]
   do TempScale ... x *= TempScale[x], y *= TempScale[y], z *= TempScale[z]
   do translation (Location[x], Location[y], Location[z])
ENDFOR

Note: 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:

Roll Matrix-X Axis:
1, 0, 0, 0,
0, cos(roll),-sin(roll), 0,
0, sin(roll),cos(roll), 0,
0, 0, 0, 1
Pitch Matrix-Y Axis:
cos(pitch), 0, sin(pitch), 0,
0, 1, 0, 0,
-sin(pitch), 0,cos(pitch), 0,
0, 0, 0, 1)
Yaw Matrix-Z Axis:
cos(yaw), sin(yaw), 0, 0,
-sin(yaw), cos(yaw), 0, 0,
0, 0, 1, 0,
0, 0, 0, 1
Global Rotation Matrix=(Roll Matrix)*(Pitch Matrix)*(Yaw Matrix)

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.

Scaling up/down brushes

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:

For each actor in T3D File
set Location = ScaleFactor*Location
set PrePivot = ScaleFactor*PrePivot
For each polygon
    set Origin = ScaleFactor*Origin
    For each vertex
      set Vertex = ScaleFactor*Vertex

Usually scale factor values: Unreal 1/Unreal Tournament to UT2003/UT2004/UT3: 1.25

Tools