• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
Locked
0

Issues with AIR Application on 8000x2500 Interactive Wall

New Here ,
Feb 28, 2014 Feb 28, 2014

Copy link to clipboard

Copied

Hello,

I am trying to develop apps for a large interactive wall and I seem to be running into the 4096x4096 bitmapData limit. This post: http://stackoverflow.com/questions/8277639/no-more-constrain-on-bitmap-resolution-in-flash-player-11... says that the limit has been removed since Flash version 11 (I'm running Flash 12 and AIR 4.0) however I am seeing display object being cut off at exactly x=4096.

My app is basically this...

I have 30 sprites (each 600x428 and each with an image on front and back) spread evenly across the wall (10 colums and 3 rows). I use Papersprite and Tweener to flip (rotationY) each sprite over once they are touched. Before being touched, they all display perfectly across the wall. When I touch a sprite past x=4096, they dissapear completely, or they are literally cut off/in-half at x=4096. Before x=4096, they flip perfectly. Also, another application I made has many images that are 8000x2500 and they each fade in/out, also using Tweener, to the next with zero issues like this at all.

According to the link above the bitmapData size is dependent on the OS and RAM. The wall is run by very high end computers with the latest graphics cards and stacked RAM.

Can anyone explain what is happening and how I can overcome this issue?

TOPICS
Development

Views

1.2K

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe Employee ,
Feb 28, 2014 Feb 28, 2014

Copy link to clipboard

Copied

Could you please share few more details about "Interactive Wall" - OS, hardware, etc?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Mar 01, 2014 Mar 01, 2014

Copy link to clipboard

Copied

It is running windows 7 with, I believe, 16GB of ram. I can't remember the graphics card off the top of my head and I am not at work to check. I do know it is the "latest and greatest"

I can get more details on Monday if it helps.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Participant ,
Mar 01, 2014 Mar 01, 2014

Copy link to clipboard

Copied

Hard to say where to look from the info you are giving us.

A couple questions:

  • Which render mode are you using ( CPU, GPU, or Direct ) ?

  • Are you using cacheAsBitmap on the container that has the 30 sprites within?  ( If so, that would be bad ).  Are you using CAB on the sprites themselves?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Mar 01, 2014 Mar 01, 2014

Copy link to clipboard

Copied

I'm running it in GPU and currently I am not using cacheAsBitmap on either. Should I use it on the sprites themselves? If so, does it matter if the back of the sprites contain more, soon to be, interactive sprites?

Basically each of the 30 sprites contains more information about itself on the "back" after flipping them over on touch.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Participant ,
Mar 01, 2014 Mar 01, 2014

Copy link to clipboard

Copied

CAB would be detrimental to performance on the top container for sure.  CAB just creates bitmaps of your sprites and therefore uses up a lot of memory -- that's why I was enquiring if you were using it.

I you are using CAB, I would disable it and see what happens.

My guess is that your GPU memory gets filled-up / corrupted during the compositing step of the second frame.   Rendering the first, full frame is fine.  Compositing the portions that have changed in the following frames, isn't.

Things to try:

  • Using stage.invalidate() to force a redraw of the entire stage, not just the portions that have changed since the last time the frame was drawn.

  • If you have a mouse move handler, you might also want to try evt.updateAfterEvent() and see what happens.

  • Try CPU and Direct render modes.

  • PaperSprite isn't a standard AS3 class, and a cursory look at http://blog.soulwire.co.uk/code/open-source/two-sided-planes-in-flash-player-10 seems to point to it doing some funky things with stage.invalidate() -- surprise, surprise ! -- and the Event.RENDER, etc.  It may all be fine, but it could also be that your problem comes from the PaperSprite class.  What I would try is to use a regular, single-sided Sprite, instead, as a test, and see if the same problem occurs when you try to flip it.  If the problem doesn't happen, then I would dive into the source code for PaperSprite, or come up with a different approach, like flipping quads in Stage3D.

In case you are new to molehill, the best source to get started with Stage3D, imo, besides the AS3 documentation code examples, is this book:

http://www.amazon.com/Adobe-Stage3D-Molehill-Programming-Beginners-ebook/dp/B006EEJSHM/ref=sr_1_1?ie...

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Mar 03, 2014 Mar 03, 2014

Copy link to clipboard

Copied

Great suggestions, thank you.

Like I said, the weird thing is that any sprite x<4096 will flip perfectly fine and everything x>4096 either disappears or gets cut off right at 4096. Also, using images that are 8000x2500 render just fine, with fade in/out effects with Tweener. It doesn't make much sense to me.

I will try stage.invalidate() but I can see in the PaperSprite class that it is used throughout. I did try removing the use of PaperSprite and it still happened when I use Tweener or TweenLite, so I figured it had something to do with something in the source of either of those.

I don't use mouse events, just touch/gesture events since it is in interactive wall.

I have used both CPU and Direct and the problem is still there.

I thought about converting this app into a Starling app to see if that corrects the issue. Not sure if it would make a difference or not though.

Thank you for the help, I will check into that book as well. I'm always a fan of opening one up to get answers.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Mar 03, 2014 Mar 03, 2014

Copy link to clipboard

Copied

Something to notice is that when you are swiping through photos in the Photos app the image drops to a lower resolution. Perhaps 4096 is a limit for texture size, and that bigger than that is too much for the hardware? Try changing to a squished 4096x2500 (it will look correct to the user, just slightly softer looking) version of the image just while you do the flip, then switch back to the 8000x2500 version.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Mar 04, 2014 Mar 04, 2014

Copy link to clipboard

Copied

So I have narrowed down the issue to rotationY past x=4096. I removed all PaperSprite and Tweener references and just created a boolean for isFront. When you tap it, it simply rotates 180 to 0 depending on the boolean. At x>4096, the sprites still cut off or dissapear completely.

Is this a Stage3D limitation? If so, is there a way to fix this or a workaround to make it work properly?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Participant ,
Mar 05, 2014 Mar 05, 2014

Copy link to clipboard

Copied

LATEST

If this app runs on the desktop, one workaround might be to have two air applications and putting the windows side by side!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Mar 01, 2014 Mar 01, 2014

Copy link to clipboard

Copied

You might need to manually set the swf version in the compiler options. I

think you would need 14 or 15 but I can't keep up with which number

corresponds with what release version.

On Fri, Feb 28, 2014 at 2:55 PM, IndiansDeveloper

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Mar 03, 2014 Mar 03, 2014

Copy link to clipboard

Copied

I do have it set already to use the latest version of Flash Player: -swf-version=23 is Flash Player 12.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines