Mostly Harmless

Difference between revisions of "UE3:ProcBuilding (UDK)"

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search
(Talk)
 
m (1 revision: class descriptions for UDK January update (part 4))
 
(One intermediate revision by one other user not shown)
Line 21: Line 21:
  
 
==Properties==
 
==Properties==
 +
===Property group 'Debug'===
 +
====bDebugDrawEdgeInfo====
 +
'''Type:''' [[bool]]
 +
 +
If TRUE, show face->edge relationships when this building is selected.
 +
 +
====bDebugDrawScopes====
 +
'''Type:''' [[bool]]
 +
 +
If TRUE, show scopes extracted from brushes.
 +
 
===Property group 'ProcBuilding'===
 
===Property group 'ProcBuilding'===
 
====bApplyRulesToFloor====
 
====bApplyRulesToFloor====
Line 48: Line 59:
  
 
If TRUE, generate a poly to fill the hole on the top of the building
 
If TRUE, generate a poly to fill the hole on the top of the building
 +
 +
'''Default value:''' True
 +
 +
====bSplitWallsAtRoofLevels====
 +
'''Type:''' [[bool]]
 +
 +
If TRUE, wall scopes will be split at each roof/floor level in the building group.
 +
 +
'''Default value:''' True
 +
 +
====bSplitWallsAtWallEdges====
 +
'''Type:''' [[bool]]
 +
 +
If TRUE, wall scopes will be split when another wall ends in the middle of a face.
  
 
'''Default value:''' True
 
'''Default value:''' True
Line 83: Line 108:
  
 
'''Default value:''' 1024
 
'''Default value:''' 1024
 +
 +
====LowLODPersistentActor====
 +
'''Type:''' {{cl|StaticMeshActor}}
 +
 +
'''[[Variables#Modifiers|Modifiers]]:''' const, editconst, crosslevelpassive
 +
 +
Since we want the low lod mesh of the building to be always loaded, we need an actor in the P map (or other always loaded level); this is that actor
  
 
====NonRectWallLightmapRes====
 
====NonRectWallLightmapRes====
Line 143: Line 175:
  
 
Current version of building - set to PROCBUILDING_VERSION when building meshed.
 
Current version of building - set to PROCBUILDING_VERSION when building meshed.
 +
 +
====BuildingMatParamMICs====
 +
'''Type:''' [[array]]<{{cl|MaterialInstanceConstant}}>
 +
 +
Array of MICs created to set BuildingMaterialParams on meshes in this building.
  
 
====CurrentSimpleMeshActor====
 
====CurrentSimpleMeshActor====
Line 174: Line 211:
  
 
UV Information about quads used for intermediate LOD - each element corresponds to element in LODMeshComps
 
UV Information about quads used for intermediate LOD - each element corresponds to element in LODMeshComps
 
====LowLODPersistentActor====
 
'''Type:''' {{cl|StaticMeshActor}}
 
 
'''[[Variables#Modifiers|Modifiers]]:''' crosslevelpassive
 
 
Since we want the low lod mesh of the building to be always loaded, we need an actor in the P map (or other always loaded level); this is that actor
 
  
 
====MaxFacadeZ====
 
====MaxFacadeZ====
Line 238: Line 268:
 
| {{tl|bMovable||Actor internal variables}}
 
| {{tl|bMovable||Actor internal variables}}
 
| False
 
| False
 +
|-
 +
| {{tl|bPathColliding||Actor}}
 +
| True
 
|-
 
|-
 
| {{tl|bRouteBeginPlayEvenIfStatic||Actor internal variables}}
 
| {{tl|bRouteBeginPlayEvenIfStatic||Actor internal variables}}
Line 260: Line 293:
 
| 222
 
| 222
 
|}
 
|}
|-
 
| {{tl|bStatic||Actor internal variables}}
 
| False
 
 
|-
 
|-
 
| {{tl|bWorldGeometry||Actor internal variables}}
 
| {{tl|bWorldGeometry||Actor internal variables}}
Line 280: Line 310:
 
! Property
 
! Property
 
! Value
 
! Value
 +
|-
 +
