Oxygen 2 - Manual: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
mNo edit summary
m (Text replacement - "[[Arma 3 " to "[[Arma 3: ")
 
(39 intermediate revisions by 19 users not shown)
Line 1: Line 1:
=== Basic setup ===
{{TOC|side|1|2}}
 
----


= Basic setup =
'''External Viewer:''' C:\program files\bohemia interactive\arma\ArmA.exe -window -buldozer -noland
'''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
{| border="1" align="center" cellpadding="3" cellspacing="0" |
 
! colspan="3" bgcolor="#bbbbff" | Buldozer Startup Options
*'''-window''' - option to run viewer in window instead of fullscreen
|-
! bgcolor="#ddddff" | Option
! bgcolor="#ddddff" | Description
|-
| '''-worldCfg='''
| Force specific world configuration file. For example weather settings.
|-
| '''-name='''
| Force specific user game settings configuration file.
|-
| '''-addons...'''
| Used to specify a text file which Buldozer 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 full screen.
|-
|}




Line 24: Line 38:
'''Source Safe Database''' - login to Microsoft Visual Studio Source Safe database
'''Source Safe Database''' - login to Microsoft Visual Studio Source Safe database


 
= Terminology =
=== Terminology ===
 
----
 
'''Point''' – individual point in space
'''Point''' – individual point in space


Line 37: Line 47:
'''Polygon''' – planar surface with any number of edges  
'''Polygon''' – planar surface with any number of edges  


'''Triangle''' – polygon with with three edges
'''Triangle''' – polygon with three edges


'''Quad''' – polygon with four edges
'''Quad''' – polygon with four edges
Line 49: Line 59:
'''Bone''' – base component of a skeleton used for animation, each bone represents a moving part
'''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.
'''Section''' - is created every time when there's need for 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 hundreds of polygons or textures.


The time it takes to render a scene depend largely on these factors:
The time it takes to render a scene depend largely on these factors:
Line 59: Line 69:
*number of sections in the scene
*number of sections in the scene


 
= Viewport Navigation =
=== Viewport Navigation ===
 
----
 
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.  
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.  


Line 85: Line 91:




====Buldozer navigation====
==Buldozer navigation ==
 
----
 
pan camera '''W, E, S, arrows''' (same as Lmouse+drag)
pan camera '''W, E, S, arrows''' (same as Lmouse+drag)


Line 103: Line 106:
'''[ ]''' - decrease/increase speed of RTM animations
'''[ ]''' - decrease/increase speed of RTM animations
   
   
'''SHIFT [ ]''' – spomalení animace //unsure of exact function
'''SHIFT []''' – set animation phase


'''Enter / Mousewheel''' cycle through animations defined in model.cfg
'''Enter / Mousewheel''' cycle through animations defined in model.cfg
Line 115: Line 118:
toggle display of textures '''RWIN+X'''
toggle display of textures '''RWIN+X'''


 
== Buldozer Menu ==
====Buldozer Menu====
 
----
 
'''Start/Restart'''  - launch or restart Buldozer viewer
'''Start/Restart'''  - launch or restart Buldozer viewer


Line 131: Line 130:


'''Other > Refresh Viewer''' - Refresh Buldozer
'''Other > Refresh Viewer''' - Refresh Buldozer


'''Hide Textures''' - Toggle display of textures
'''Hide Textures''' - Toggle display of textures
Line 162: Line 160:


'''Selection Masking > Change Masking Material''' - Set path to a material 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)
'''Ground object...''' – Setup an object to use as a default ground surface (can be useful for viewing shadows cast by objects)
Line 179: Line 176:




=== Pin Tool ===
= Pin Tool =
 
----
 
The pin tool has many uses but basically is a moveable reference point, which can be activated and deactivated.
The pin tool has many uses but basically is a moveable reference point, which can be activated and deactivated.


Line 198: Line 192:




=== Creating and selecting objects ===
= 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.
At the bottom of the O2 window there is a status bar which displays total vertices and faces and selected vertices and faces.


Line 210: Line 201:
'''Ctrl+LMB''' adds to selection  
'''Ctrl+LMB''' adds to selection  


'''Ctrl+Shift+LMB''' substracts from selection
'''Ctrl+Shift+LMB''' subtracts from selection


'''Delete''' - deletes selection
'''Delete''' - deletes selection
Line 228: Line 219:
'''CTRL+A''' - Select all
'''CTRL+A''' - Select all


=== Editing ===
= Editing =
 
----
 
The most important selection modes are available via toolbar icons  
The most important selection modes are available via toolbar icons  


Line 243: Line 231:


'''Z''' – zoom mode
'''Z''' – zoom mode


'''RMB'''  drag to move selection  
'''RMB'''  drag to move selection  
Line 270: Line 257:




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.   
For boolean operations, use '''Menu: Structure > Carve'''.  It will use selected objects to create breaks 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 ====


----
== Local Axis ==
For manipulation with character model selection (bones) a feature for '''local axis''' was introduced.


For manipulation with charcter model selection (bones) a feature for '''local axis''' was introduced.
Local axis can be enabled under the Points Menu > Transform 3D > Show Local Axis.


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)
You can define local axis for each selection by using a triangle that is named in work selection together with the mesh (work selections start with minus letter)


  - hlava
  - hlava


Than after you enable local axis mode in menu, you can manipulate with the mesh in work selection using standard editing tools.  
Then 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:
How to define skeleton with local axes and hierarchy:
  - select proxy defining axis
  - select proxy defining axis
  - menu '''from proxy''' will setup PIN
  - menu '''from proxy''' will setup PIN
  - select all faces in hierarchy that will be afected by this axis
  - select all faces in hierarchy that will be affected by this axis
  - menu '''Selection from local axis''' will make a work selection (marked by "-" )
  - menu '''Selection from local axis''' will make a work selection (marked by "-" )
  - make a named selection with the proxy and a bone  
  - make a named selection with the proxy and a bone  




==== Hiding and Locking Selections ====
== Hiding and Locking Selections ==
 
----
 
'''CTRL+H''' hide selection
'''CTRL+H''' hide selection


Line 308: Line 291:




==== Measuring ====
== Measuring ==
 
----
 
Measurements can be made using '''Shift+F11''' to measure between the pin and the cursor.
Measurements can be made using '''Shift+F11''' to measure between the pin and the cursor.




