{"name":"createSimpleObject","operator":null,"title":"createSimpleObject","type":"command","url":"https://community.bistudio.com/wiki/createSimpleObject","revid":377446,"updated":"2026-01-02T06:47:00Z","groups":["Object Manipulation"],"status":"ok","replaced_by":[],"games":[{"game":"arma3","name":"Arma 3","version":"1.58"}],"since":{"game":"arma3","name":"Arma 3","version":"1.58"},"arma3_since":"1.58","branch":null,"locality":{"argument":null,"effect":"global","server_exec":false},"exec":null,"description":"Create object with given shape defined as path to .p3d model. Supported LODs include Geometry, Fire Geometry, Roadway, View Geometry and ShadowVolume. Supported features include collision, texturing, animation, penetration, AI spotting occlusion, and surface specific sounds (like footsteps). Unsupported features include PhysX, damage, AI pathfinding (causes walking through walls), and built-in lights.\n\nGiven the simulation limitations, global decorative objects can be created with very little network traffic. Objects that could be exclusively created with this command are: trees, bushes, rocks, bridges, roads, vehicle wrecks, custom models in mission, and other objects without a class in config. The height of the placement position might need to be adjusted experimentally.\n\n> [!NOTE]\n> - See Arma 3: Simple Objects to learn more about simple objects.\n> - See Arma 3: createSimpleObject/objects for a p3d models' list.\n> - See Arma 3: Livonia Props for Livonia furniture.\n>\n> Please note that:\n> - addAction does not work with simple objects.\n> - objects created with #Syntax 1 cannot be textured. Some objects may also have inverted default direction.\n> - objects created with #Syntax 2 can be textured. The default direction should match the direction of the object if it was created with createVehicle.\n> - only as of Arma 3 v1.68 do simple objects support getVariable and setVariable.","syntaxes":[{"syntax":"createSimpleObject [shapeName, positionWorld, local]","since":null,"effect":null,"exec":null,"params":[{"name":"shapeName","type":"String","optional":false,"default":null,"description":"path to the 3d model (can be obtained with getModelInfo command)","types":["String"],"since":null,"text":"shapeName: String - path to the 3d model (can be obtained with getModelInfo command)"},{"name":"positionWorld","type":"PositionASL","optional":false,"default":null,"description":"placement position by the **model centre**'s position (see getPosWorld)","types":["PositionASL"],"since":null,"text":"positionWorld: PositionASL - placement position by the **model centre**'s position (see getPosWorld)"},{"name":"local","type":"Boolean","optional":true,"default":"false","description":"true to create a local instance only","types":["Boolean"],"since":"arma3 1.96","text":"local: Boolean - (Optional, default false) true to create a local instance only"}],"returns":{"type":"Object","types":["Object"],"description":"created simple object","text":"Object - created simple object"},"form":"unary","operator":null,"left":null,"right":{"text":"[shapeName, positionWorld, local]","types":["Array"]}},{"syntax":"createSimpleObject [className, positionASL, local]","since":null,"effect":null,"exec":null,"params":[{"name":"className","type":"String","optional":false,"default":null,"description":"CfgVehicles class name","types":["String"],"since":null,"text":"className: String - CfgVehicles class name"},{"name":"positionASL","type":"PositionASL","optional":false,"default":null,"description":"placement position","types":["PositionASL"],"since":null,"text":"positionASL: PositionASL - placement position"},{"name":"local","type":"Boolean","optional":true,"default":"false","description":"true to create a local instance only","types":["Boolean"],"since":"arma3 1.96","text":"local: Boolean - (Optional, default false) true to create a local instance only"}],"returns":{"type":"Object","types":["Object"],"description":"created simple object","text":"Object - created simple object"},"form":"unary","operator":null,"left":null,"right":{"text":"[className, positionASL, local]","types":["Array"]}}],"examples":[{"text":"```sqf\nprivate _pos = player getRelPos [10, 0];\nprivate _tank = createSimpleObject [\"a3\\armor_f_beta\\apc_tracked_01\\apc_tracked_01_rcws_f.p3d\", _pos];\n_tank setPos (_pos vectorAdd (getPosWorld _tank vectorDiff (_tank modelToWorld [0,0,0])));\n\n_tank hideSelection [\"zasleh\", true];\n_tank hideSelection [\"zasleh2\", true];\n_tank hideSelection [\"clan\", true];\n \n_tank animate [\"Wheel_podkoloL3\", 0.5, true];\n_tank animate [\"Wheel_podkoloL6\", 0.5, true];\n```","code":["private _pos = player getRelPos [10, 0];\nprivate _tank = createSimpleObject [\"a3\\armor_f_beta\\apc_tracked_01\\apc_tracked_01_rcws_f.p3d\", _pos];\n_tank setPos (_pos vectorAdd (getPosWorld _tank vectorDiff (_tank modelToWorld [0,0,0])));\n\n_tank hideSelection [\"zasleh\", true];\n_tank hideSelection [\"zasleh2\", true];\n_tank hideSelection [\"clan\", true];\n \n_tank animate [\"Wheel_podkoloL3\", 0.5, true];\n_tank animate [\"Wheel_podkoloL6\", 0.5, true];"]},{"text":"```sqf\nprivate _pos = player getRelPos [10, 0];\nprivate _tank = createSimpleObject [\"B_APC_Tracked_01_CRV_F\", AGLToASL _pos];\n_tank setObjectTexture [0, \"#(rgb,8,8,3)color(0,1,0,0.01)\"];\n\n_tank hideSelection [\"zasleh\", true];\n_tank hideSelection [\"zasleh2\", true];\n_tank hideSelection [\"clan\", true];\n  \n_tank animate [\"Wheel_podkoloL3\", 0.5, true];\n_tank animate [\"Wheel_podkoloL6\", 0.5, true];\n```","code":["private _pos = player getRelPos [10, 0];\nprivate _tank = createSimpleObject [\"B_APC_Tracked_01_CRV_F\", AGLToASL _pos];\n_tank setObjectTexture [0, \"#(rgb,8,8,3)color(0,1,0,0.01)\"];\n\n_tank hideSelection [\"zasleh\", true];\n_tank hideSelection [\"zasleh2\", true];\n_tank hideSelection [\"clan\", true];\n  \n_tank animate [\"Wheel_podkoloL3\", 0.5, true];\n_tank animate [\"Wheel_podkoloL6\", 0.5, true];"]},{"text":"Create a pond:\n\n```sqf\nprivate _waterTileModel = \"a3\\structures_f_enoch\\Water\\pond_big_01.p3d\"; // visual only - this pond is a hard surface\nprivate _tileSize = 18; // width & height\nprivate _tileX = 10;\nprivate _tileY = 5;\nprivate _bottomLeftCorner = getPosWorld player;\nprivate _tilePos = -1;\nprivate _tiles = [];\nprivate _tile = objNull;\nfor \"_y\" from 0 to (_tileY - 1) do\n{\n    for \"_x\" from 0 to (_tileX - 1) do\n    {\n        _tilePos = _bottomLeftCorner vectorAdd [_x * _tileSize, _y * _tileSize, 0];\n        _tile = createSimpleObject [_waterTileModel, _tilePos];\n        _tiles pushBack _tile;\n    };\n};\nsleep 10;\n{ deleteVehicle _x } forEach _tiles;\n```","code":["private _waterTileModel = \"a3\\structures_f_enoch\\Water\\pond_big_01.p3d\"; // visual only - this pond is a hard surface\nprivate _tileSize = 18; // width & height\nprivate _tileX = 10;\nprivate _tileY = 5;\nprivate _bottomLeftCorner = getPosWorld player;\nprivate _tilePos = -1;\nprivate _tiles = [];\nprivate _tile = objNull;\nfor \"_y\" from 0 to (_tileY - 1) do\n{\n\tfor \"_x\" from 0 to (_tileX - 1) do\n\t{\n\t\t_tilePos = _bottomLeftCorner vectorAdd [_x * _tileSize, _y * _tileSize, 0];\n\t\t_tile = createSimpleObject [_waterTileModel, _tilePos];\n\t\t_tiles pushBack _tile;\n\t};\n};\nsleep 10;\n{ deleteVehicle _x } forEach _tiles;"]}],"multiplayer":null,"problems":null,"aliases":[],"see_also":["isSimpleObject","hideSelection","selectionPosition","getModelInfo","getObjectType","cursorObject","selectionNames","animationNames","createVehicle","enableSimulation","hideObject","getMissionPath","allLODs","Arma 3: Simple Objects","Arma 3: createSimpleObject/objects"],"notes":[{"user":"Killzone_Kid","date":"2016-04-18T20:03:00Z","text":"The easiest way to correctly place simple object is to create normal object of the same shape from class (if possible), then copy getPosWorld, vectorDir and vectorUp from it. Then create the simple object and apply copied values to it, this will position simple object exactly as normal object was positioned:\n\n```sqf\nprivate _heli = \"B_Heli_Light_01_F\" createVehicleLocal (player getRelPos [10, 0]);\nprivate _position = getPosWorld _heli;\nprivate _vectorDirUp = [vectorDir _heli, vectorUp _heli];\nprivate _model = getModelInfo _heli select 1;\ndeleteVehicle _heli;\nprivate _simpleHeli = createSimpleObject [_model, _position];\n_simpleHeli setVectorDirAndUp _vectorDirUp;\n```"},{"user":"Waffle SS.","date":"2016-04-28T18:10:00Z","text":"Models from within the mission file/folder can be created, but full system path is needed. See getMissionPath"},{"user":"Waffle SS.","date":"2016-05-11T01:28:00Z","text":"simulationEnabled returns false."},{"user":"Warka","date":"2016-09-05T15:10:00Z","text":"There is a section in function library dedicated to simple object creation and interaction. It's purpose is to simplify the operations:\n- BIS_fnc_createSimpleObject\n  - creates simple object according to the supplied data\n  - you can supply p3d path, class name or data you get from scanning a non-simple object\n\n- BIS_fnc_simpleObjectData\n  - gathers and returns data about the non-simple object\n  - data can be then used to create simple object\n\n- BIS_fnc_replaceWithSimpleObject\n  - replaces non-simple object with simple object on the scene\n  - do not use it in large scale in MP missions as it is not network efficient\n\n- BIS_fnc_adjustSimpleObject\n  - adjusts simple object to looks as close to the non-simple object as possible\n  - function is internally called from the 'BIS_fnc_createSimpleObject', you won't probably need to call this function directly\n\nCheck the function headers for more info about the input parameters and possibilities."},{"user":"POLPOX","date":"2024-01-27T23:23:10Z","text":"Before circa Arma 3 2.07: The path must **not** start with a backslash:\n\n|  |  |\n|---|---|\n| ✗ | `\"**\\**a3\\armor_f_beta...` |\n| ✓ | `\"a3\\armor_f_beta...` |"}],"categories":["Arma 3: New Scripting Commands","Arma 3: Scripting Commands","Command Group: Object Manipulation","Introduced with Arma 3 version 1.58","Scripting Commands","Scripting Commands: Global Effect"]}