| {{tl|bDisableAllRigidBody||PrimitiveComponent properties}}
 +
| False
 
|-
 
|-
 
| {{tl|BlockActors||PrimitiveComponent properties}}
 
| {{tl|BlockActors||PrimitiveComponent properties}}
Line 363: Line 396:
 
Additional information about each scope of the building
 
Additional information about each scope of the building
 
; {{cl|ProcBuilding}} OwningBuilding : Building (could be 'child' building) that generated this scope.
 
; {{cl|ProcBuilding}} OwningBuilding : Building (could be 'child' building) that generated this scope.
; {{cl|ProcBuildingRuleset}} Ruleset : Which building ruleset is appluied to this scope
+
; {{cl|ProcBuildingRuleset}} Ruleset : Which building ruleset is applied to this scope
 +
; [[name]] RulesetVariation : Name of the ruleset variation desired on this scope
 
; [[bool]] bGenerateLODPoly : Whether we want to generate a RTT poly for this scope in the low LOD building
 
; [[bool]] bGenerateLODPoly : Whether we want to generate a RTT poly for this scope in the low LOD building
 +
; [[bool]] bPartOfNonRect : If this scope is within non-rectangular polygon.
  
 
==Native functions==
 
==Native functions==
Line 375: Line 410:
 
{{code|native function '''ClearBuildingMeshes''' ()}}
 
{{code|native function '''ClearBuildingMeshes''' ()}}
  
<!-- enter function description -->
+
Remove all the building meshes from this building
  
 
====FindComponentsForTopLevelScope====
 
====FindComponentsForTopLevelScope====

Latest revision as of 05:44, 17 January 2010

UDK Object >> Actor >> Brush >> Volume >> ProcBuilding

Contents

Package: 
Engine


Constants[edit]

ROOF_MINZ[edit]

Value: 0.7

If the normal Z component is greater than this, its a roof

PROCBUILDING_VERSION[edit]

Value: 1

Global building version. Increase this to force a re-gen of building meshes.

Properties[edit]

Property group 'Debug'[edit]

bDebugDrawEdgeInfo[edit]

Type: bool

If TRUE, show face->edge relationships when this building is selected.

bDebugDrawScopes[edit]

Type: bool

If TRUE, show scopes extracted from brushes.

Property group 'ProcBuilding'[edit]

bApplyRulesToFloor[edit]

Type: bool

If TRUE, meshing rules are applied to floor of building, instead of just leaving it as a flat poly

bApplyRulesToRoof[edit]

Type: bool

If TRUE, meshing rules are applied to roof of building, instead of just leaving it as a flat poly

bBuildingBrushCollision[edit]

Type: bool

Controls if the simple brush has collision.

Default value: True

bGenerateFloorMesh[edit]

Type: bool

If TRUE, generate a poly to fill the hole on the bottom of the building volume

bGenerateRoofMesh[edit]

Type: bool

If TRUE, generate a poly to fill the hole on the top of the building

Default value: True

bSplitWallsAtRoofLevels[edit]

Type: bool

If TRUE, wall scopes will be split at each roof/floor level in the building group.

Default value: True

bSplitWallsAtWallEdges[edit]

Type: bool

If TRUE, wall scopes will be split when another wall ends in the middle of a face.

Default value: True

BuildingFracMeshCompInfos[edit]

Type: array<PBFracMeshCompInfo>

Modifiers: const, editconst

Array of information about each fractured mesh making up the final building

BuildingMaterialParams[edit]

Type: array<PBMaterialParam>

Optional parameters than are set on all MICs applied to building.

BuildingMeshCompInfos[edit]

Type: array<PBMeshCompInfo>

Modifiers: const, editconst

Array of information about each component making up the final building

LODRenderToTextureLightingSize[edit]

Type: int

The size of the lighting texture applied to low LOD building, generated using render-to-texture

Default value: 256

LODRenderToTextureSize[edit]

Type: int

The size of the diffuse texture applied to low LOD of building, generated using render-to-texture.

Default value: 1024

LowLODPersistentActor[edit]

Type: StaticMeshActor

Modifiers: const, editconst, crosslevelpassive

