Jump to content
silola

X-Cam 1.0 for Arma 3 released

Recommended Posts

Hi,

if u talk about mission export, then please use original Arma 3 objects only, so all objects without "xcam_" at the beginning.

Silola

Ah, good to know!

I'm currently in the process of using X-Cam for the first time significantly for a mission. Still I am amazed about the quality of the tool.

If I could wish for something featurewise it would be pitch/tilt (which is already in the plans) and the possibility to easily change the daytime (currently I exit X-Cam, go to Camera, change time and reload X-Cam). I also discovered there is a little precision loss when using slope adjust - after reloading the project some items are a bit off (see pavement in screenshot)

http://i.imgur.com/PJydfsE.jpg (520 kB)

Share this post


Link to post
Share on other sites
Ah, good to know!

I'm currently in the process of using X-Cam for the first time significantly for a mission. Still I am amazed about the quality of the tool.

If I could wish for something featurewise it would be pitch/tilt (which is already in the plans) and the possibility to easily change the daytime (currently I exit X-Cam, go to Camera, change time and reload X-Cam). I also discovered there is a little precision loss when using slope adjust - after reloading the project some items are a bit off (see pavement in screenshot)

You can change daytime by switching "Detecion Distance" button on bottom of screen to "Daytime" and use + & -

LifKpfV.png

Edited by rafal007111

Share this post


Link to post
Share on other sites
You can change daytime by switching "Detecion Distance" button on bottom of screen to "Daytime" and use + & -

http://i.imgur.com/LifKpfV.png

Thanks. I should have rewatched the tutorial videos I suppose :rolleyes:

Btw what are the potential downsides of using xcam_objects for missions? I already used lots of them and dont want to switch everything. Interaction/destruction is not necessary on those anyway.

Share this post


Link to post
Share on other sites

Silola I'm having issues with bounding box, It's not saving the values, so when copying objects I need to redo this continually

Share this post


Link to post
Share on other sites

Hi,

@nomisum:

I will check the "precision loss", but so far I've never had this problem.

Is the difference visible between project > mission/script export or save project > load project ?

@Aus:

Make sure you have activated the option to load the user-defined copy distance "automaticly" (the option button below the [CD] Button)

Within the yesterday's twitch stream I saw it was de-activated ;)

@All:

I have some trouble about the pitch/bank function, because under certain conditions (pitch or bank) the getposATL and setposATL works with a different result.

This difference is not valid, if I use getposWorld > setposWorld, but this command workls like the getposASL and setposASL command.

So I think I will make this function available only in connection with the ASL function....that's my current solution :mad:

Silola

Share this post


Link to post
Share on other sites

@nomisum:

I will check the "precision loss", but so far I've never had this problem.

Is the difference visible between project > mission/script export or save project > load project ?

Its between save project -> load project. I can give you the files or build a sample mission, if you need them for debugging. The Map it happened on is VT5. (http://forums.bistudio.com/showthread.php?192994-WIP-VT5-Valtatie-5-release-v-0-1-Finnish-terrain-for-A3)

Share this post


Link to post
Share on other sites

Ok, but please check also the mission export, and tell me if you get the same (bad) result.

Thanks :)

Silola

Share this post


Link to post
Share on other sites
Ok, but please check also the mission export, and tell me if you get the same (bad) result.

Thanks :)

Silola

Yes, its the same with mission export. I will test this on other maps tomorrow if I can make a sample mission without dependencies.

Edit: I did 2 short videos to demonstrate the effect on Stratis.

Maybe this clears up whether this is intentional. I try to bring the sloped road down a bit, but after deselecting -> reselecting its on default ATL again. Same when saving and reloading the project.

Edited by nomisum

Share this post


Link to post
Share on other sites

Thank you so much for this outstanding piece of art and your remarkable "customer service"! Such an important work you have done that should have already been done by Bohemia a decade ago.

And I'm also totally looking forward to the units/vehicles/weapons-part in the future of your project! Incredibly awesome :bounce3:

Share this post


Link to post
Share on other sites

Thanks for the vids, nomisum. I will check it out.

@killshot: Many thanks for the nice words :)

Silola

Share this post


Link to post
Share on other sites

I'll never make a mission without X-cam, it's just incredibly useful I don't know why nobody though of doing this before.

Very good work Silola, keep it up :D

Share this post


Link to post
Share on other sites
Hi,

@nomisum:

I will check the "precision loss", but so far I've never had this problem.

Is the difference visible between project > mission/script export or save project > load project ?

@Aus:

Make sure you have activated the option to load the user-defined copy distance "automaticly" (the option button below the [CD] Button)

Within the yesterday's twitch stream I saw it was de-activated ;)

@All:

I have some trouble about the pitch/bank function, because under certain conditions (pitch or bank) the getposATL and setposATL works with a different result.

This difference is not valid, if I use getposWorld > setposWorld, but this command workls like the getposASL and setposASL command.

So I think I will make this function available only in connection with the ASL function....that's my current solution :mad:

Silola

Doh.... thanks Silola

Share this post


Link to post
Share on other sites

I have a question about the mission maker part of xCam. I would like to know if there is a way to have objects deleted, due to performance reasons of course?

Spawn objects via xCamExport.sqf -> let players do the task and leave the area -> delete xCamExport.sqf-objects.

xCamXport.sqf

private ["_obj","_dat","_cString","_adString"];

_obj = objNull;_dat = [];_adString = "CAN_COLLIDE";
_cString = {_obj = createVehicle [(_dat select 0), call compile (_dat select 1), [], 0, _adString];if((_dat select 4) == 0) then {_obj enableSimulation false};_obj setdir (_dat select 2);if((_dat select 3) == -100) then {_obj setposATL (call compile (_dat select 1))} else {_obj setposASL [((call compile (_dat select 1)) select 0),((call compile (_dat select 1)) select 1),(_dat select 3)]};if((_dat select 5) == 0) then {_obj setVectorUp [0,0,1]} else {_obj setVectorUp (surfacenormal (getPosATL _obj))};if(count (_dat select 6) > 0) then {{call _x} foreach (_dat select 6)}};

_dat = ["UralWreck","[1870.203125,5703.727051,0]",132.314,-100,1,0,[]];call _cString;
_dat = ["Land_GarbageContainer_closed_F","[1868.182495,5696.157715,0]",303.49,-100,1,0,[]];call _cString;
_dat = ["Land_cargo_addon01_V1_F","[1868.182495,5696.157715,0]",303.49,-100,1,0,[]];call _cString;
_dat = ["Land_Tyres_F","[1871.369019,5702.731934,1.77752]",48.49,-100,1,0,[]];call _cString;
_dat = ["Land_Garbage_line_F","[1868.481079,5695.0405273,0]",48.49,-100,1,0,[]];call _cString;
_dat = ["Land_Garbage_square3_F","[1868.481079,5695.0405273,0]",48.49,-100,1,0,[]];call _cString;
_dat = ["Land_Tyre_F","[1867.447021,5703.179688,0]",48.49,-100,1,0,[]];call _cString;
_dat = ["Land_Tyre_F","[1868.509766,5702.548828,0]",48.49,-100,1,0,[]];call _cString;
_dat = ["Land_BarGate_F","[1883.146851,5698.54541,0]",103.49,-100,1,0,[]];call _cString;
_dat = ["Land_Table_EP1","[1864.0161133,5694.772461,0]",142.996,-100,1,0,[]];call _cString;
_dat = ["FloorMop","[1863.653564,5695.608398,0]",142.996,-100,1,0,[]];call _cString;
_dat = ["SmallTV","[1864.343018,5694.71582,0.875487]",258.854,-100,1,0,[]];call _cString;
_dat = ["EvMoney","[1864.0554199,5694.316406,0.845836]",258.854,-100,1,0,[]];call _cString;

sleep 0.5;
hint "Prefab loaded";

Regards. :)

Share this post


Link to post
Share on other sites
I have a question about the mission maker part of xCam. I would like to know if there is a way to have objects deleted, due to performance reasons of course?

Spawn objects via xCamExport.sqf -> let players do the task and leave the area -> delete xCamExport.sqf-objects.

xCamXport.sqf

private ["_obj","_dat","_cString","_adString"];

_obj = objNull;_dat = [];_adString = "CAN_COLLIDE";
_cString = {_obj = createVehicle [(_dat select 0), call compile (_dat select 1), [], 0, _adString];if((_dat select 4) == 0) then {_obj enableSimulation false};_obj setdir (_dat select 2);if((_dat select 3) == -100) then {_obj setposATL (call compile (_dat select 1))} else {_obj setposASL [((call compile (_dat select 1)) select 0),((call compile (_dat select 1)) select 1),(_dat select 3)]};if((_dat select 5) == 0) then {_obj setVectorUp [0,0,1]} else {_obj setVectorUp (surfacenormal (getPosATL _obj))};if(count (_dat select 6) > 0) then {{call _x} foreach (_dat select 6)}};

