Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8421273
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 10, 20262026-06-10T03:06:24+00:00 2026-06-10T03:06:24+00:00

I have been experimenting with Greensock’s TweenMax JS and Three.js . As both libraries

  • 0

I have been experimenting with Greensock’s TweenMax JS and Three.js. As both libraries use requestAnimationFrame (rAF), I needed to decide which library should handle this.

If I use rAF built into Three.js, it runs around 30fps and is pretty smooth.

If I use TweenMax eg: TweenMax.ticker.addEventListener('tick', animate); it runs about 55-60fps but is a little choppy.

I can change the fps in TweenMax with TweenMax.ticker.fps(30); which as expected runs similar to the Three.js rAF version.

My question is which method is preferred and is one considered best practice over the other? Also if I choose Three.js am I able to change the fps in its rAF implementation?

Finally, how would you decide on the fps to suit a wider audience? Limiting to 30fps seems ok but is a bit arbitrary, some users may be capable of much higher rates than I am allowing.

UPDATE :

From the feedback from mrdoob and jack, I have tried both rAF in three.js and rAF using TweenMax, with antialias on and off.

antialias on:

Three.js rAF (default) - 30fps smooth. 

http://jsfiddle.net/cR7Lx/21/

TweenMax rAF (default) - 55-60fps slightly choppy. 

http://jsfiddle.net/cR7Lx/23/

TweenMax rAF (fps(30)) - 30fps smooth. 

http://jsfiddle.net/cR7Lx/24/

antialias off:

Three.js rAF (default) - 30 - 60fps slightly choppy.
TweenMax rAF (default) - 92-120fps slightly choppy.
TweenMax rAF (fps(30)) - 30fps smooth.

Could do with someone who knows how requestAnimationFrame works under the hood to help explain the differences, for now I will use either TweenMax 30fps or Three.js both with antialias on.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-10T03:06:25+00:00Added an answer on June 10, 2026 at 3:06 am

    Just to clarify, the default TweenMax RAF behavior doesn’t put a cap on the fps because…well…that’s the point of requestAnimationFrame in the first place – it is intended to be something that the browser dictates (and it’s typically around 60fps). Setting a specific fps with TweenMax.ticker.fps() simply puts a cap on it (unless you set TweenMax.ticker.useRAF(false) in which case it will use a setTimout() to get as close as possible to the fps you set).

    I noticed someone said that you must set an fps in TweenMax in order to make it smooth and I just wanted to clarify that it isn’t true – doing so just skips RAF updates if/when they occur too quickly – I can’t imagine how that’d make anything smoother. It would likely do the opposite.

    Only use TweenMax.ticker.fps() if you want to LOWER the frame rate below the normal browser refresh rate which, again, is typically around 60fps. If you’re looking for the smoothest results, I’d probably stick with the default configuration of TweenMax. You could try turning off requestAnimationFrame and using a very high fps (TweenMax.ticker.useRAF(false); TweenMax.ticker.fps(100)), but the down side there is that you lose all the benefits of RAF, like improved battery life on mobile devices when the tab is inactive, synchronized updates with the native browser refreshes, etc.

    The biggest cause of jerky behavior is graphics rendering in the browser which is unrelated to the JavaScript animation engine.

    I’m not familiar with Three.js, so I can’t speak to its capabilities or which option would be better to use to drive your other stuff (sorry). All I can say is I’m a big GreenSock fan (ha ha)

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have been experimenting with writing applications that use a local SQL Database to
I have been experimenting with the lightweight NiceDog PHP routing framework, which routes like
I have been experimenting with woopra.com A web analytics tool. Which requires a piece
I have been experimenting with HTML5 and gradient fades, I would like to use
So I have been experimenting with RootsTheme (which uses Bootstrap), Wordpress (from Joomla! background)
I have been experimenting with Firefox's Audio API to detecting silence in audio. (The
I have been experimenting with a lot of web development apps like Drupal, Moodle,
I have been experimenting with sending messages from two .NET Windows Forms applications using
I have been experimenting with TMask in Delphi 2010 and it seems to work
I have been experimenting some problems with the fully distributed version. First of all

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.