Since we want the low lod mesh of the building to be always loaded, we need an actor in the P map (or other always loaded level); this is that actor

NonRectWallLightmapRes[edit]

Type: int

Light map resolution used for generated non-rectangular wall meshes

Default value: 64

RenderToTexturePullBackAmount[edit]

Type: float

Amount to pull back from the face to render from (caging depth). Nearby meshes closer than this will be rendered into the buildings RTT.

Default value: 125.0

RoofLightmapRes[edit]

Type: int

Light map resolution used for generated roof plane mesh

Default value: 64

Ruleset[edit]

Type: ProcBuildingRuleset

Pointer to ruleset in package used to build facade geometry for building

SimpleMeshComp[edit]

Type: StaticMeshComponent

Modifiers: const, editconst

Component used to display simple one-mesh version of building

SimpleMeshMassiveLODDistance[edit]

Type: float

Distance at which MassiveLOD will kick in and change between high detail meshes and the SimpleMeshComp / LowLODPersistentActor

Default value: 10000.0

Internal variables[edit]

AttachedBuildings[edit]

Type: array<ProcBuilding>

Set of buildings which are directly attached to this one (using Base pointer)

bQuickEdited[edit]

Type: bool

Modifiers: transient

If TRUE, this actor has been edited in 'quick' mode, and needs regen-ing when quick mode exits.

BuildingInstanceVersion[edit]

Type: int

Modifiers: const

Current version of building - set to PROCBUILDING_VERSION when building meshed.

BuildingMatParamMICs[edit]

Type: array<MaterialInstanceConstant>

Array of MICs created to set BuildingMaterialParams on meshes in this building.

CurrentSimpleMeshActor[edit]

Type: Actor

Modifiers: transient