=== Sharp and Smooth Edges ===
= 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 {{Link|https://en.wikipedia.org/wiki/Gouraud_shading|gouraud shading}}.  A sharp edge is like a crease that prevents light from being averaged between adjacent faces.
----
 
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 [http://en.wikipedia.org/wiki/Gouraud_Shading gouraud shading].  A sharp edge is like a crease that prevents light from being averaged between adjacent faces.


All face lighting is calculated with [http://en.wikipedia.org/wiki/Surface_normal 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.
All face lighting is calculated with {{Link|https://en.wikipedia.org/wiki/Surface_normal|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
'''U''' – make selected edges sharp
Line 333: Line 310:
'''F5''' – recalculate normals
'''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.
After rotating objects, it is 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 ===
 
----


= Import / Export =
It's possible to import files of type 3DS, OBJ.
It's possible to import files of type 3DS, OBJ.


Export is not available in Oxygen 2 Personal Edition.
==== Import from *.3DS ====
----


== Import from *.3DS ==
*specify desired selections to import
*specify desired selections to import


Line 359: Line 327:
*set the destination LODs for all MAX selections
*set the destination LODs for all MAX selections


 
= Surfaces =
=== 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 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.  
Every face can have texture (diffuse map) and material (RVMAT) files attached. Path to these 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.
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 ====
== Texture Mapping ==
 
{| border="1" align="center" cellpadding="3" cellspacing="0" |
----
! colspan="3" bgcolor="#bbbbff" | Texture Mapping
 
|-
'''A''' – flat mapping from background mode
! bgcolor="#ddddff" | Name
 
! bgcolor="#ddddff" | Description
'''LMB''' – select rectangle with texture
|-
 
| '''A'''  
'''RMB''' – context menu
| Flat mapping from background mode.
 
|-
menu '''Surfaces->fit Bgr.from Selection''' – alligns the rectangle according to the selection
| '''B'''  
 
| Applies texture/mapping on the surface.
'''''arrows''''' – move with the rectangle
|-
 
| '''CTRL+B'''  
'''Shift+''arrows''''' – change rectangle size;
| Shows the actual mapping.
 
|-
'''CTRL+LMB''' outside the rectangle – rotation mode; beware of nonplanar mapping
| '''M'''
 
| Gizmo“ mapping ('''Surfaces->Gizmo Mapping''') a separate menu starts with simple gizmo features, the results can be interactively shown in Buldozer.
'''CTRL+LMB''' on the edge – scale
|-
 
| '''E - Face Properties'''  
'''B''' – applies texture/mapping on the surface
| Assigning textures and materials (more in [[Oxygen#Properties | PROPERTY]])
 
|-
'''CTRL+B''' – shows the actual mapping
| '''Arrow Keys'''  
 
| Move with the rectangle.
'''M''' - „gismo“ maping ('''Surfaces->Gismo Mapping''') – a separate menu starts with simple gismo features, the results can be interactively shown in Buldozer
|-
 
| '''Shift + Arrow Keys'''  
'''Select by texture''' - CTRL+LMB on texture in library
| Change rectangle size.
 
|-
'''E – face properties''' - assigning textures and materiáls (more in [[Oxygen_2_-_Manual#Properties | PROPERTY]])
| '''LMB'''
 
| Select rectangle with texture.
quick multiple renaming - '''tools->mass texture and material renaming'''
|-
| '''RMB'''  
| Context menu.
|-
| '''CTRL + LMB'''  
| Outside the rectangle Rotation Mode (Note: Beware of non-planar mapping).
|-
| '''CTRL + LMB'''  
| On the edge Scale.
|-
| '''CTRL + LMB'''  
| In the texture library, Select by texture.
|-
| menu '''Surfaces->fit Bgr.from Selection'''
| Aligns the rectangle according to the selection.
|-
| Tools-> '''mass texture and material renaming'''
| Quick multiple renaming.
|-
|}


===== Neighbour Mapping =====


----
=== Neighbour Mapping ===
Neighbour mapping is mapping that uses information about mapping from neighbour faces of selected faces. UV from neighbour are copied to unmapped selected faces. Function works repeatedly, Until there are unmapped faces.


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 containing some mappings.


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 not enough mapped neighbour faces, but at least one, which is used to calculate UV transform.
 
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
To use function for "unwrap", use following steps
*1) remove mapping on area
*1) remove mapping on area
*2) choose one face from area to map (representative)
*2) choose one face from area to map (representative)
*3) Map this face in UV editor and undeform ths face
*3) Map this face in UV editor and un-deform this face
*4) select area to map
*4) select area to map
*5) use neighbour mapping.  
*5) use neighbour mapping.  


Note: function works best with triangles. Results of quads can be totaly unuseable.
Note: function works best with triangles. Results of quads can be totally unusable.


 
== UV unwrap ==
==== UV unwrapp ====
To spare amount of textures modellers usually unwrap surface of a model to a planar projection and compose textures in this layout.  
 
----
 
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.  
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. [[Oxygen 2 - UV Editor|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 allows you to simply make new UV mapping by transforming any face in 2D projection of the editor. [[Oxygen 2 - UV Editor|UV Editor]]
 
 
==== Resources Library ====


----


== Resources Library ==
This multi functional library can be used not only for materials.  
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.  
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
Doubleclick
1) nothing selected – opens the file in associated program/plugin  
1) nothing selected – opens the file in associated program/plugin  
2) with faces selected, applies texture/material on selected faces.  
2) with faces selected, applies texture/material on selected faces.  
Line 459: Line 433:
DragAndDrop
DragAndDrop
1) texture/material – same as Ctrl+Shift+Doubleclick – changes texture on selected faces  
1) texture/material – same as Ctrl+Shift+Doubleclick – changes texture on selected faces  
2) P3D draged in viewport – makes Proxy
2) P3D dragged in viewport – makes Proxy
3) P3D draged on menu – opens the file
3) P3D dragged on menu – opens the file


Rename works only for pathnames, usable in LODs (same as mass renaming)
Rename works only for pathnames, usable in LODs (same as mass renaming)




==== MAT plugin ====
== MAT plugin ==
 
You need MAT.dll in O2. Useful is also subfolder TEMPLATES from VCS.
----
 
You need MAT.dll in O2. Usefull is also subfolder TEPLATES from VCS.
Read more about materials in [[ArmA:_RVMAT]]
Read more about materials in [[ArmA:_RVMAT]]


You can use templates stored in O2 sub folder
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
You can work with primitives and switch view from model to primitive. You can select simple color for the primitive


RVMAT file content editing.  
RVMAT file content editing.  
Line 480: Line 451:
You can link various values together. Various types of color schemes are available.  
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
You can pick any color on your monitor with the dragged dropper icon


Color field shows actual setings, can be used to open color selection palete
Color field shows actual settings, can be used to open color selection palette




If you use material templates, than stages are partialy locked.  
If you use material templates, then stages are partially locked.  


Procedural textures can be easily edited in submenu
Procedural textures can be easily edited in submenu
Line 491: Line 462:


Copy / Paste v O2 (menu or special hotkey) can be applied on colors and stage settings  
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”  
Warning : 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.
Use menu Edit -> Copy / Paste or hotkey Ctrl+Shift+C and Ctrl+Shift+V. For correct results.


Copy of collor/stage settings:
Copy of color/stage settings:
  1) LMB on any small window with color value number or texture name  
  1) LMB on any small window with color value number or texture name  
  2) use menu Edit -> Copy, or Ctrl+Shift+C
  2) use menu Edit -> Copy, or Ctrl+Shift+C
Line 500: Line 471:
  4) use menu Edit -> Paste, or Ctrl+Shift+V
  4) use menu Edit -> Paste, or Ctrl+Shift+V


=== Named Selections ===
= Named Selections =
 
----
 
(Shift+F5)
(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.
O2 is not as powerful as other modelling 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 for each LOD can be created, and edited (rename, redefine) using context menu
Line 511: Line 479:
* selections that start with “-” (minus) or “.” (dot) are not binarized – they are used for work purposes in BIS tools O2/Visitor  
* 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  
* each model class has typical selections  


* WARRNING : animated selections should have max 32 letters long name, thees selections should be in all animated LODs  
* WARNING : animated selections should have a maximum name length of 32 letters, these 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
* Weights assignment is used for skinning animated content. It is often done in external animation tool and imported in O2




==== Proxy objects ====
== 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 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)  
----
 
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
  \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.
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 not be 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.
There should also then be added a 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 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.
Line 535: Line 500:




=== Properties ===
= Properties =
 
----
 
There are various types of properties (face, vertex, model in geometry and also some in resolution LODs)
There are various types of properties (face, vertex, model in geometry and also some in resolution LODs)


==== Geometry (model) named property ====
== Named properties ==
Dedicated pages:
* [[Arma 3: Named Properties|Arma 3]]
* [[Named_Properties|OFP]]


----
== FACE property ==
'''E'''


Properties that affect whole model are written in Geometry LOD.
You can assign textures and materials, check UV coords. and create selections by any face property


'''class''' for all models that get placed in Visitor
User values are useful for additional features defined in configs. 


  vehicle
  204 – 208 used for reducing ambient light inside vehicles
house
  50 - 60 used for destruction burn of surfaces
church  // clock
streetLamp  //light
  road
treeHard (Hard mean less affected by wind than soft, so hard sways very little compared to soft)
treeSoft
bushHard
bushSoft
forest
man


'''Lighting/Shadows''' > not used any more


'''Dammage (damage)''' engine is using both words for the same purpose
'''Enable shadow''' should be defaulted to on, shadow casting can be disabled by named property in LOD.




building
== Vertex Properties ==
tree
'''Shift+E'''
no
bunker
tent
engine // explosive
fence


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 now 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.


'''map''' map icon definition


  building
  '''Shining''' = emissive {1,1,1,1} ; diffuse[]={0,0,0,1}; ambient[]={0,0,0,1}
  fence
  '''Half Lighted''' = diffuse = {0.5,0.5,0.5,1} ; forcedDiffuse {0.5,0.5,0.5,1}
  house
  '''Fully lighted''' = diffuse {0,0,0,1} + forcedDiffuse {1,1,1,1}
tree
small tree
bush
forest square
forest border
forest triangle
fortress
hide
fuelstation
view-tower
hospital
church
cross
fountain
chapel
lighthouse
rock
busstop
quay


Warning! ambient, diffuse and forced diffuse are additional values that combined together result in pixel color


'''placement''' Assigns specific deformation according to the terrain shape map surface
Shadows are cast only in limited area around observer.


slope
If you want some surfaces (building interiors) kept always in shadow, you should add this line to RVMAT
//  the model is SKEWed according to the terrain shape, vertical lines remain vertical. Better than vertex property “Keep height “ in many cases


renderFlags[] = {AlwaysInShadow};


SlopeLandContact
= Animations =
You can do simple animations in O2 by creating and editing keyframes.


placement=slopeZ
Animation window shows key frames that can be added from context menu.


placement=slopeX
Playback speed can be adjusted in Buldozer with []


// variants where the transformation counts with landcontact defined points (1-3)
If you unfold mesh surface to UV map or you want to animate rigid body, you simply create a new keyframe and move the faces in desired position. After the animation is done, it is exported in an *.RTM file.


You select BindPose frame, select ExportMatrices from context menu and define root selection.


'''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:
If some vertices are in more than one selection (character animation, rigid body hierarchy), you can define weights for each selection.  


visual 
//use resol LODs


explicit 
== Animated character optimize ==
// Use special SB LODs <11000,11999>.
{| border="1" align="center" cellpadding="3" cellspacing="0" |
! colspan="3" bgcolor="#bbbbff" | Properties
|-
! bgcolor="#ddddff" | Name
! bgcolor="#ddddff" | Description
|-
| '''Autotime'''
| Setting animation time, mark first and last frame. AUTOTIME 1.0 for looped movement, AUTOTIME for other transition movements
|-
| '''Normalize Center'''
| Average movement and center of animation. Z-Normalize Center and X-Normalize Center.
|-
| '''Neutralize STEP'''
| Removes translations movement and stores this info in STEP properties (there are only rotations left).
|-
| '''Export Matrices'''
| Export RTM file.
|-
| '''Aiming Optimisation'''
| On imported matrices (RTM) – modify specific selections
|-
| '''Export Matrices'''
| Choose root bone from popup menu or cancel. The result is that RTM will be done. '''Note''':Often RTM bug will appear when bones have 0 size/volume, O2 cannot create center of gravity
|-
|}


shadowvolume 
{{Feature|important| Note If you do not have enough smooth transitions between frames, you can try '''Soften Selected''' (uses interpolation)}}
// Use SV LOD
none 
// Do not render anything.


== RTM playback ==
select from animated context menu "From Matrices" and open RTM file.


'''prefershadowvolume='''
* Correct character animation has step and xstep properties


Choose which shadow casting technique will be used. 0 = Shadow Buffer; 1 = Shadow Volume
* looping animation ANDs with key frame 1.000




== User animations ==


'''Forcenotalpha = 1'''
[[File:O2 Animation.jpg|thumb|200px|right|Animation Preview]]


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.
Another chance how to animate content ingame are USER ANIMS defined in model config. Engine can move with selection by HIDING, ROTATION or TRANSLATION. Part of model that will move must be in named selection also axis points and handles must be in selections. The rest is defined in model config. (anim.type, selection names, distance, angle...)
There are two types of animation - discrete and continuous. Discrete animations use named selections with all vertices with 100%weight. In case you want to use continuous animation (skinned surfaces) you cannot have one animated part as a sub-selection of another (skeleton hierarchy, for example gun/turret/vehicle)


'''Armor=10''' used by tents
To preview an animation, put the focus on the Bulldozer window, press either <Enter>, <Backspace> or the mouse wheel to select the desired animation source (indicated in the upper left corner), and then rotate the mouse wheel to step through the animation.


= LODs =
LOD means LEVEL-OF-DETAIL, so basically LOD layers in O2 represent various model resolutions. Some models are not visible, and are used for specific engine functions.


'''transparent=1''' absolete, no purpose now
You can create and edit LODs using context menu. Renaming is done in properties...




'''Step a xStep''' values for movement settings, they are generated automatically when you optimize animation
== Resolution LODs ==
LODs that are named by numbers are used for visual resolution versions of model. The lower number of LOD the more detailed the LOD should be. Usually you make the best resolution and then after the textures are mapped, degrade the resolution. (half amount of faces for each LOD)


You can enable view of previous LOD in OPTIONS menu. ArmA Engine selects the resolution LODs itself. The artist should only focus on the model shape and degradation balance.


'''xsize=0.99; ysize=0.528; xcount=6; ycount=5'''


used by animated flags, obsolete
'''VIEW Cargo/Commander/Gunner/Pilot'''


These are also resolution LODs that are used for first person view. These LODs should have better resolution than 1.LOD, but contain only visible parts.


'''autocenter=0'''
== Geometry LODs ==
Invisible LODs for engine calculation. Textures are used for special surface characteristics.


some model classes are placed according to atomatic object center (cars)
Each Geometry LOD must contain named selections of all components. If there are any animated parts, they should keep the names as in other LODs. You can automatically select components by menu '''Structure->Topology->Find Components'''.


this property sets that possition to 0.0.0 from .p3d file will be used. It is offten used for proxies.
Geometry components must be closed convex objects


some help tools are in menu '''structure->convexity'''


'''frequent=1'''
'''Convexity->Find non-convex''' and “find non-convexities” - checking tools
'''Component Convex Hull''' will try to decompose object in convex components
'''Convex Hull''' makes one convex object
use '''Make convex''' and '''Convexity Fine Tune''' if previous tool fails (different algorithm)


Marks objects that are placed in big amount using instancing.


=== Collision Geometry ===
Used for physical collision detection Must contain also information about object MASS (gray boxes) and center of gravity (blue cross).


==== Resol LOD named property ====
The model should be very simple, defining the basic model shape. Thinner parts than 15cm cannot collide in faster speeds. Better if the geometry is larger than the model shape.


----
CTRL+A select all. Use MASS dialog to assign total mass. If you want to move the center of gravity, select vertices and change their individual mass. Keep an eye on the “total mass” checkbox.


'''LODNoShadow=1'''
It is not a problem, if some components do not have any mass. The mass of the whole model is used for collision, gravity and momentum. BUT, the component will not be simulated, if it has no named selection set.


There will be no SW shadow cast from this LOD. Usualz LODs with more than 1000 faces
1 mass = 1kg


=== FIRE Geometry ===
More detailed than collisions. Used for fire detection. Surfaces modeled in this LOD do STOP any bullet (any caliber). Only special material can be used for surface that can be shot through, but not thrown grenades. (windows)


'''LODNeeded'''
If the fire geometry is missing, view geometry will be used intsead (or collision in worst case). So if you want model that does not stop bullets, make blank FireG LOD


number will set which LOD should be displayed in case player gets near to object
'''View cargo/commander/gunner/pilot''' - Fire Geometry – Actually useless LODs, till Engine enables soldiers fire to from vehicle cargo...


=== VIEW Geometry ===
This LOD is used for AI view occlusion – what can the AI soldier see. It is also used for occlusion detection for scene drawing optimisation.


'''noTL=1'''
WARNING: If there is no component in view or fire geometry, players cursor will be not able to activate action menu (for example climb ladder)


Marked LODs without T&L acceleration. Absolete now.
There is an example of tree VIEW geometry.


'''keyframe=1'''
AI cannot see through this geometry. If you don´t model this LOD, AI will use collision  geometry.


marked models that are animated by keyframes stored in .p3d, used only in x:\data3d\racekT.p3d
'''VIEW Cargo/Commander/Gunner/Pilot - Geometry'''


Same as previous LOD, but for first person AI view.


==== VIEW geometry named property ====
'''CanOcclude=0'''


switches off oclussions, it is now absolete (occlusion is not count for rendering)
== ShadowVolume LOD ==
Used for HW shadow casting. The shadows are cast from this LOD on resolution LOD surfaces. The shadow volume area is made by extruding the lit faces of the shadow LOD (faces that have normals oriented towards the light) in the light direction.


==== FACE property ====
LOD should be as simple as possible, to represent the 1st LOD shape and all its important parts. The shape should not exceed 1st LOD volume. Maximum polycount for shadowVolume is 1000 triangles.


----
All components must be Closed  (each edge must have 2 neighbor polygons) – check with '''Structure->Topology->findNonClosed'''. Normals can be oriented both ways, depending on desired purpose of the specific shadow LOD surface/component. This lod should not contain any texture or material.


'''E'''
All faces must be Triangulated (each polygon must have 3 edges) - use menu '''Structure->Triangulate'''


You can assign textures and materials, check UV coords. and create selections by any face property
All edges must be sharp – menu '''Surfaces->SharpEdge (U)'''


User values are usefull for aditional features defined in configs.
LOD must be nammed '''ShadowVolume 0.000''','''ShadowVolume 10.000''' or '''ShadowVolume 1000.000'''


204 – 208 used for reducing ambient light inside vehicles
* Shadow volume 0 is the main stencil shadow. It shuould have less than 1000 triangles.
50 - 60 used for destruction burn of surfaces


'''Lighting/Shadows''' > not used anz more
* Shadow Volume 10 is optimised stencil shadow LOD with as few triangles as possible.


'''Enable shadow''' should be default on, shadow casting can be disabled bz named propery in LOD.
* Shadow 1000 is special for trees, it uses alpha transparent textures to be calculated using GPU shadow buffer. (so this lod can have link on texture)


All faces must have property "Enable shadow", otherwise they will not cast shadow - menu Face properties (E).


==== Vertex Properties ====
If the Volume LOD is missing, HW cannot cast shadows and there is no other alternative, engine will use resolution LODs. OFP cannot cast too complex shadows, so every resolution LOD that contains more than 1000 faces, should have property '''LODNoShadow=1''' to disable CPU shadows. (bugs reported after binarization)
'''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.
'''ShadowVolume - View Cargo, ShadowVolume - View Pilot, ShadowVolume - View Gunner'''  - special shadow for static view resolution LODs. You have to enable them also in config:
viewDriverShadow = true;
viewGunnerShadow = true;
viewCargoShadow = true;


Virtual Reality engine can also cast shadows using '''SHADOW BUFFER'''. This is controlled by model property sbsource and prefershadowvolume in geometry LOD.


'''Shining''' = emissive {1,1,1,1} ; diffuse[]={0,0,0,1}; ambient[]={0,0,0,1}
For trees and vegetation there can also be used so called '''HYBRID SHADOW'''. This is controlled by model property Shadow=hybrid in Geometry LOD
'''Half Lighted''' = diffuse = {0.5,0.5,0.5,1} ; forcedDiffuse {0.5,0.5,0.5,1}
Those shadows are cast on all models except the model itself. Trees can use special shaders for leaves that simulates self shadowing.
'''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
== HitPoints ==
Modelled parts (selections) in this LOD represent valuable parts of the model that can be hit and affect the models in-game features. (class configuration)


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
== LandContact ==
Contains '''only vertices''' that represent contact with land. It is used mainly for vehicles and some characters. You can use it for structures too, in case you like to transform them by the surface. Wrong positioned points can cause “levitation” or “submerge the model under ground”


renderFlags[] = {AlwaysInShadow};


== Memory ==
Contains '''only vertices'''. Each vertex should have specific (class based) named selection. This LOD is used for defining important points and axes for model configuration. Selection names also correspond to animated model parts.


=== Animations ===


----
== Paths ==
Important LOD for AI path finding. AI can find its way through objects (such as buildings) Specific named selections are based on class definition.


You can do simple animations in O2 by creating and editing keyframes.
One building can have more entrance points, but all doors must be connected together with path. Every point where AI could stop, must be defined by named selection with ascending number according to the pathway. All path vertices's must be connected by polygons.


Animation window shows key frames that can be added from context menu.


Playback speed can be adjusted in Buldozer with [ ]
== Roadway ==
This LOD allows characters to walk on the other models. (walk upstairs, stay in the 2nd floor)


If you unfold mesh surface to UV map or you want to animate rigid body, you simply create new key frame and move the faces in desired position. After the animation is done, it is exported in *.RTM file.
Model is made of polygons (normals are useless here) Textures are used for material sound definition (+config definition)


You select BindPose frame, select ExportMatrices from context menu and define root selection.




If some vertices's are in more than one selection (character animation, rigid body hierarchy), you can define weights for each selection.


== Edit LODs ==
Working LOD for editing. It is removed during binarization. (UV set unfold, additional shadow volume levels...)


==== Animated characer optimize ====


----
= Automation =
You can record MACROS and launch SCRIPTS


'''Autotime''' – setting animation time, mark first and last frame


AUTOTIME 1.0 for looped movement, AUTOTIME for other transition movements
== Macro ==
Objektiv2 knows Macros. It is "easy to use" alternative of the scripts (eh, okay, scripts can do more things than the macros).


'''Normalize Center''' – average movement and center of animation
To create macro, use '''Automation->Macro->Record Macro''' or simply click on red button on main toolbar.


Z-Normalize Center and X-Normalize Center
When recording is active, O2 captures all mouse or keyboard actions. If you want to stop recording, deactivate the red button.


'''Neutralize STEP''' – removes translations movement and stores this info in STEP properties (there are only rotations left)  
To playback the captured macro, use button with blue arrow (Play).


'''Export Matrices''' – export RTM file
Current version of O2 can save and load captured macros as disk file. Explore the '''Automation->Macro menu'''.


'''Aiming Optimalisation''' – on imported matrices (RTM) – modify specific selections
You can play the macro on all LODs or on groups of LODs or on each frame of animation('''Automation->Macro->Play Macro''').


finaly '''export matrices''' , you can choose root bone from popup menu or cancel. The result RTM will be done.


offten RTM bug appears when bones have 0 size/volume - O2 cannot create centre of gravity
Problems and Limitations:


if you have not enough smooth transition between frames, you can try '''Soften Selected''' (uses interpolation)
* Macro is played "as is". O2 Macro recorder is trying to detect any changes in UI, but it will never be perfect. Sometime macro can be totally desynchronized and may destroy O2's workspace - so DON'T FORGET TO SAVE YOUR WORK before usage.


Properties Step and xStep are results of anim optimalization.
* Keyboard actions are recorded better than mouse. During recording use keyboard when it is possible. Don't record "free hand" actions, such as transformations. Instead, use transform dialogs.


* O2 Macro recorder cannot record actions that are invoked "when mouse cursor stays on item for a while". This is case of menus. Open all submenus by clicking, or use arrows keys.


==== RTM playback ====
* In File Open Dialog, activate the item by the Enter key (not mouse). Doubleclicks can cause problem sometimes


----
* During playback, you cannot control the mouse and the keyboard. Also, you cannot work with other applications. To interrupt the playback, use Alt+TAB or Ctrl+Alt+Del (and Cancel).


select from animated context menu "From Matrices" and open RTM file.
* Mouse Wheel is currently not supported.


* Correct character animation has step and xstep properties


* looping animation ands with key frame 1.000
== List of Shortcuts ==
'''Keys'''


'''F2''' Select object


==== User animations ====
'''F3''' Select faces


----
'''F4''' Select vertices


Another chance how to animate content ingame are USER ANIMS defined in model config. Engine can move with selection by HIDING, ROTATION or TRANSLATION. Part of model that will move must be in named selection also axis points and handles must be in selections. The rest is defined in model config. (anim.type, selection names, distance, angle...)
'''F5''' Recalculate normals
There are two types of animation - discreete and continuous. Discrete animations use named selections with all vertices with 100%weight. I case you want to use continuous animation (skinned surfaces) you cannot have one animated part as a subselection of another (skeleton hierarchy, for example gun/turret/vehicle)


'''F6''' Create face from selected vertices


=== LODs ===
'''F7''' Create box


----
'''F8''' Create cylinder


LOD means LEVEL-OF-DETAIL, so basicaly LOD layers in O2 represent various model resolutions. Some models are not visible, and are used for specific engine functions.
'''F9''' 3-side view + 3D preview


You can create and edit LODs using context menu. Renaming is done in properties...
'''~''' Does not work. Should be toggle Freeform select.
Use the menu instead: '''Edit - Edit mode - Laso'''
\ Triangulate: change 4-point surfaces into 2 3-point surfaces


'''a''' Set/modify texture mode


==== Resolution LODs ====
'''b''' Background mapping: Use to apply texture loaded using Set/modify “texture mode” on selected objects/faces.


----
'''c''' Center pin on selection


LODs that are named by numbers are used for visual resolution versions of model. The lower number of LOD the more detailer the LOD should be. Usualy you make the best resolution and than after the textures are mapped, degrade the resolution. (half amount of faces for each LOD)
'''d''' Remove faces


You can enable view of previous LOD in OPTIONS menu. ArmA Engine select the resolution LODs itself. The artist should only focus on the model shape and degradation balance.
'''e''' Face properties: bring up face properties


'''f''' Show/Hide back oriented faces


'''VIEW Cargo/Commander/Gunner/Pilot'''  
'''g''' Bring up Gizmo mapping dialog


Theese are also resolution LODs that are used for first person view. Theese LODs should have better resolution than 1.LOD, but contain only visible parts.
'''i''' Smooth edges


'''m''' Bring up Map Dialog


'''o''' Object select mode


==== Geometry LODs ====
'''p''' Flatten points: bring up the “flatten” dialog


----
'''q''' Uncross: cross or uncross selected edges


Invisible LODs for engine calculation. Textures are used for special surface characteristics.
'''r''' move pin


Each Geometry LOD must contains named selections of all components. If there are any animated parts, they should keep the names as on other LODs. You can automatically select components by menu '''Structure->Topology->Find Components'''.
'''s''' Viewer Focus selection


Geometry components must be closed convex objects
'''t''' Select surface mode


some help tools are in menu '''structure->convexity'''
'''u''' Sharp edges


'''Convexity->Find non-convex''' and “find non-convexies” - checking tools
'''v''' Vertex selection mode
'''Component Convex Hull''' will try to decompose object in convex components
'''Convex Hull''' makes one convex object
use '''Make convex''' and '''Convexity Fine Tune''' if previous tool fails (different algorithm)


'''w''' reverse: inverse normals


===== Collision Geometry =====
'''x''' Lock X movement: selected objects can only be moved in X direction


----
'''y''' Lock Y movement: selected objects can only be moved in Y direction


Used for physical collision detection Must contain also information about object MASS (gray boxes) and center of gravity (blue cross).
'''z''' Bound to 2 functions, using may cause problems:
 
The model should be very simple, defining the basic model shape. Thinner parts than 15cm cannot collide in faster speeds. Better if the geometry is larger than model shape.
 
CTRL+A select all. Use MASS dialog to assign total mass. I f you want to move center of gravity, select vertices's and change their individual mass. Keep eye on the “total mass” checkbox.


It is not a problem, if some components do not have any mass. The mass of whole model is used for collision, gravity and momentum. BUT, the component will not be simulated, if there it has no named selection set.
In top/front/side view: Zoom mode


1 mass = 1kg
In 3D preview: Lock Z movement: selected objects can only be moved in Z direction.


===== FIRE Geometry =====
'''Insert''' Create vertex


----
'''Delete''' Delete selection


More detailed than collisions. Used for fire detection. Surfaces modeled in this LOD do STOP any bullet (any caliber). Only special material can be used for surface that can be shot through, but not thrown grenades. (windows)
'''Space''' Center on pin


If the fire geometry is missing, view geometry will be used intsead (or collision in worst case). So if you want model that does not stop bullets, make blank FireG LOD


'''View cargo/commander/gunner/pilot''' - Fire Geometry – Actualy useless LODs, till Engin enables soldiers fire from vehicle cargo...
'''Numeric Keyboard'''
<nowiki>*</nowiki> Center camera on selection


===== VIEW Geometry =====
'''/''' Triangulate: change 4-point surfaces into 2 3-point surfaces


----
'''+''' Camera zoom in


This LOD is used for AI view occlusion – what can the AI soldier see. It is also used for occlusion detection for scene drawing optimalisation.
'''-''' Camera zoom out


WARRNING: If there will be not present component in view or fire geometry, players cursor will be not able to activate action menu (for example climb ladder)


There is an example of tree VIEW geometry.
'''Shift+Keys'''
 
Bound to 2 functions, using may cause problems
AI cannot see through this geometry. If you don´t model this LOD, AI will use collision  geometry.
 
'''VIEW Cargo/Commander/Gunner/Pilot - Geometry'''  


Same as previous LOD, but for first person AI view.
'''c''' Use Pin toggle: all operations now act at the position of the pin.  


press “Insert” to create a new vertex at the position of the pin.


==== ShadowVolume LOD ====
'''e''' Bring up Vertex Properties dialog


----
'''d''' Weld selected vertices (merge selected vertices to a single vertex)


Used for HW shadow casting. The shadows are cast from this LOD on resolution LOD surfaces. The shadow volume area is made by extruding the lit faces of the shadow LOD (faces that have normals oriented towards the light) in the light direction.
'''m''' same as Shift+D


LOD should be as simple as possible, to represent the 1st LOD shape and all its important parts. The shape should not exceed 1st LOD volume. Maximum polycount for shadowVolume is 1000faces, except special agreed cases. (broken houses volume)
'''o''' Bring up Modelling Coloration dialog


All components must be Closed  (each edge must have 2 neighbor polygons) – check with '''Structure->Topology->findNonClosed'''. Normals can be oriented both ways, depending on desired purpose of the specific shadow LOD surface/component.
'''r''' Turn Edge


All faces must be Triangulated (each polygon must have 3 edges) - use menu '''Structure->Triangulate'''
'''w''' Bring up Linear Deform dialog


All edges must be sharp – menu '''Surfaces->SharpEdge (U)'''
'''Delete''' Try to delete vertex, close polygon, keep UV mapping


LOD must be nammed '''ShadowVolume 0.000''' (there will be latter resolution variants)


All faces must have property "Enable shadow", otherwise they will not cast shadow - menu Face properties (E).
'''Ctrl+Keys'''


If the Volume LOD is missing, HW cannot cast shadows and there is no other alternative, engine will use resolution LODs. OFP cannot cast too complex shadows, so every resolution LOD that contains more than 1000 faces, should have property '''LODNoShadow=1''' to disable CPU shadows. (bugs reported after binarization)
'''1''' Toggle Named Property window


'''ShadowVolume - View Cargo, ShadowVolume - View Pilot, ShadowVolume - View Gunner''' - special shadow for view resol LODs. You have to enable them also in config:
'''a''' Select all
viewDriverShadow = true;
viewGunnerShadow = true;
viewCargoShadow = true;


OFP engine can also cast shadows using '''SHADOW BUFFER'''. This is controled over model property sbsource and prefershadowvolume in geometry LOD.
'''b''' Background from face (inverse “b” key function)


For trees and vegetration can be also used so called '''HYBRID SHADOW'''. This is controled over model property Shadow=hybrid in Geometry LOD
'''c''' Copy
Those shadows are cast on all models exept model itself. Trees can use special shaders for leaves that simulates self shadowing.


'''d''' Deselect


==== HitPoints ====
'''e''' Toggle selection toolbar


----
'''g''' Does not work: Toggle Grid


Modeled parts (selections) in this LOD represent valuable parts of the model that can be hit and affect the model in-game features. (class configuration)
'''h''' Hide selection


'''i''' Invert selection


==== LandContact ====
'''l''' Lock selection


----
'''n''' New


Contains '''only vertices's''' that represent contact with land. It is used mainly for vehicles and some characters. You can use it for structures too, in case you like to trasnform them by the surface. Wrong possitioned points can cause “levitation” or “immerge the model under ground”
'''o''' Open file


'''r''' ''Does not work: Lock camera position''


==== Memory ====
'''s''' Save file


----
'''t''' Toggle default toolbar


Contains '''only vertices's'''. Each vertex should have specific (class based) named selection. This LOD is used for defining important points and axes for model configuration. Selection names also correspond to animated model parts.
'''u''' Bring up Unwrap dialog


'''v''' Paste


==== Paths ====
'''w''' Select only one side (front/back toggle)


----
'''x''' Cut


Important LOD for AI path finding. AI can find its way through objects (such as buildings) Specific named selections are based on class definition.
'''y''' Redo


One building can have more entrance points, but all doors must be connected together with path. Every point where AI could stop, must be defined by named selection with ascending number according to the pathway. All path vertices's must be connected by polygons.
'''z''' Undo




==== Roadways ====
'''Ctrl+Shift+Keys'''


----
'''h''' Unhide selection


This LOD allows characters to walk on the other models. (walk upstairs, stay in the 2nd floor)
'''l''' Unlock selection


Model in made of polygons (normals are useless here) Textures are used for material sound definition (+config definition)
'''Home''' Move face to first in order


'''End''' Move face to last in order


==== SubParts ====
'''PgUp''' Move face up in order


----
'''PgDn''' Move face down in order


Defines parts by proxies, that are used when model gots destroyed in game.
<nowiki>*</nowiki> Center view on selection




==== Edit LODs ====
'''Alt+Keys'''


----
'''Backspace''' Undo


Working LOD for editation. It is removed during binarization. (UV set unfold, additional shadow volume levels...)
'''h''' Toggle History window


'''l''' Bound to 2 functions, using may cause problems


=== Automation ===
Toggle LOD window
''Does not work: Toggle Named selections window''


----
'''m''' Toggle Mass window


You can record MACROS and launch SCRIPTS
'''p''' Toggle Named Properties window


====Macro====
'''s''' Split window in 4 views


----
'''t''' Toggle Texture library window


Objektiv2 knows Macros. It is "easy to use" alternative of the scripts (eh, okay, scripts can do more things than the macros).
<nowiki>*</nowiki> Center all views on selection


To create macro, use '''Automation->Macro->Record Macro''' or simply click on red button on main toolbar.


During recording is active, O2 captures all mouse or keyboard actions. If you want to stop recording, deactivate the red button.
'''Mouse movement operations'''


To playback the captured macro, use button with blue arrow (Play).
'''LMB''' (Left Mouse Button) Make selection


Current version of O2 can save and load captured macros as disk file. Explore the '''Automation->Macro menu'''.
'''RMB''' (Right Mouse Button) Move selection


You can play the macro on all LODs or on groups of LODs or on each frame of animation('''Automation->Macro->Play Macro''').
'''Ctrl+LMB''' Add to selection


'''Ctrl+Shift+LMB''' Remove from selection


Problems and Limitations:
'''Alt+LMB''' Move camera


* Macro is played "as is". O2 Macro recorder is trying to detect any changes in UI, but it will never be perfect. Sometime macro can be totally desynchronized and may destroy O2's workspace - so DON'T FORGET TO SAVE YOUR WORK before usage.
'''Ctrl+LMB''' Rotate camera


* Keyboard actions are recorded better than mouse. During recording use keyboard when it is possible. Don't record "free hand" actions, such as transformations. Instead, use transform dialogs.
'''Shift+RMB''' Duplicate (clone) selected


* O2 Macro recorder cannot records actions that are invoked "when mouse cursor stays on item for a while". This is case of menus. Open all submenus by clicking, or use arrows keys.
'''Ctrl+RMB''' Rotate selection


* In File Open Dialog, active the item by the Enter key (not mouse). Doubleclicks can cause problem sometimes
'''Ctrl+Shift+RMB''' Scale selection


* During playback, you cannot control the mouse and the keyboard. Also, you cannot work with other applications. To interrupt the playback, use Alt+TAB or Ctrl+Alt+Del (and Cancel).


* Mouse Wheel is currently not supported.
{{GameCategory|arma1|Official Tools}}

Latest revision as of 10:38, 6 May 2024

Basic setup

External Viewer: C:\program files\bohemia interactive\arma\ArmA.exe -window -buldozer -noland


Buldozer Startup Options
Option Description
-worldCfg= Force specific world configuration file. For example weather settings.
-name= Force specific user game settings configuration file.
-addons... Used to specify a text file which Buldozer 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 full screen.


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 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 every time when there's need for 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 hundreds 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

Viewport Navigation

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)


Buldozer navigation

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 [] – set animation phase

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 subtracts 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 breaks 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 Axis

For manipulation with character model selection (bones) a feature for local axis was introduced.

Local axis can be enabled under the Points Menu > Transform 3D > Show Local Axis.

You can define local axis for each selection by using a triangle that is named in work selection together with the mesh (work selections start with minus letter)

- hlava

Then after you enable local axis mode in menu, you can manipulate with the mesh in work selection using standard editing tools.

How to define skeleton with local axes and hierarchy:

- select proxy defining axis
- menu from proxy will setup PIN
- select all faces in hierarchy that will be affected 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 is 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.


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 these 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

Texture Mapping
Name Description
A Flat mapping from background mode.
B Applies texture/mapping on the surface.
CTRL+B Shows the actual mapping.
M Gizmo“ mapping (Surfaces->Gizmo Mapping) – a separate menu starts with simple gizmo features, the results can be interactively shown in Buldozer.
E - Face Properties Assigning textures and materials (more in PROPERTY)
Arrow Keys Move with the rectangle.
Shift + Arrow Keys Change rectangle size.
LMB Select rectangle with texture.
RMB Context menu.
CTRL + LMB Outside the rectangle – Rotation Mode (Note: Beware of non-planar mapping).
CTRL + LMB On the edge – Scale.
CTRL + LMB In the texture library, Select by texture.
menu Surfaces->fit Bgr.from Selection Aligns the rectangle according to the selection.
Tools-> mass texture and material renaming Quick multiple renaming.


Neighbour Mapping

Neighbour mapping is mapping that uses information about mapping from neighbour faces of selected faces. UV from neighbour are copied to unmapped selected faces. Function works repeatedly, 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 containing 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 not 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 un-deform this face
  • 4) select area to map
  • 5) use neighbour mapping.

Note: function works best with triangles. Results of quads can be totally unusable.

UV unwrap

To spare amount of textures modellers usually 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 allows you to simply make new UV mapping 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.

Doubleclick 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 dragged in viewport – makes Proxy 3) P3D dragged 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. Useful is also subfolder TEMPLATES from VCS. Read more about materials in ArmA:_RVMAT

You can use templates stored in O2 sub folder

You can work with 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 dragged dropper icon

Color field shows actual settings, can be used to open color selection palette


If you use material templates, then stages are partially 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 Warning : standard Ctrl+C a Ctrl+V works in actual window affected by actual “focus” Use menu Edit -> Copy / Paste or hotkey Ctrl+Shift+C and Ctrl+Shift+V. For correct results.

Copy of color/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 powerful as other modelling 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 typical selections
  • WARNING : animated selections should have a maximum name length of 32 letters, these 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 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 not be correct.

There should also then be added a 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)

Named properties

Dedicated pages:

FACE property

E

You can assign textures and materials, check UV coords. and create selections by any face property

User values are useful for additional 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 any more

Enable shadow should be defaulted to on, shadow casting can be disabled by named property 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 now 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} 

Warning! ambient, diffuse and forced diffuse are additional values that combined together result in pixel color

Shadows are cast only in limited area around observer.

If you want some surfaces (building interiors) kept always in shadow, you should add this line to RVMAT

renderFlags[] = {AlwaysInShadow};

Animations

You can do simple animations in O2 by creating and editing keyframes.

Animation window shows key frames that can be added from context menu.

Playback speed can be adjusted in Buldozer with []

If you unfold mesh surface to UV map or you want to animate rigid body, you simply create a new keyframe and move the faces in desired position. After the animation is done, it is exported in an *.RTM file.

You select BindPose frame, select ExportMatrices from context menu and define root selection.


If some vertices are in more than one selection (character animation, rigid body hierarchy), you can define weights for each selection.


Animated character optimize

Properties
Name Description
Autotime Setting animation time, mark first and last frame. AUTOTIME 1.0 for looped movement, AUTOTIME for other transition movements
Normalize Center Average movement and center of animation. Z-Normalize Center and X-Normalize Center.
Neutralize STEP Removes translations movement and stores this info in STEP properties (there are only rotations left).
Export Matrices Export RTM file.
Aiming Optimisation On imported matrices (RTM) – modify specific selections
Export Matrices Choose root bone from popup menu or cancel. The result is that RTM will be done. Note:Often RTM bug will appear when bones have 0 size/volume, O2 cannot create center of gravity
Note If you do not have enough smooth transitions between frames, you can try Soften Selected (uses interpolation)

