Oxygen 2 - Manual: Difference between revisions
Line 480: | Line 480: | ||
If you want proxy to '''cast shadows''', you have to copy proxy selection in model shadow volume. Proxy model should of course contain some shadow LOD :-) | If you want proxy to '''cast shadows''', you have to copy proxy selection in model shadow volume. Proxy model should of course contain some shadow LOD :-) | ||
=== Properties === | |||
There are various types of properties (face, vertex, model in geometry and also some in resolution LODs) | |||
==== Geometry (model) named property ==== | |||
Properties that affect whole model are written in Geometry LOD. | |||
'''class''' for all models that get placed in Visitor | |||
vehicle | |||
house | |||
church // clock | |||
streetLamp //light | |||
road | |||
treeHard | |||
treeSoft | |||
bushHard | |||
bushSoft | |||
forest | |||
man | |||
'''Dammage (damage)''' engine is using both words for the same purpose | |||
building | |||
tree | |||
no | |||
bunker | |||
tent | |||
engine // explosive | |||
fence | |||
'''map''' map icon definition | |||
building | |||
fence | |||
house | |||
tree | |||
small tree | |||
bush | |||
forest square | |||
forest border | |||
forest triangle | |||
fortress | |||
hide | |||
fuelstation | |||
view-tower | |||
hospital | |||
church | |||
cross | |||
fountain | |||
chapel | |||
lighthouse | |||
rock | |||
busstop | |||
quay | |||
'''placement''' Assigns specific deformation according to the terrain shape map surface | |||
slope | |||
// the model is SKEWed according to the terrain shape, vertical lines remain vertical. Better than vertex property “Keep height “ in many cases | |||
SlopeLandContact | |||
placement=slopeZ | |||
placement=slopeX | |||
// variants where the transformation counts with landcontact defined points (1-3) | |||
'''sbsource=''' | |||
Which LOD will be used for shadowbuffer casting. If it is not set and shadow=hybrid is present, resolution LODs are used. It uses following values: | |||
visual | |||
//use resol LODs | |||
explicit | |||
// Use special SB LODs <11000,11999>. | |||
shadowvolume | |||
// Use SV LOD | |||
none | |||
// Do not render anything. | |||
'''prefershadowvolume=''' | |||
Choose which shadow casting technique will be used. 0 = Shadow Buffer; 1 = Shadow Volume | |||
'''Forcenotalpha = 1''' | |||
Some models with much alpha textures on their surfaces were considered as alpha objects and therefore were rendered in a speciall pass where it was not possible to cast shadows on them. There is aa new named property (in geometry LOD) using which you can force the whole model not to be considered as alpha model and shadows will be casted on it therefore. Negative impacts of such solution: various alpha sorting artifact may appear on alpha blended parts of such models. It will depend on particular situations if the effects will be bearable or not. | |||
'''Armor=10''' used by tents | |||
'''transparent=1''' absolete, no purpose now | |||
'''Step a xStep''' values for movement settings, they are generated automatically when you optimize animation | |||
'''xsize=0.99; ysize=0.528; xcount=6; ycount=5''' | |||
used by animated flags, obsolete | |||
'''autocenter=0''' | |||
some model classes are placed according to atomatic object center (cars) | |||
this property sets that possition to 0.0.0 from .p3d file will be used. It is offten used for proxies. | |||
'''frequent=1''' | |||
Marks objects that are placed in big amount using instancing. | |||
==== Resol LOD named property ==== | |||
'''LODNoShadow=1''' | |||
There will be no SW shadow cast from this LOD. Usualz LODs with more than 1000 faces | |||
'''LODNeeded''' | |||
number will set which LOD should be displayed in case player gets near to object | |||
'''noTL=1''' | |||
Marked LODs without T&L acceleration. Absolete now. | |||
'''keyframe=1''' | |||
marked models that are animated by keyframes stored in .p3d, used only in x:\data3d\racekT.p3d | |||
==== VIEW geometry named property ==== | |||
'''CanOcclude=0''' | |||
switches off oclussions, it is now absolete (occlusion is not count for rendering) | |||
==== FACE property ==== | |||
'''E''' | |||
You can assign textures and materials, check UV coords. and create selections by any face property | |||
User values are usefull for aditional features defined in configs. | |||
204 – 208 used for reducing ambient light inside vehicles | |||
50 - 60 used for destruction burn of surfaces | |||
'''Lighting/Shadows''' > not used anz more | |||
'''Enable shadow''' should be default on, shadow casting can be disabled bz named propery in LOD. | |||
==== Vertex Properties ==== | |||
'''Shift+E''' | |||
Lighting properties like "'''Always in Shadow'''" should no longer be used, as you can do the same thing with materials, but better (more generic concept). Most important reason is that lighting properties are defined done per-vertex, but lighting is done per-section (it was per-vertex with SW TL which is obsolete now). The conversion of point lighting flags to a section based one is not straightforward and may introduce many artifacts. | |||
'''Shining''' = emissive {1,1,1,1} ; diffuse[]={0,0,0,1}; ambient[]={0,0,0,1} | |||
'''Half Lighted''' = diffuse = {0.5,0.5,0.5,1} ; forcedDiffuse {0.5,0.5,0.5,1} | |||
'''Fully lighted''' = diffuse {0,0,0,1} + forcedDiffuse {1,1,1,1} | |||
Warrning! ambient, diffuse and forced diffuse are additional values that combined together result in pixel color | |||
Shadows are cast only in limited arrea around observer. | |||
If you want some surfaces (building interiors) kept allways in shadow, you should add this line to RVMAT | |||
renderFlags[] = {AlwaysInShadow}; |
Revision as of 15:44, 22 August 2007
Basic setup
External Viewer: C:\program files\bohemia interactive\arma\ArmA.exe -window -buldozer -noland
- -worldCfg= - you can force using specific world config (weather settings)
- -name= - you can force specific user game settings (your ArmA instalation has separate user settings that can for example disable shadows in .../My Documents/ArmA)
- - addons... used to specify a text file which ArmA.exe will use to load project-specific extras (sunlight, clouds, and sky textures)
- -cfg= - used to specify a basic configuration file (graphics, memory, size and position of viewer window)
- -noland - option to not display any ground
- -window - option to run viewer in window instead of fullscreen
DLL Folder - path to O2 installation
Path for textures - path to work disk (usually P:\)
Source Safe Database - login to Microsoft Visual Studio Source Safe database
Terminology
Point – individual point in space
Vertex – point of intersection of two or more edges
Edge - connection between two vertices
Polygon – planar surface with any number of edges
Triangle – polygon with with three edges
Quad – polygon with four edges
Face – in O2 faces can be triangles or quads
Normal - a normal is a line which is perpendicular to the plane of a polygon. In O2 it appears as a blue line at each vertex.
Skeleton - simplified representation of a model that has moving parts
Bone – base component of a skeleton used for animation, each bone represents a moving part
Section - is created everytime when there's need on the graphics card (GPU) to change parameters. This happens when information about each object, texture and material is read from the CPU or when bones limit is exceeded. The overhead for transmitting instructions between CPU and GPU then slows down the performance of scene-drawing, which could normally draw hundrets of polygons or textures.
The time it takes to render a scene depend largely on these factors:
- number of vertices in the scene
- textures - resolution and the number of times it appears in the scene are both factors. If the texture has transparency, even more calculations need to be performed.
- number of sections in the scene
The origin point for coordinates (xyz = 0,0,0) is marked by the intersection of the red grid lines. Gridlines are spaced at 1m and all units in O2 are measured in meters.
TAB – cycle between viewports (or click in any viewport with mouse to set the active viewport)
arrow keys – scroll in viewports
CTRL+arrow keys – faster scrolling in viewports
ALT+RMB – rotate camera (only works in 3D Preview viewport)
ALT+LMB – scroll in viewports
ALT+RMB+LMB - zoom (mousewheel can also be used to zoom)
F9 – reset to 4 viewport mode (3D, front, top, left)
Space – center active viewport to pin
S – switch between selection masking modes that will be displayed Buldozer (unselected=red, selected=shining, none)
pan camera W, E, S, arrows (same as Lmouse+drag)
rotate camera A, D
rotate object NumPad_arrows (same as Rmouse+drag)
CTRL + camera movements - slower movements
Numpad_5 – reset camera and center object.
Numpad +/- - zoom
[ ] - decrease/increase speed of RTM animations
SHIFT [ ] – spomalení animace //unsure of exact function
Enter / Mousewheel cycle through animations defined in model.cfg
Back space cycle backwards through animations defined in model.cfg
change weather RWIN+U / RWIN+I
change time of day RWIN+T / RWIN+Y
toggle display of textures RWIN+X
Buldozer Menu
Start/Restart - launch or restart Buldozer viewer
Other > Attach - Attach O2 to an existing instance of Buldozer
Other > Detach - Detach O2 from Buldozer
Other > Stop - Stop updating to Buldzoer
Other > Run Script - Start a script in Buldozer
Other > Refresh Viewer - Refresh Buldozer
Hide Textures - Toggle display of textures
Hide Materials - Toggle display of materials
Hide Proxies - Toggle display of proxies
Hide Hidden Faces - Toggle display parts set as 'hidden' in O2
Multiple LODs - Toggle display of multiple LODs
Show Shadow – Toggle display of shadows (uses ShadowVolume to cast shadows on Resolution LODs)
Beware Unsupported Textures - Toggle checking for unsupported textures. Buldozer will sometimes crash because of unsupported textures, this will check if the model has links only to PAA and PAC textures. Turning this on may decrease performance.
Bring to top after update – If this option is active, buldozer will be moved on top of other windows after each update
Selection Masking > Mask Texture - Unselected faces will be masked by a texture
Selection Masking > Mask Material - Unselected faces will be masked by a material
Selection Masking > Highligt - Selected faces will be fully lit
Selection Masking > Crop - Unselected faces will be hidden
Selection Masking > Disable - No selection masking
Selection Masking > Change Masking Texture - Set path to a texture to use for masking
Selection Masking > Change Masking Material - Set path to a material to use for masking
Ground object... – Setup an object to use as a default ground surface (can be useful for viewing shadows cast by objects)
Markers... – Setup an object to be shown in place of isolated vertices (can be useful for viewing memory points)
Autocenter - Automatically center view on object
Center to Pin - Center view on pin location
Center to Selection - Center view on selection
Freeze Animation - Freeze RTM animation
Environment Editor - Opens a dialog window to adjust settings for time of day, weather, fog and lens apperture. Also allows saving current settings as presets.
Pin Tool
The pin tool has many uses but basically is a moveable reference point, which can be activated and deactivated.
R – Sets cursor to 'move pin' mode. Click to place pin.
C – Centers pin to selection, or when no selection exists, centers pin to whole scene.
Space – Center active viewport to pin
Shift+C – Activate/deactivate pin. When active many functions will use the pin - such as rotate, scale, insert point.
You can use PIN mode also for simple snap.
Select LMB part of the mesh you want to snap to another. Keep the LMB pressed and move with pointer to desired snap location.
Creating and selecting objects
At the bottom of the O2 window there is a status bar which displays total vertices and faces and selected vertices and faces.
Insert creates a new point at the cursors location. If the pin is activated, the point will be created at the pins location.
LMB selects objects (drag to select an area)
Ctrl+LMB adds to selection
Ctrl+Shift+LMB substracts from selection
Delete - deletes selection
F6 - create new face from selected vertices (you must have only 3 or 4 vertices selected)
D - removes faces, but vertices remain
CTRL+Delete – removes vertices and merges adjacent faces; preserves UV coords in most situations.
ALT+Backspace – Undo
CTRL+L - Lock selection
CTRL+Shift+L - Unlock selection
CTRL+A - Select all
Editing
The most important selection modes are available via toolbar icons
Editing modes:
F2; O – select whole objects
F4; V – select vertices
T – select polygons
Z – zoom mode
RMB drag to move selection
Shift+RMB drag to create a copy of the selection
Ctrl+RMB drag to rotate selection, activate pin to rotate around pin location
Ctrl+Shift+RMB drag to scale selection, activate pin to scale from pin location
All the functions listed above can be done with numeric values Menu: Points > Transform 3D > Move / Rotate / Scale.
It also allows the function to be performed on the whole scene in each LOD by using the 'apply to all LODs' checkbox.
Ctrl+C / Ctrl+V copy and paste. Can be useful between LODs and also between instances of O2
X / Y / Z keys are used to constrain viewport movements to specified axis. Each viewport will display the axis it is currently constrained to beside the viewport name.
P - opens a dialog box to flatten selected points in the selected axis, and it can optionally flatten to pin's plane.
To merge all selected points into one, use Menu: Points > Merge or to merge using proximity threshold use Menu: Points > Merge near
IMPORTANT! Points can only be merged if they have the same vertex properties. While these are no longer necessary in the ArmA engine, they may be present in older models. Use Shift+E to view and edit properties of selected vertices.
For boolean operations, use Menu: Structure > Carve. It will use selected objects to create breakes in the unselected objects. It's not suitable for very complex shapes, and even with basic shapes it might generate some unnecessary geometry that should be manually cleaned.
Local Axes
For manipulation with charcter model selection (bones) a feature for local axis was introduced.
You can define local axis for each selection by a triangle that is named in work selection together with the mesh (work selections start with minus letter)
- hlava
Than after you enable local axis mode in menu, you can manipulate with the mesh in work selection using standard editing tools.
How to define sceleton with local axes and hierarchy:
- select proxy defining axis - menu from proxy will setup PIN - select all faces in hierarchy that will be afected by this axis - menu Selection from local axis will make a work selection (marked by "-" ) - make a named selection with the proxy and a bone
Hiding and Locking Selections
CTRL+H hide selection
CTRL+I invert selection
CTRL+Shft+H unhide selection
CTRL+L lock selection (note: a locked selection cannot be moved, but can be deleted)
CTRL+Shift+L unlock selection
Measuring
Measurements can be made using Shift+F11 to measure between the pin and the cursor.
Sharp and Smooth Edges
Edges in O2 can be either sharp or smooth. When selected, smooth edges are shown with bright red lines and sharp edges are shown with dark red lines and heavier lineweight. All newly created objects have smooth edges, which means the lighting is calculated using gouraud shading. A sharp edge is like a crease that prevents light from being averaged between adjacent faces.
All face lighting is calculated with surface normals. Normals can be displayed in O2 using File/Options/view normals=ON. A face will have a normal at each vertex. Sharp edges will have normals that are perpendicular to the faces they represent. Smooth edges will have normals that are positioned at the average angle between the faces they represent.
U – make selected edges sharp
I – make selected edges smooth
W - reverse face (flips normals)
Q – uncross face
F5 – recalculate normals
After rotating objects, it's usually necessary to recalculate normals by hitting F5. If there is some reason to prevent recalculating normals, they can be locked from the menu Points > Lock Normals after which they will appear pink instead of blue.
Import / Export
It's possible to import files of type 3DS, OBJ.
Export is not available in Oxygen 2 Personal Edition.
Import from *.3DS
- specify desired selections to import
- checkbox option allows creation of named selections in O2 based on selection names in MAX
- set unit of measure (O2 uses metres)
- option to convert TGA textures to PAA, and also import animation
- set the destination LODs for all MAX selections
Surfaces
Every face that will use textures/materials has to be mapped. UV map defines texture proportions and resolution. You can check mapping with menu feature structure->check faces.
Every face can have texture (diffuse map) and material (RVMAT) files attached. Path to theese files is defined in menu face properties (E) You can later see it also in Material library or in Mass renaming tool.
You should wisely decide how many files you have to use, because you define number of sections for drawing the model on graphics card.
Texture Mapping
A – flat mapping from background mode
LMB – select rectangle with texture
RMB – context menu
menu Surfaces->fit Bgr.from Selection – alligns the rectangle according to the selection
arrows – move with the rectangle
Shift+arrows – change rectangle size;
CTRL+LMB outside the rectangle – rotation mode; beware of nonplanar mapping
CTRL+LMB on the edge – scale
B – applies texture/mapping on the surface
CTRL+B – shows the actual mapping
M - „gismo“ maping (Surfaces->Gismo Mapping) – a separate menu starts with simple gismo features, the results can be interactively shown in Buldozer
Select by texture - CTRL+LMB on texture in library
E – face properties - assigning textures and materiáls (more in PROPERTY)
quick multiple renaming - tools->mass texture and material renaming
Neighbour Mapping
Neighbour mapping is mapping that uses informations about mapping from neighbour faces of selected faces. UV from neighbour are copied to unmapped selected faces. Function works repeatly, Until there are unmapped faces.
To use this function, make selection of area, that contains some ummapped faces (faces which have UV zeroed). There must be enough neighbour faces containg some mappings.
Function can be also used as variation of "unfold" or "unwrap" function, because it will try to calculate unknown UV by neighbour if there is no enough mapped neighbour faces, but at least one, which is used to calculate UV transform.
To use function for "unwrap", use following steps
- 1) remove mapping on area
- 2) choose one face from area to map (representative)
- 3) Map this face in UV editor and undeform ths face
- 4) select area to map
- 5) use neighbour mapping.
Note: function works best with triangles. Results of quads can be totaly unuseable.
UV unwrapp
To spare amount of textures modelers usualy unwrap surface of a model to a planar projection and compose textures in this layout.
In O2 you can do it with help of UV editor. It has simple editing tools for vertex and face manipulation (move, scale, merge, snap). It also can show selected faces in UV set and back. It also alows you to simply make new UV maping by transforming any face in 2D projection of the editor. UV Editor
Resources Library
This multi functional library can be used not only for materials.
You can explore all files linked to the model surfaces. Select faces assigned to textures/materials. Start MATplugin for editing materials. Rename or Drag and Drop files from the list. Add proxies from file structure on your disk. It shows some information about section count too.
Doubliclick 1) nothing selected – opens the file in associated program/plugin 2) with faces selected, applies texture/material on selected faces. 3) in mapping mode “automap selection” it will change background texture
Ctrl+Doubleclick 1) at texture and material - make selection of the mapped surfaces 2) at p3d – selects all proxies with this path
Ctrl+Shift+Doubleclick 1) texture/material – changes texture on selected faces 2) only for p3d - File -> Open selected *.p3d
Shift+Doubleclick 1) only for p3d – adds proxy in scene
DragAndDrop 1) texture/material – same as Ctrl+Shift+Doubleclick – changes texture on selected faces 2) P3D draged in viewport – makes Proxy 3) P3D draged on menu – opens the file
Rename works only for pathnames, usable in LODs (same as mass renaming)
MAT plugin
You need MAT.dll in O2. Usefull is also subfolder TEPLATES from VCS. Read more about materials in ArmA:_RVMAT
You can use templates stored in O2 sub folder
You can work wit primitives and switch view from model to primitive. You can select simple color for the primitive
RVMAT file content editing.
You can link various values together. Various types of color schemes are available.
You can pick any color on your monitor with the draged dropper icon
Color field shows actual setings, can be used to open color selection palete
If you use material templates, than stages are partialy locked.
Procedural textures can be easily edited in submenu
Copy / Paste v O2 (menu or special hotkey) can be applied on colors and stage settings
Warring : standard Ctrl+C a Ctrl+V works in actual window affected by actual “focus”
Use menu Edit -> Copy / Paste or hotkeyy Ctrl+Shift+C nebo Ctrl+Shift+V. For correct results.
Copy of collor/stage settings:
1) LMB on any small window with color value number or texture name 2) use menu Edit -> Copy, or Ctrl+Shift+C 3) choose other color panel, LMB on any slider, value or texture name 4) use menu Edit -> Paste, or Ctrl+Shift+V
Named Selections
(Shift+F5) O2 is not as powerfull as other modeling SW in creating and editing meshes, its power lies in named selections, properties and LOD layers.
- selections for each LOD can be created, and edited (rename, redefine) using context menu
- selections that start with “-” (minus) or “.” (dot) are not binarized – they are used for work purposes in BIS tools O2/Visitor
- each model class has a typical selections
- WARRNING : animated selections should have max 32 letters long name, thees selections should be in all animated LODs
- Weights assignment is used for skinning animated content. It is often done in external animation tool and imported in O2
Proxy objects
Instead of copy and paste model parts into various models you can use proxy object as a reference. Each proxy is another section of model. Proxy object is a simple face with 3 vertices's that represents the inserted model. The face should have standard named selection. You can easily use O2 tool Create->Proxy and fill the path of the inserted model there (the path syntax should start with the backslash and end without a .p3d)
\CA\wheeled\zasleh1_proxy
The inserted model is then visible in Buldozer. Default proxy face is oriented the same as the proxy model. Position and orientation of the proxy face will set new position of the inserted object. Proxy model must have geometry property autocenter = 0 otherwise 0.0.0 axis of the inserted model will be not correct.
There should be than added also note in the configuration file that will set the simulation class and the path of the proxy model.
If you want to decompose model into proxy parts you can use a named selection popup menu. If you create a selection and right click on it, you can export selection to proxy. If you have the same selection in other lods you can export them all at once too. There is also reverse function for importing proxy model from the path defined in proxy selection.
If you want proxy to cast shadows, you have to copy proxy selection in model shadow volume. Proxy model should of course contain some shadow LOD :-)
Properties
There are various types of properties (face, vertex, model in geometry and also some in resolution LODs)
Geometry (model) named property
Properties that affect whole model are written in Geometry LOD.
class for all models that get placed in Visitor
vehicle house church // clock streetLamp //light road treeHard treeSoft bushHard bushSoft forest man
Dammage (damage) engine is using both words for the same purpose
building tree no bunker tent engine // explosive fence
map map icon definition
building fence house tree small tree bush forest square forest border forest triangle fortress hide fuelstation view-tower hospital church cross fountain chapel lighthouse rock busstop quay
placement Assigns specific deformation according to the terrain shape map surface
slope // the model is SKEWed according to the terrain shape, vertical lines remain vertical. Better than vertex property “Keep height “ in many cases
SlopeLandContact
placement=slopeZ
placement=slopeX
// variants where the transformation counts with landcontact defined points (1-3)
sbsource=
Which LOD will be used for shadowbuffer casting. If it is not set and shadow=hybrid is present, resolution LODs are used. It uses following values:
visual //use resol LODs
explicit // Use special SB LODs <11000,11999>.
shadowvolume // Use SV LOD none // Do not render anything.
prefershadowvolume=
Choose which shadow casting technique will be used. 0 = Shadow Buffer; 1 = Shadow Volume
Forcenotalpha = 1
Some models with much alpha textures on their surfaces were considered as alpha objects and therefore were rendered in a speciall pass where it was not possible to cast shadows on them. There is aa new named property (in geometry LOD) using which you can force the whole model not to be considered as alpha model and shadows will be casted on it therefore. Negative impacts of such solution: various alpha sorting artifact may appear on alpha blended parts of such models. It will depend on particular situations if the effects will be bearable or not.
Armor=10 used by tents
transparent=1 absolete, no purpose now
Step a xStep values for movement settings, they are generated automatically when you optimize animation
xsize=0.99; ysize=0.528; xcount=6; ycount=5
used by animated flags, obsolete
autocenter=0
some model classes are placed according to atomatic object center (cars)
this property sets that possition to 0.0.0 from .p3d file will be used. It is offten used for proxies.
frequent=1
Marks objects that are placed in big amount using instancing.
Resol LOD named property
LODNoShadow=1
There will be no SW shadow cast from this LOD. Usualz LODs with more than 1000 faces
LODNeeded
number will set which LOD should be displayed in case player gets near to object
noTL=1
Marked LODs without T&L acceleration. Absolete now.
keyframe=1
marked models that are animated by keyframes stored in .p3d, used only in x:\data3d\racekT.p3d
VIEW geometry named property
CanOcclude=0
switches off oclussions, it is now absolete (occlusion is not count for rendering)
FACE property
E
You can assign textures and materials, check UV coords. and create selections by any face property
User values are usefull for aditional features defined in configs.
204 – 208 used for reducing ambient light inside vehicles 50 - 60 used for destruction burn of surfaces
Lighting/Shadows > not used anz more
Enable shadow should be default on, shadow casting can be disabled bz named propery in LOD.
Vertex Properties
Shift+E
Lighting properties like "Always in Shadow" should no longer be used, as you can do the same thing with materials, but better (more generic concept). Most important reason is that lighting properties are defined done per-vertex, but lighting is done per-section (it was per-vertex with SW TL which is obsolete now). The conversion of point lighting flags to a section based one is not straightforward and may introduce many artifacts.
Shining = emissive {1,1,1,1} ; diffuse[]={0,0,0,1}; ambient[]={0,0,0,1} Half Lighted = diffuse = {0.5,0.5,0.5,1} ; forcedDiffuse {0.5,0.5,0.5,1} Fully lighted = diffuse {0,0,0,1} + forcedDiffuse {1,1,1,1}
Warrning! ambient, diffuse and forced diffuse are additional values that combined together result in pixel color
Shadows are cast only in limited arrea around observer.
If you want some surfaces (building interiors) kept allways in shadow, you should add this line to RVMAT
renderFlags[] = {AlwaysInShadow};