Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

editor freezes for a moment after *every* change in it. #15853

Open
jazznazz opened this Issue Feb 27, 2019 · 4 comments

Comments

Projects
None yet
4 participants
@jazznazz
Copy link

jazznazz commented Feb 27, 2019

Description of the problem

I drag'n'drop a 3.2 mb FBX (created in 3ds max 2016), plus some 30 jpg textures with 256-2048 resolution. Every single time when I make a change in the scene, the editor freezes for several(tens of) seconds. The heavier the scene, the longer the freeze.

Browser
  • All of them
  • Chrome
  • Firefox
  • Internet Explorer
OS
  • All of them
  • Windows
  • macOS
  • Linux
  • Android
  • iOS
Hardware Requirements (graphics card, VR Device, ...)
@Mugen87

This comment has been minimized.

Copy link
Collaborator

Mugen87 commented Feb 27, 2019

The freeze could indicate a long time to render the frame. Is it possible for you to share the mentioned asset in this issue?

@mrdoob

This comment has been minimized.

Copy link
Owner

mrdoob commented Feb 28, 2019

That's because autosave is on. The current autosave feature is not optimal (it serialises the whole scene graph).

@mrdoob mrdoob added this to the rXX milestone Feb 28, 2019

@jazznazz

This comment has been minimized.

Copy link
Author

jazznazz commented Feb 28, 2019

Thanks for the fast replies !
Confirmed, it is the autosave . Maybe the default setting should be autosave = off for now?

@Usnul

This comment has been minimized.

Copy link
Contributor

Usnul commented Mar 10, 2019

My 2 cents:

I used to have JSON serialization in my game engine, which was fine up to around 10Mb states, beyond that it started to really harm user experience when game was.. you guessed it: autosaving. I'm currently using a custom binary serialization scheme, which works 2 orders of magnitude faster and uses less space, which is a nice bonus. Not that editor is the most important part of three.js project, but it might be worth investigating some binary serialization schemes, like, say, avro.

I also found that writing a custom JSON -> string serializer helped a ton, if you can build a string incrementally as you go - it turned out about 3x faster, I don't really know why though.

Another avenue if to have record discrete changes and update save state incrementally.

Yet one more is do some heavy lifting in a Worker thread.

@jazznazz for your case, I'm guessing that texture serialization takes the most time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.