RTM playback

select from animated context menu "From Matrices" and open RTM file.

  • Correct character animation has step and xstep properties
  • looping animation ANDs with key frame 1.000


User animations

Animation Preview

Another chance how to animate content ingame are USER ANIMS defined in model config. Engine can move with selection by HIDING, ROTATION or TRANSLATION. Part of model that will move must be in named selection also axis points and handles must be in selections. The rest is defined in model config. (anim.type, selection names, distance, angle...) There are two types of animation - discrete and continuous. Discrete animations use named selections with all vertices with 100%weight. In case you want to use continuous animation (skinned surfaces) you cannot have one animated part as a sub-selection of another (skeleton hierarchy, for example gun/turret/vehicle)

To preview an animation, put the focus on the Bulldozer window, press either <Enter>, <Backspace> or the mouse wheel to select the desired animation source (indicated in the upper left corner), and then rotate the mouse wheel to step through the animation.

LODs

LOD means LEVEL-OF-DETAIL, so basically LOD layers in O2 represent various model resolutions. Some models are not visible, and are used for specific engine functions.

You can create and edit LODs using context menu. Renaming is done in properties...


Resolution LODs

LODs that are named by numbers are used for visual resolution versions of model. The lower number of LOD the more detailed the LOD should be. Usually you make the best resolution and then after the textures are mapped, degrade the resolution. (half amount of faces for each LOD)

You can enable view of previous LOD in OPTIONS menu. ArmA Engine selects the resolution LODs itself. The artist should only focus on the model shape and degradation balance.


VIEW Cargo/Commander/Gunner/Pilot

These are also resolution LODs that are used for first person view. These LODs should have better resolution than 1.LOD, but contain only visible parts.

Geometry LODs

Invisible LODs for engine calculation. Textures are used for special surface characteristics.

Each Geometry LOD must contain named selections of all components. If there are any animated parts, they should keep the names as in other LODs. You can automatically select components by menu Structure->Topology->Find Components.

Geometry components must be closed convex objects

some help tools are in menu structure->convexity

Convexity->Find non-convex and “find non-convexities” - checking tools 
Component Convex Hull will try to decompose object in convex components
Convex Hull makes one convex object
use Make convex and Convexity Fine Tune if previous tool fails (different algorithm)


Collision Geometry

Used for physical collision detection Must contain also information about object MASS (gray boxes) and center of gravity (blue cross).

The model should be very simple, defining the basic model shape. Thinner parts than 15cm cannot collide in faster speeds. Better if the geometry is larger than the model shape.

CTRL+A select all. Use MASS dialog to assign total mass. If you want to move the center of gravity, select vertices and change their individual mass. Keep an eye on the “total mass” checkbox.