_dat = ["UralWreck","[1870.203125,5703.727051,0]",132.314,-100,1,0,[]];call _cString;
_dat = ["Land_GarbageContainer_closed_F","[1868.182495,5696.157715,0]",303.49,-100,1,0,[]];call _cString;
_dat = ["Land_cargo_addon01_V1_F","[1868.182495,5696.157715,0]",303.49,-100,1,0,[]];call _cString;
_dat = ["Land_Tyres_F","[1871.369019,5702.731934,1.77752]",48.49,-100,1,0,[]];call _cString;
_dat = ["Land_Garbage_line_F","[1868.481079,5695.0405273,0]",48.49,-100,1,0,[]];call _cString;
_dat = ["Land_Garbage_square3_F","[1868.481079,5695.0405273,0]",48.49,-100,1,0,[]];call _cString;
_dat = ["Land_Tyre_F","[1867.447021,5703.179688,0]",48.49,-100,1,0,[]];call _cString;
_dat = ["Land_Tyre_F","[1868.509766,5702.548828,0]",48.49,-100,1,0,[]];call _cString;
_dat = ["Land_BarGate_F","[1883.146851,5698.54541,0]",103.49,-100,1,0,[]];call _cString;
_dat = ["Land_Table_EP1","[1864.0161133,5694.772461,0]",142.996,-100,1,0,[]];call _cString;
_dat = ["FloorMop","[1863.653564,5695.608398,0]",142.996,-100,1,0,[]];call _cString;
_dat = ["SmallTV","[1864.343018,5694.71582,0.875487]",258.854,-100,1,0,[]];call _cString;
_dat = ["EvMoney","[1864.0554199,5694.316406,0.845836]",258.854,-100,1,0,[]];call _cString;

sleep 0.5;
hint "Prefab loaded";

Regards. :)

just add each object to an array and then iterate with deleteVehicle

Share this post


Link to post
Share on other sites
just add each object to an array and then iterate with deleteVehicle

I know how to do this, when I create a simple spawn script by myself:

_obj1 = "UralWreck" createVehicle getPos player;
_obj2 = "Land_GarbageContainer_closed_F" createVehicle getPos player;
_obj3 = "Land_cargo_addon01_V1_F" createVehicle getPos player;

hint "Spawned!";
sleep 0.5;

_allObjs = [_obj1,_obj2,_obj3];
sleep 0.5;

{deleteVehicle _x} forEach _allObjs;

hint "Deleted!";

/*
Or instead of array list:
for "_del" from 1 to 3 do {call compile format ["deleteVehicle _obj%1",_del]};
*/

But how exactly am I able to do so in the case of xCam exported sqf? :)

Share this post


Link to post
Share on other sites
I know how to do this, when I create a simple spawn script by myself:

But how exactly am I able to do so in the case of xCam exported sqf? :)

Hi killshot,

You can do it as follows:

For example you have 5 different areas and each area contains 5 different camps.

It's important to save the different areas in different projects within X-Cam in order to get 5 different script files at the end.

You need also 5 different empty (global) arrays, to store all the objects there.

For example: Mission_Area_A = [];Mission_Area_B = [];Mission_Area_C = [];Mission_Area_D = [];Mission_Area_E = [];

Now, within X-Cam, load the first project (for example "Mission_Area_A") and select all objects (press [Return] to start a frame selection).

If you can see the blue boundingbox around the objects, open the "Object info" window and press the Button (see picture 1)

OqkxKIs.jpg[/img]

The next step is to insert an init code for all the selected objects. Please enter this code into the edit field (see picture 2):

[{Mission_Area_A pushback _obj}] ... and press [Ok].

qphg9YO.jpg[/img]

Press the [spacebar] and save this project. The last step is to export this project as a script file.

Now load the second project (for example "Mission_Area_B") and go on with the same steps:

Select all objects, press the button, enter the init code ... now: [{Mission_Area_B pushback _obj}], save the project, export the project ... and so on ...

until u have saved the init code for all objects within the different projects/areas.

Now u need a (server side only) script, to control the different areas (load or delete the respective objects).

I don't want to give u the complete solution, but here a small overview:

