Jump to content
mcnools

Using Splendid Camera position as intro-camera?

Recommended Posts

Hello, I'm making a mission for my group that is supposed to have a simple intro, more exactly,  I want a static camera on the ground show our helicopter landing from the ground for a few seconds. I've set up and exported the camera parameters from splendid cam:

Quote

["Paste",["fata",[6868.35,6964.27,1.80142],59.3982,0.47,[11.9879,0],0,0,408.146,0.173823,0,1,0,1]] call bis_fnc_camera;

or

Quote

["fata",[6868.35,6964.27,1.80142],59.3982,0.47,[11.9879,0],0,0,408.146,0.173823,0,1,0,1]

(fata is the terrain).

 

However, I can't seem to find any info on how to proceed from here to use that in the mission. All tutorials I can find on cinematics are pre-splendid camera and I honestly can't understand any of it.

 

Is it even possible to use this for a cinematic or does it have to be done in some other way?

Share this post


Link to post
Share on other sites

From testing I did about 3 years ago, splendid was only for screen shots, so I just use "0 = this call BIS_fnc_cameraOld;" to invoke the old camera at startup and use an xbox controller to move around and get my positions and whatnot. If splendid can be used or not for intros, I doubt it, but not 100% sure.

  • Like 1

Share this post


Link to post
Share on other sites

I will take a look att that AZcoder!

Share this post


Link to post
Share on other sites

["fata",[6868.35,6964.27,1.80142],59.3982,0.47,[11.9879,0],0,0,408.146,0.173823,0,1,0,1]

Bold text is the position.

 

_c = "camera" camcreate [0,0,0];
_c cameraeffect ["internal", "back"];	

_c camPrepareTarget [3780.09,2385.09,1.36698];
_c camPreparePos [3812,2384.91,0.326341];
_c camPrepareFOV 0.700;
_c camCommitPrepared 0;

sleep 5;

player cameraEffect ["terminate","back"];
camDestroy _c;

This is a very simple example.

For static shots in intros, I use 10cm spheres in 3DEN, make them invisible, and call them eg. I_POS_1, I_TAR_1.

Then use 
 

_c camPrepareTarget getpos I_TAR_1;
_c camPreparePos I_POS_1;
_c camPrepareFOV 0.300;
_c camCommitPrepared 0;

Is there better ways than this? Probably. 

Share this post


Link to post
Share on other sites
4 hours ago, MKD3-FHI said:


 

Is there better ways than this? Probably. 

 

Well yes, BIS_fnc_cameraOld. It literally provides output like this:


_camera camPrepareTarget [3780.09,2385.09,1.36698];

_camera camPreparePos [3812,2384.91,0.326341];

_camera camPrepareFOV 0.700;

_camera camCommitPrepared 0;

Then typically you want to add this line, especially if doing sequential camera shots:


waitUntil {camCommitted _camera };

If you're just doing a static shot then sleep is fine.

 

  • Like 2

Share this post


Link to post
Share on other sites
15 minutes ago, AZCoder said:

 

Well yes, BIS_fnc_cameraOld. It literally provides output like this:

 


_camera camPrepareTarget [3780.09,2385.09,1.36698];

_camera camPreparePos [3812,2384.91,0.326341];

_camera camPrepareFOV 0.700;

_camera camCommitPrepared 0;

 

Then typically you want to add this line, especially if doing sequential camera shots:

 


waitUntil {camCommitted _camera };

 

If you're just doing a static shot then sleep is fine.

 

:yeahthat:

  • Like 2

Share this post


Link to post
Share on other sites

Haven't done it in a long time due to just using an in house debug camera but there you go.

Share this post


Link to post
Share on other sites

With your help and some help from a more coding-savvy friend I got things to work, thank you very much!

this is the relevant code I believe (for anyone searching around about this later)

Quote

_camera = "camera" camcreate [0,0,0];
_camera cameraeffect ["internal", "back"];
_camera camPrepareTarget [85893.75,54512.32,38777.33];
_camera camPreparePos [6869.15,6965.38,0.40];
_camera camPrepareFOV 0.857;
_camera camCommitPrepared 0;

 

  • Like 1

Share this post


Link to post
Share on other sites

I guess this is a bit late to answer your question, but your issue is still relevant, as camera.sqs is still clunky...

 

So for those who still need a solution in the future, I ended up making a script to output data from Splendid Camera in the Old camera.sqs format :

while {true} do {
	waitUntil {
		uiSleep 1;
		not isNull findDisplay 314;
	};

	findDisplay 314 displayAddEventHandler ["KeyUp", {
		params ["_displayorcontrol", "_key", "_shift", "_ctrl", "_alt"];
		
		if (_key isEqualTo 46 && _ctrl) exitWith {
			_camParameters=call compile copyFromClipboard;
			_targetPos=screenToWorld [0.5, 0.5];

			_camOutput = Format ["
%1 camPrepareTarget %2;
%1 camPreparePos %3;
%1 camPrepareFOV %4;
//setAperture %5;
//%1 setDir %8;
//[%1, %6, %7] call BIS_fnc_setPitchBank;
%1 camCommitPrepared 0;
//waitUntil {camCommitted %1};
",
"_camera",_targetPos,_camParameters select 1,_camParameters select 3,_camParameters select 6,_camParameters select 4 select 0,_camParameters select 4 select 1,_camParameters select 2
			];

			copyToClipboard _camOutput;
		};
	}];

	waitUntil {
		uiSleep 1;
		isNull findDisplay 314;
	};

}

 

You just have to run the script from the debug console, and each time you'll press Ctrl+C it will copy in your clipboard the camera data in the format of the old camera.sqs (with a couple bonus features, commented by default).

The output will be in the format :

 

_camera camPrepareTarget [13143.1,8857.96,0];
_camera camPreparePos [13140,8859.02,1.75517];
_camera camPrepareFOV 0.75;
//setAperture 0;
//_camera setDir 109.302;
//[_camera, -28.6765, 28.2684] call BIS_fnc_setPitchBank;
_camera camCommitPrepared 0;
//waitUntil {camCommitted _camera};

 

EDIT/NOTE : if you use "camPrepareTarget", you won't be able to setPitchBank anymore...

So to achieve your desired effect, comment camPrepareTarget and uncomment the combination of setDir/setPitchBank.

(Note that you'll have to delete and recreate a camera if you used camPrepareTarget earlier).

 

It's a dirty and imperfect workaround unfortunately 😕

 

The script pre-edit for reference :

Spoiler

 


findDisplay 314 displayAddEventHandler ["KeyUp", {
	params ["_displayorcontrol", "_key", "_shift", "_ctrl", "_alt"];
    
    if (_key isEqualTo 46 && _ctrl) exitWith {
		_camParameters=call compile copyFromClipboard;
		_targetPos=screenToWorld [0.5, 0.5];

		_camOutput = Format ["
		%1 camPrepareTarget %2;
		%1 camPreparePos %3;
		%1 camPrepareFOV %4;
		//setAperture %5;
		//[%1, %6, %7] call BIS_fnc_setPitchBank;
		%1 camCommitPrepared 0;
		//waitUntil {camCommitted %1};
		",
		"_camera",_targetPos,_camParameters select 1,_camParameters select 3,_camParameters select 6,_camParameters select 4 select 0,_camParameters select 4 select 1
		];

		copyToClipboard _camOutput;
    };
}];

 

Edited by Tova
  • Like 3
  • Thanks 2

Share this post


Link to post
Share on other sites

First of all thank you for this script,

but there is a problem if you use

"camPrepareTarget" then BIS_fnc_setPitchBank wont work.

Do you know a solution for this issue?

Share this post


Link to post
Share on other sites

Hi @Alert23 !

 

I tried to find a solution to use setPitch & Bank together with camPrepareTarget, but I couldn't find a way to... 😢

As a dirty workaround, I added a setDir parameter, if you need to set the bank of the camera, just comment the camPrepareTarget line, and use the combination of setDir and BIS_fnc_setPitchBank instead.

 

Now, let's hope that some SQF guru will find a more elegant solution !

  • Like 1

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

×