[VISUALS] A Look at the Projector Systems

User avatar
Shadow
Masterful
Posts: 727
Joined: Tue Jan 29, 2008 12:00 am
Personal rank: Mad Carpenter
Location: Halle/Leipzig, Germany

[VISUALS] A Look at the Projector Systems

Post by Shadow » Mon Mar 17, 2008 11:18 am

I'm almost finished with both Projector Systems and I just thought about to provide you with detailed information and (later on) pictures about it.
Well the word is in plural form.. that means you'll have more than 1 Projector Instances available.
Both use mostly the same way to project a texture on a surface but heavily differ in the way the material is rendered on the surface. Advantages/Disadvantages of both Projectors are compared to standard Decals. Here we go...


PlaneProjector

Overview

The PlaneProjector traces forward in max. MaxTraceDistance units (a variable in both projectors) until he hits something (Actor or BSP) than he checks the SurfaceLocation and it's Normal (thx to the great Trace-Function!) and places a PlaneSheet right where he hit something. You are able to modify that Plane by changing it's Texture, Brightness, TextureStyle, Scaling and so on. A great benefit compared to standard decals: Projected Textures of this Projector may fade or change in texture style (not STY_Modulated anymore).

Parent Class: xtProjectorSystems
Path: Actor -> xtRootActor -> xtProjectorSystems -> xtPlaneProjector
Known Subclasses: DynamicPlaneProjector, ProcPlaneProjector, ScriptedPlaneProjector
Icon:

Image


Properties:

Image


Advantages
- The projected Material may fade dynamicly or change brightness instantly
- The projected Material may scale dynamicly or change size instantly
- The Texture Style (Normal, Masked, Translucent and Modulated) is freely adjustable, Standard Decals only Support STY_Modulated
- The size of the Projection may be affected by Distance between Projector and Surface (simulating Light/Shadow Effects)
- The projected Material is able to be an EnvironmentMap
- You can change it's Filtering
- It's less performance dependent than Standard Decals (yes!)
- It's always correctly adapting to the current Surface Normal
- You may change it's ForwardDrawing compared to the Surface (Distance: Surface <--> Projection)
- The Projection can be spinned (Roll-Rotation)
- The Projection can be lit dynamicly
- The Projection is always directional by the Projector and it's complete Rotation
- The Projector itself can be moved, rotated, attached, controlled and triggered (in subclasses)


Disadvantages
- It's unrecommended for multiple Surfaces, all in all it's just a simple Plane layered onto the Surface
- It'll be clipped on angled Surfaces
- It doesn't actually smoothly project on multiple Surfaces of a Mesh, Sheet or Particle


DecalProjector

Overview

The standard Projector traces forward in max. MaxTraceDistance units (a variable in both projectors) until he hits something (Actor or BSP) than he checks the SurfaceLocation, the Texture and it's Normal (thx to the great Trace-Function and the Texture Reading Function of Decals) and blends a Decal right where he hit something. You are able to modify that Decal by changing it's Texture, Scaling, Filtering and so on. A great benefit compared to standard decals: Projected Textures of this Projector can be rotated, dynamicly scaled, attached etc.

Parent Class: xtProjector
Path: Actor -> xtRootActor -> xtProjectorSystems -> xtProjector
Known Subclasses: DynamicProjector, ProcProjector, FluidProjector, ScriptedProjector
Icon:

Image


Properties:

Image


Advantages
- The projected Material may scale dynamicly or change size instantly
- The size of the Projection may be affected by Distance between Projector and Surface (simulating Light/Shadow Effects)
- The projected Material is able to be an EnvironmentMap
- You can change it's Filtering
- It's always correctly adapting to the current Surface Normal
- The Projection is always directional by the Projector and it's complete Rotation
- It's able to smoothly project a Texture onto multiple Surfaces even slopped or angled ones
- The Projector itself can be moved, attached, controlled and triggered (in subclasses)


Disadvantages
- It's unrecommended for multiple Surfaces that are angled in sharp angles over 60 °
- It doesn't actually smoothly project on multiple Surfaces of a Mesh, Sheet or Particle
- It doesn't support multiple Texture Styles
- It can't fade/change brightness


Misc Benefits of both Systems
- You get the current traced Surface Location
- You get the current traced Surface Normal
- You get the current traced Surface Texture
- You get the current traced Object (Levelinfo if hits BSP)
- Both Projectors have a Trace-Debugging System and are able to draw Visible Traces and
Surface Normals right were it should expected to be, it's just for debugging purposes

Side Note: Projectors might be implemented by Standard without adding it by hand again. For example every BeamEmitter has it's own ready-to-use Projector.
Image