There is no spoon

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

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search
(Talk)
 
(Talk)
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====

Revision as of 06:24, 17 January 2010

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

Contents

Package: 
Engine


Constants

ROOF_MINZ

Value: 0.7

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

PROCBUILDING_VERSION

Value: 1

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

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'

bApplyRulesToFloor

Type: bool

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

bApplyRulesToRoof

Type: bool

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

bBuildingBrushCollision

Type: bool

Controls if the simple brush has collision.

Default value: True

bGenerateFloorMesh

Type: bool

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

bGenerateRoofMesh

Type: bool

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

BuildingFracMeshCompInfos

Type: array<PBFracMeshCompInfo>

Modifiers: const, editconst

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

BuildingMaterialParams

Type: array<PBMaterialParam>

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

BuildingMeshCompInfos

Type: array<PBMeshCompInfo>

Modifiers: const, editconst

Array of information about each component making up the final building

LODRenderToTextureLightingSize

Type: int

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

Default value: 256

LODRenderToTextureSize

Type: int

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

Default value: 1024

LowLODPersistentActor

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

Type: int

Light map resolution used for generated non-rectangular wall meshes

Default value: 64

RenderToTexturePullBackAmount

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

Type: int

Light map resolution used for generated roof plane mesh

Default value: 64

Ruleset

Type: ProcBuildingRuleset

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

SimpleMeshComp

Type: StaticMeshComponent

Modifiers: const, editconst

Component used to display simple one-mesh version of building

SimpleMeshMassiveLODDistance

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

AttachedBuildings

Type: array<ProcBuilding>

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

bQuickEdited

Type: bool

Modifiers: transient

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

BuildingInstanceVersion

Type: int

Modifiers: const

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

BuildingMatParamMICs

Type: array<MaterialInstanceConstant>

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

CurrentSimpleMeshActor

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

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

Type: array<PBEdgeInfo>

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

LODMeshComps

Type: array<StaticMeshComponent>

Modifiers: const

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

LODMeshUVInfos

Type: array<PBFaceUVInfo>

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

MaxFacadeZ

Type: float

Top-most z value of facade scopes

MinFacadeZ

Type: float

Bottom-most z value of facade scopes

NumMeshedTopLevelScopes

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

Type: array<ProcBuilding>

Modifiers: transient

Temporarty set of buildings that overlap this building.

TopLevelScopeInfos

Type: array<PBScopeProcessInfo>

Array of rulesets applied to each TopLevelScope of building

TopLevelScopes

Type: array<PBScope2D>

List of the top level rectangular scopes building

TopLevelScopeUVInfos

Type: array<PBFaceUVInfo>

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

Default values

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

BrushComponent0

Class: Engine.BrushComponent

Inherits from: Volume.BrushComponent0

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

Enums

EPBCornerType

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

EPBC_Default 
EPBC_Chamfer 
EPBC_Round 

EScopeEdge

Enum used for indicating a particular edge of a scope

EPSA_Top 
EPSA_Bottom 
EPSA_Left 
EPSA_Right 
EPSA_None 

Structs

PBEdgeInfo

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

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

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

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

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

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

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

BreakFractureComponent

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

native function ClearBuildingMeshes ()

Remove all the building meshes from this building

FindComponentsForTopLevelScope

native function array<StaticMeshComponentFindComponentsForTopLevelScope (int TopLevelScopeIndex)

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

FindEdgeForTopLevelScope

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

native function GetAllGroupedProcBuildings (out array<ProcBuildingOutSet)

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

GetBaseMostBuilding

native function ProcBuilding GetBaseMostBuilding ()

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