It is not a problem, if some components do not have any mass. The mass of the whole model is used for collision, gravity and momentum. BUT, the component will not be simulated, if it has no named selection set.

1 mass = 1kg

FIRE Geometry

More detailed than collisions. Used for fire detection. Surfaces modeled in this LOD do STOP any bullet (any caliber). Only special material can be used for surface that can be shot through, but not thrown grenades. (windows)

If the fire geometry is missing, view geometry will be used intsead (or collision in worst case). So if you want model that does not stop bullets, make blank FireG LOD

View cargo/commander/gunner/pilot - Fire Geometry – Actually useless LODs, till Engine enables soldiers fire to from vehicle cargo...

VIEW Geometry

This LOD is used for AI view occlusion – what can the AI soldier see. It is also used for occlusion detection for scene drawing optimisation.

WARNING: If there is no component in view or fire geometry, players cursor will be not able to activate action menu (for example climb ladder)

There is an example of tree VIEW geometry.

AI cannot see through this geometry. If you don´t model this LOD, AI will use collision geometry.

VIEW Cargo/Commander/Gunner/Pilot - Geometry

Same as previous LOD, but for first person AI view.


ShadowVolume LOD

Used for HW shadow casting. The shadows are cast from this LOD on resolution LOD surfaces. The shadow volume area is made by extruding the lit faces of the shadow LOD (faces that have normals oriented towards the light) in the light direction.

