Jump to content
johnnyboy

Best way to display fullscreen .jpg image in game

Recommended Posts

During gameplay or maybe a cutscene, I want the player to have a "flashback" that is a full screen .jpg image.  I have a .jpg image of an ARMA 1 character that I want to flash on the screen in a ARMA3 mission.  What's the easiest way to do this?  I was thinking of putting a billboard out of the way somewhere, and putting the image on the billboard.  Then when I want to show this image, I create a camera focused on the billboard.

 

Or maybe I can use cutRsc somehow.  But with cutRsc, how do I link the image to it?

 

Any suggestions on easiest way to do this?

Share this post


Link to post
Share on other sites

Well, I usually convert any image into a paa file. Not sure if you can display a jpg, and to convert to a paa, you must convert jpg to png first. I'm no expert on this, that's just what I do jpg -> png -> paa. The paa must be in 2^n dimensions, like 512x512 or 1024x512 or 256x256 etc etc. Otherwise the colors distort badly. You can use GIMP to convert images if you don't have Adobe or something else.

 

In Description.ext for a FULL screen image I have done this


class RscPicture
{
    access=0;
    type=0;
    idc=-1;
    style=48;
    colorBackground[]={0,0,0,0};
    colorText[]={1,1,1,1};
    font="TahomaB";
    sizeEx=0;
    lineSpacing=0;
    text="";
    shadow = 0;
};

 

class GoA_Logo
    {
        idd=-1;
        movingEnable=1;
        duration=6;
        fadein=2;
        fadeout=0;
        name="GoA_Logo";
        Controls[]={"Logo"};
        class Logo: RscPicture
        {
            idc = 9999;
            text="images\ARMAgeddon_p2a_ca.paa";
            style = 0x30 + 0x800;
            x = safezoneX;
            y = safezoneY;
            w = safezoneW;
            h = safezoneH;
            colorBackground[]={1,1,1,1};
            colorText[]={1,1,1,1};
        };
    };

 

and then a cut command to display it


2 cutRsc ["GoA_Logo", "PLAIN"];

The 2 can be any number, it's a layer, higher numbers stack.

I hope that's what you're asking.

Hmmm, I just looked at one of Undeceived's missions, he used pure jpg. Just define it in the description and call it like above, don't worry about conversion, see if it works. Can't hurt to try.

  • Like 4

Share this post


Link to post
Share on other sites

@AZCoder: Thanks much for the detailed response.  Will give it a whirl.

Share this post


Link to post
Share on other sites

I am using a full screen image (cutRsc)  in my deathscreen script if you want to check:

 

  • Like 3

Share this post


Link to post
Share on other sites
25 minutes ago, GEORGE FLOROS GR said:

So far , i have notice that the .paa format will load faster than the .jpg

Mildly related info: .paa also stays visible at longer ranges, when used as texture for vehicles/billboards, .jpg turns into a black rectangle.

 

Cheers

  • Like 1

Share this post


Link to post
Share on other sites
 
 
 
 
 
 
 
 
 
7
On 2/8/2018 at 9:08 PM, AZCoder said:

Well, I usually convert any image into a paa file. Not sure if you can display a jpg, and to convert to a paa, you must convert jpg to png first. I'm no expert on this, that's just what I do jpg -> png -> paa. The paa must be in 2^n dimensions, like 512x512 or 1024x512 or 256x256 etc etc. Otherwise the colors distort badly. You can use GIMP to convert images if you don't have Adobe or something else.

 

In Description.ext for a FULL screen image I have done this


class RscPicture
{
    access=0;
    type=0;
    idc=-1;
    style=48;
    colorBackground[]={0,0,0,0};
    colorText[]={1,1,1,1};
    font="TahomaB";
    sizeEx=0;
    lineSpacing=0;
    text="";
    shadow = 0;
};

 

class GoA_Logo
    {
        idd=-1;
        movingEnable=1;
        duration=6;
        fadein=2;
        fadeout=0;
        name="GoA_Logo";
        Controls[]={"Logo"};
        class Logo: RscPicture
        {
            idc = 9999;
            text="images\ARMAgeddon_p2a_ca.paa";
            style = 0x30 + 0x800;
            x = safezoneX;
            y = safezoneY;
            w = safezoneW;
            h = safezoneH;
            colorBackground[]={1,1,1,1};
            colorText[]={1,1,1,1};
        };
    };

 

and then a cut command to display it


2 cutRsc ["GoA_Logo", "PLAIN"];

The 2 can be any number, it's a layer, higher numbers stack.

I hope that's what you're asking.

Hmmm, I just looked at one of Undeceived's missions, he used pure jpg. Just define it in the description and call it like above, don't worry about conversion, see if it works. Can't hurt to try.

Does this also work for video files?

Share this post


Link to post
Share on other sites
1 hour ago, Doctor_Holliday said:

Does this also work for video files?

No, videos are another beast. There may be other ways to do this, but I convert a video into an ogv using libtheora. You can probably use an online coverter to get it into ogv which is what Arma wants.

https://community.bistudio.com/wiki/BIS_fnc_playVideo

 

Once converted I do something like this and experiment until I get the right screen size and aspect ratio:


_vx = safezoneX + (safezoneW * 0.18);
_vy = safezoneY + (safezoneH * 0.18);
_vw = safezoneW * 0.68;
_vh = safezoneH * 0.68;

["video_to_play.ogv",[_vx,_vy,_vw,_vh]] spawn BIS_fnc_playVideo;

  • Like 2

Share this post


Link to post
Share on other sites
On 2/9/2018 at 3:08 AM, AZCoder said:

Well, I usually convert any image into a paa file. Not sure if you can display a jpg, and to convert to a paa, you must convert jpg to png first. I'm no expert on this, that's just what I do jpg -> png -> paa. The paa must be in 2^n dimensions, like 512x512 or 1024x512 or 256x256 etc etc. Otherwise the colors distort badly. You can use GIMP to convert images if you don't have Adobe or something else.

 

In Description.ext for a FULL screen image I have done this


class RscPicture
{
    access=0;
    type=0;
    idc=-1;
    style=48;
    colorBackground[]={0,0,0,0};
    colorText[]={1,1,1,1};
    font="TahomaB";
    sizeEx=0;
    lineSpacing=0;
    text="";
    shadow = 0;
};

 

class GoA_Logo
    {
        idd=-1;
        movingEnable=1;
        duration=6;
        fadein=2;
        fadeout=0;
        name="GoA_Logo";
        Controls[]={"Logo"};
        class Logo: RscPicture
        {
            idc = 9999;
            text="images\ARMAgeddon_p2a_ca.paa";
            style = 0x30 + 0x800;
            x = safezoneX;
            y = safezoneY;
            w = safezoneW;
            h = safezoneH;
            colorBackground[]={1,1,1,1};
            colorText[]={1,1,1,1};
        };
    };

 

and then a cut command to display it


2 cutRsc ["GoA_Logo", "PLAIN"];

The 2 can be any number, it's a layer, higher numbers stack.

I hope that's what you're asking.

Hmmm, I just looked at one of Undeceived's missions, he used pure jpg. Just define it in the description and call it like above, don't worry about conversion, see if it works. Can't hurt to try.

======================

 

Did the last ArmA update break this? I changed the .paa to one of mine 512 x512 & nothing shows? and yes the paa is in an image folder in the mission folder.  the only thing changed is the name of the paa.

 

 

 

 

Share this post


Link to post
Share on other sites

I am able to have a paa image showing with a trigger a the start of a mission but when I try to have a second one for later in the mission , I get the image already defined error! 🤬

 

This works for one image; Any one know how to have it work with a second one for a trigger later ???? Ive tried various combinations but the only one that shows is the first paa...

 

class RscTitles
{

 titles[] = {"missionintel1"};

 class missionintel1 {
   idd = -1;
   movingEnable = 0;
   duration = 30;  
   fadein = 2;
   fadeout = 2;
   name="missionintel1";

   controls[]={"Picture"};

   class Picture {
     x=0.0; y=-0.1; w=1.5; h=1.5;
     text="missionintel1.paa";
     sizeEx = 1;
     type=0;
     idc=-1;
     style=48;
     colorBackground[]={0,0,0,0};
     colorText[]={1,1,1,1};
     font="puristaMedium";
   };
};

 

 

Share this post


Link to post
Share on other sites

You need to create a new class for the second image. Not tested:

 

class RscTitles
{
  titles[] = {"missionintel1","missionintel2"};
  class missionintel1 
  {
    idd = -1;
    movingEnable = 0;
    duration = 30;  
    fadein = 2;
    fadeout = 2;
    name="missionintel1";
    controls[]={"Picture"};
    class Picture 
    {
      x=0.0; y=-0.1; w=1.5; h=1.5;
      text="missionintel1.paa";
      sizeEx = 1;
      type=0;
      idc=-1;
      style=48;
      colorBackground[]={0,0,0,0};
      colorText[]={1,1,1,1};
      font="puristaMedium";
    };
  };
  class missionintel2
  {
    idd = -1;
    movingEnable = 0;
    duration = 30;  
    fadein = 2;
    fadeout = 2;
    name="missionintel2";
    controls[]={"Picture"};
    class Picture 
    {
      x=0.0; y=-0.1; w=1.5; h=1.5;
      text="missionintel2.paa";
      sizeEx = 1;
      type=0;
      idc=-1;
      style=48;
      colorBackground[]={0,0,0,0};
      colorText[]={1,1,1,1};
      font="puristaMedium";
    };
  };
};

 

  • Like 1

Share this post


Link to post
Share on other sites

That looks like one of the things I tried, but I'll test it again I might have missed a comma or something. I'll let you know.

 

==========================================

 

Later that day 🙂   I discovered that the second image when I changed it back to a paa was resizing its self from  1024 x 1024 to 800 x 600 for some reason?

 

Managed to get the right size to stay & it works YAY! :hyper:

 

One of the problems with ArmA3 editor, is that when you test stuff you have changed  it often loads the previous version from memory rather than the new script. I've had to load a different mission to get it to forget & reload what I was working on.

 

Thanks for your input  WOllie 👍

 

Share this post


Link to post
Share on other sites

This is a far easier way to show a photo in Arma 3

and you can add cool effects like scrolling onto screen etc very easy as well.

 


_imagePath = "banner.jpg";// define the image path
_pppControl = findDisplay 46 ctrlCreate ["RscPicture", -1];// create control

_pppControl ctrlSetText _imagePath;//set the image

_pppControl ctrlSetPosition [0, 1.5, 1.025, 1.8];//set start position

_pppcontrol ctrlCommit 0;//commit instantly 

_pppControl ctrlSetPosition [0, -.4, 1.025, 1.8];//set end position

_pppcontrol ctrlCommit 30;//commit over 30 secs so it slowly slides onto screen.

 

waituntil {introdone};//wait until some variable is true


_pppControl ctrlsetFade 1;//set start fade from 1 to 0
_pppcontrol ctrlCommit 5;//slowly fade for 5 seconds
sleep 5;//pauses for sometime allowing fade to finish then deletes control.
ctrlDelete _pppcontrol;//delete the control

 

 

  • Like 4

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

×