You have to control each area about player units. So, at the beginning of the mission you have to check

if at least one player unit is within area A. If yes, start the respective script to create all the objects.

If not, wait until the first player unit reachs the area A.

Do the same for all the other areas of course.

If u want to delete all objects within area C, for example, because no player unit is near this area,

you can do it as follows: {deletevehicle _x} foreach Mission_Area_C;

And if you want to create the objects again, start the respective script again ... so, it's very easy I think.

Silola

Edit: if you delete all objects of one area, then it's important to clear the respective array .... Mission_Area_C = [] ... for example ;-)

Edited by Silola

Share this post


Link to post
Share on other sites
I know how to do this, when I create a simple spawn script by myself:

But how exactly am I able to do so in the case of xCam exported sqf? :)

private ["_obj","_dat","_cString","_adString"];
[b]toDelete = [];[/b]

_obj = objNull;_dat = [];_adString = "CAN_COLLIDE";
_cString = {_obj = createVehicle [(_dat select 0), call compile (_dat select 1), [], 0, _adString]; [b]toDelete pushBack _obj;[/b] if((_dat select 4) == 0) then {_obj enableSimulation false};_obj setdir (_dat select 2);if((_dat select 3) == -100) then {_obj setposATL (call compile (_dat select 1))} else {_obj setposASL [((call compile (_dat select 1)) select 0),((call compile (_dat select 1)) select 1),(_dat select 3)]};if((_dat select 5) == 0) then {_obj setVectorUp [0,0,1]} else {_obj setVectorUp (surfacenormal (getPosATL _obj))};if(count (_dat select 6) > 0) then {{call _x} foreach (_dat select 6)}};

_dat = ["UralWreck","[1870.203125,5703.727051,0]",132.314,-100,1,0,[]];call _cString;
_dat = ["Land_GarbageContainer_closed_F","[1868.182495,5696.157715,0]",303.49,-100,1,0,[]];call _cString;
_dat = ["Land_cargo_addon01_V1_F","[1868.182495,5696.157715,0]",303.49,-100,1,0,[]];call _cString;
_dat = ["Land_Tyres_F","[1871.369019,5702.731934,1.77752]",48.49,-100,1,0,[]];call _cString;
_dat = ["Land_Garbage_line_F","[1868.481079,5695.0405273,0]",48.49,-100,1,0,[]];call _cString;
_dat = ["Land_Garbage_square3_F","[1868.481079,5695.0405273,0]",48.49,-100,1,0,[]];call _cString;
_dat = ["Land_Tyre_F","[1867.447021,5703.179688,0]",48.49,-100,1,0,[]];call _cString;
_dat = ["Land_Tyre_F","[1868.509766,5702.548828,0]",48.49,-100,1,0,[]];call _cString;
_dat = ["Land_BarGate_F","[1883.146851,5698.54541,0]",103.49,-100,1,0,[]];call _cString;
_dat = ["Land_Table_EP1","[1864.0161133,5694.772461,0]",142.996,-100,1,0,[]];call _cString;
_dat = ["FloorMop","[1863.653564,5695.608398,0]",142.996,-100,1,0,[]];call _cString;
_dat = ["SmallTV","[1864.343018,5694.71582,0.875487]",258.854,-100,1,0,[]];call _cString;
_dat = ["EvMoney","[1864.0554199,5694.316406,0.845836]",258.854,-100,1,0,[]];call _cString;

sleep 0.5;
hint "Prefab loaded";

then when you have to get rid of them:

{ deleteVehicle _x } forEach toDelete;

Share this post


Link to post
Share on other sites

Thanks a lot for your quick and detailed responses, guys! Both ways did work for me. :)

And of course I used your new double-lmb function for frame selection. :D

Share this post


Link to post
Share on other sites
Thanks a lot for your quick and detailed responses, guys! Both ways did work for me. :)

And of course I used your new double-lmb function for frame selection. :D

LOL ... I'm not perfect.

Share this post


Link to post
Share on other sites

I've started creating a small outpost and added some lights, but when i turned the time to night, the lights were on, but they didn't light the ground, how can i make them work properly?

Share this post


Link to post
Share on other sites
I've started creating a small outpost and added some lights, but when i turned the time to night, the lights were on, but they didn't light the ground, how can i make them work properly?

and that for many of the objects (change to SI to 1), if you export with enable simulation "false".

Edited by rafal007111

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×