LOD should be as simple as possible, to represent the 1st LOD shape and all its important parts. The shape should not exceed 1st LOD volume. Maximum polycount for shadowVolume is 1000 triangles.

All components must be Closed (each edge must have 2 neighbor polygons) – check with Structure->Topology->findNonClosed. Normals can be oriented both ways, depending on desired purpose of the specific shadow LOD surface/component. This lod should not contain any texture or material.

All faces must be Triangulated (each polygon must have 3 edges) - use menu Structure->Triangulate

All edges must be sharp – menu Surfaces->SharpEdge (U)

LOD must be nammed ShadowVolume 0.000,ShadowVolume 10.000 or ShadowVolume 1000.000

  • Shadow volume 0 is the main stencil shadow. It shuould have less than 1000 triangles.
  • Shadow Volume 10 is optimised stencil shadow LOD with as few triangles as possible.
  • Shadow 1000 is special for trees, it uses alpha transparent textures to be calculated using GPU shadow buffer. (so this lod can have link on texture)

All faces must have property "Enable shadow", otherwise they will not cast shadow - menu Face properties (E).

If the Volume LOD is missing, HW cannot cast shadows and there is no other alternative, engine will use resolution LODs. OFP cannot cast too complex shadows, so every resolution LOD that contains more than 1000 faces, should have property LODNoShadow=1 to disable CPU shadows. (bugs reported after binarization)