This is the actor that owns the simple mesh component (either the building itself, or the LowLODPersistentActor) (transient as it's only valid while updating building)

CurrentSimpleMeshComp[edit]

Type: StaticMeshComponent

Modifiers: transient

This is the low detail component, either owned by this actor or in another level (transient as it's only really valid while updating building)

EdgeInfos[edit]

Type: array<PBEdgeInfo>

Set of all edges between scopes, indicating which scopes the edge connects, as well as angle and location

LODMeshComps[edit]

Type: array<StaticMeshComponent>

Modifiers: const

Components that are used for intermediate LOD, which should be hidden when generating render-to-texture

LODMeshUVInfos[edit]

Type: array<PBFaceUVInfo>

UV Information about quads used for intermediate LOD - each element corresponds to element in LODMeshComps

MaxFacadeZ[edit]

Type: float

Top-most z value of facade scopes

MinFacadeZ[edit]

Type: float

Bottom-most z value of facade scopes

NumMeshedTopLevelScopes[edit]

Type: int

This is the divider between TopLevelScopes that are used for meshing, and those used as bounds not non-rect polys for generating texture.

OverlappingBuildings[edit]

Type: array<ProcBuilding>

Modifiers: transient

Temporarty set of buildings that overlap this building.

TopLevelScopeInfos[edit]

Type: array<PBScopeProcessInfo>

Array of rulesets applied to each TopLevelScope of building

TopLevelScopes[edit]

Type: array<PBScope2D>

List of the top level rectangular scopes building

TopLevelScopeUVInfos[edit]

Type: array<PBFaceUVInfo>

List of UV info for each top level scope, should match size of TopLevelScopes.

Default values[edit]

Property Value
bBlockActors True
bColored True
bGameRelevant True
bHidden False
bMovable False
bPathColliding True
bRouteBeginPlayEvenIfStatic False
BrushColor
Member Value
A 255
B 135
G 255
R 222
bWorldGeometry True
CollisionType COLLIDE_CustomDefault

Subobjects[edit]

BrushComponent0[edit]

Class: Engine.BrushComponent

Inherits from: Volume.BrushComponent0

Property Value
bDisableAllRigidBody False
BlockActors True
BlockRigidBody True
RBChannel RBCC_BlockingVolume
ReplacementPrimitive None

Enums[edit]

EPBCornerType[edit]

Enum for choosing how to adjust roof/floor poly to fit with corner meshes

EPBC_Default 
EPBC_Chamfer 
EPBC_Round 

EScopeEdge[edit]

Enum used for indicating a particular edge of a scope

EPSA_Top 
EPSA_Bottom 
EPSA_Left 
EPSA_Right 
EPSA_None 

Structs[edit]

PBEdgeInfo[edit]

Modifiers: native

Struct that contains info about an edge between two scopes.

Object.Vector EdgeEnd 
End point (in building space) of this edge
Object.Vector EdgeStart 
Start point (in building space) of this edge
int ScopeAIndex 
Index of first scope that meets at this edge, in the ToplevelScopes array
EScopeEdge ScopeAEdge 
What edge of ScopeA this edge forms
int ScopeBIndex 
Index of second scope that meets at this edge, in the ToplevelScopes array
EScopeEdge ScopeBEdge 
What edge of ScopeB this edge forms
float EdgeAngle 
Angle at this edge, in degrees. 0 means flat, positive is convex (outside) corner, negative is interior

PBFaceUVInfo[edit]

Modifiers: native

Struct that contains information about the UVs of one face in the low detail mesh

Object.Vector2D Offset 
Offset into the texture page
Object.Vector2D Size 
Size of the face's region in the texture page

PBFracMeshCompInfo[edit]

Modifiers: native

FracturedStaticMeshComponent FracMeshComp 
Fractured mesh instance used to make up facade
int TopLevelScopeIndex 
Index into TopLevelScopes of scope that this mesh makes up part of

PBMaterialParam[edit]

Modifiers: native

Struct used to store information for building-wide material instances

name ParamName 
Name of parameter to set in all building MICs
Object.LinearColor Color 
Value to set parameter to in all building MICs

PBMeshCompInfo[edit]

Modifiers: native

Struct that gives information about each component making up the facades of a building

StaticMeshComponent MeshComp 
Mesh instance used to make up facade
int TopLevelScopeIndex 
Index into TopLevelScopes of scope that this mesh makes up part of

PBScope2D[edit]

Modifiers: native

Struct that defines a 2D 'scope' - region of a building face

Object.Matrix ScopeFrame 
Transform (in actor space) of the bottom-left corner of scope
float DimX 
Size of scope along its X axis
float DimZ 
Size of scope along its Z axis

PBScopeProcessInfo[edit]

Modifiers: native

Additional information about each scope of the building

ProcBuilding OwningBuilding 
Building (could be 'child' building) that generated this scope.
ProcBuildingRuleset Ruleset 
Which building ruleset is applied to this scope
name RulesetVariation 
Name of the ruleset variation desired on this scope
bool bGenerateLODPoly 
Whether we want to generate a RTT poly for this scope in the low LOD building
bool bPartOfNonRect 
If this scope is within non-rectangular polygon.

Native functions[edit]

BreakFractureComponent[edit]

native function BreakFractureComponent (FracturedStaticMeshComponent Comp, Object.Vector BoxMin, Object.Vector BoxMax)

Will break pieces off the specified fracture component that are within the specified box.

ClearBuildingMeshes[edit]

native function ClearBuildingMeshes ()

Remove all the building meshes from this building

FindComponentsForTopLevelScope[edit]

native function array<StaticMeshComponentFindComponentsForTopLevelScope (int TopLevelScopeIndex)

Util for finding all building components that form one top level scope.

FindEdgeForTopLevelScope[edit]

native function int FindEdgeForTopLevelScope (int TopLevelScopeIndex, EScopeEdge Edge)

Given an index of a scope in the TopLevelsScopes array (and which edge of that scope), returns index into EdgeInfos with that edge's info. Value of INDEX_NONE may be returned, indicating edge could not be found, which may indicate this is a scope-poly edge instead of scope-scope.

GetAllGroupedProcBuildings[edit]

native function GetAllGroupedProcBuildings (out array<ProcBuildingOutSet)

Get the set of all ProcBuildings (including this one) that are grouped together (using Base pointer)

GetBaseMostBuilding[edit]

native function ProcBuilding GetBaseMostBuilding ()

Walks up Base chain to find the root building of the attachment chain