ShadowVolume - View Cargo, ShadowVolume - View Pilot, ShadowVolume - View Gunner - special shadow for static view resolution LODs. You have to enable them also in config:

viewDriverShadow = true;
viewGunnerShadow = true;
viewCargoShadow = true;

Virtual Reality engine can also cast shadows using SHADOW BUFFER. This is controlled by model property sbsource and prefershadowvolume in geometry LOD.

For trees and vegetation there can also be used so called HYBRID SHADOW. This is controlled by model property Shadow=hybrid in Geometry LOD Those shadows are cast on all models except the model itself. Trees can use special shaders for leaves that simulates self shadowing.

HitPoints

Modelled parts (selections) in this LOD represent valuable parts of the model that can be hit and affect the models in-game features. (class configuration)


LandContact

Contains only vertices that represent contact with land. It is used mainly for vehicles and some characters. You can use it for structures too, in case you like to transform them by the surface. Wrong positioned points can cause “levitation” or “submerge the model under ground”


Memory

Contains only vertices. Each vertex should have specific (class based) named selection. This LOD is used for defining important points and axes for model configuration. Selection names also correspond to animated model parts.


Paths

Important LOD for AI path finding. AI can find its way through objects (such as buildings) Specific named selections are based on class definition.

One building can have more entrance points, but all doors must be connected together with path. Every point where AI could stop, must be defined by named selection with ascending number according to the pathway. All path vertices's must be connected by polygons.


Roadway

This LOD allows characters to walk on the other models. (walk upstairs, stay in the 2nd floor)

Model is made of polygons (normals are useless here) Textures are used for material sound definition (+config definition)



Edit LODs

Working LOD for editing. It is removed during binarization. (UV set unfold, additional shadow volume levels...)


Automation

You can record MACROS and launch SCRIPTS


Macro

Objektiv2 knows Macros. It is "easy to use" alternative of the scripts (eh, okay, scripts can do more things than the macros).

To create macro, use Automation->Macro->Record Macro or simply click on red button on main toolbar.

When recording is active, O2 captures all mouse or keyboard actions. If you want to stop recording, deactivate the red button.

To playback the captured macro, use button with blue arrow (Play).

Current version of O2 can save and load captured macros as disk file. Explore the Automation->Macro menu.

You can play the macro on all LODs or on groups of LODs or on each frame of animation(Automation->Macro->Play Macro).


Problems and Limitations:

  • Macro is played "as is". O2 Macro recorder is trying to detect any changes in UI, but it will never be perfect. Sometime macro can be totally desynchronized and may destroy O2's workspace - so DON'T FORGET TO SAVE YOUR WORK before usage.
  • Keyboard actions are recorded better than mouse. During recording use keyboard when it is possible. Don't record "free hand" actions, such as transformations. Instead, use transform dialogs.
  • O2 Macro recorder cannot record actions that are invoked "when mouse cursor stays on item for a while". This is case of menus. Open all submenus by clicking, or use arrows keys.
  • In File Open Dialog, activate the item by the Enter key (not mouse). Doubleclicks can cause problem sometimes
  • During playback, you cannot control the mouse and the keyboard. Also, you cannot work with other applications. To interrupt the playback, use Alt+TAB or Ctrl+Alt+Del (and Cancel).
  • Mouse Wheel is currently not supported.


List of Shortcuts

Keys

F2 Select object

F3 Select faces

F4 Select vertices

F5 Recalculate normals

F6 Create face from selected vertices

F7 Create box

F8 Create cylinder

F9 3-side view + 3D preview

~ Does not work. Should be toggle Freeform select. Use the menu instead: Edit - Edit mode - Laso \ Triangulate: change 4-point surfaces into 2 3-point surfaces

a Set/modify texture mode

b Background mapping: Use to apply texture loaded using Set/modify “texture mode” on selected objects/faces.

c Center pin on selection

d Remove faces

e Face properties: bring up face properties

f Show/Hide back oriented faces

g Bring up Gizmo mapping dialog

i Smooth edges

m Bring up Map Dialog

o Object select mode

p Flatten points: bring up the “flatten” dialog

q Uncross: cross or uncross selected edges

r move pin

s Viewer Focus selection

t Select surface mode

u Sharp edges

v Vertex selection mode

w reverse: inverse normals

x Lock X movement: selected objects can only be moved in X direction

y Lock Y movement: selected objects can only be moved in Y direction

z Bound to 2 functions, using may cause problems:

In top/front/side view: Zoom mode

In 3D preview: Lock Z movement: selected objects can only be moved in Z direction.

Insert Create vertex

Delete Delete selection

Space Center on pin


Numeric Keyboard * Center camera on selection

/ Triangulate: change 4-point surfaces into 2 3-point surfaces

+ Camera zoom in

- Camera zoom out


Shift+Keys Bound to 2 functions, using may cause problems

c Use Pin toggle: all operations now act at the position of the pin.

press “Insert” to create a new vertex at the position of the pin.

e Bring up Vertex Properties dialog

d Weld selected vertices (merge selected vertices to a single vertex)

m same as Shift+D

o Bring up Modelling Coloration dialog

r Turn Edge

w Bring up Linear Deform dialog

Delete Try to delete vertex, close polygon, keep UV mapping


Ctrl+Keys

1 Toggle Named Property window

a Select all

b Background from face (inverse “b” key function)

c Copy

d Deselect

e Toggle selection toolbar

g Does not work: Toggle Grid

h Hide selection

i Invert selection

l Lock selection

n New

o Open file

r Does not work: Lock camera position

s Save file

t Toggle default toolbar

u Bring up Unwrap dialog

v Paste

w Select only one side (front/back toggle)

x Cut

y Redo

z Undo


Ctrl+Shift+Keys

h Unhide selection

l Unlock selection

Home Move face to first in order

End Move face to last in order

PgUp Move face up in order

PgDn Move face down in order

* Center view on selection


Alt+Keys

Backspace Undo

h Toggle History window

l Bound to 2 functions, using may cause problems

Toggle LOD window Does not work: Toggle Named selections window

m Toggle Mass window

p Toggle Named Properties window

s Split window in 4 views

t Toggle Texture library window

* Center all views on selection


Mouse movement operations

LMB (Left Mouse Button) Make selection

RMB (Right Mouse Button) Move selection

Ctrl+LMB Add to selection

Ctrl+Shift+LMB Remove from selection

Alt+LMB Move camera

Ctrl+LMB Rotate camera

Shift+RMB Duplicate (clone) selected

Ctrl+RMB Rotate selection

Ctrl+Shift+RMB Scale selection