How is Scale calculated?

Exactly which parameters are you referring to?

I’ve read that thread but can’t see how it relates to what I described.

The image is being displayed at the right size on the 500x500 canvas but in the parameters editor it’s displaying the scale of the image at 77.0371x77.0371px

81fa90c6308ad96c0ab4f3c702ede36006992cfc_2_518x499

Oh my dude, you just got pranked :slight_smile:

The 77.03 number is in fact scale 1.0 as you would expect. Synfig just trolling you because it handles different measurement systems poorly. It’s native format is “units” but in your case it is set to pixels so everything gets converted to them. And with resolution 500x500 the 1 unit is ~77.04 px. Unit is relative to resolution, so for example for 480x270 it’s 60px and for 1920x1080 it’s 240px.

Just work with “units” until Synfig gets better with different measurement systems. You can change it in “Edit->Preferences->System->Unit System”.

This should be fixed… Scale is just a relative number (like %), it shouldn’t be shown as a “distance”.

1 Like

Thanks for explaining but it seems really odd that the scale of a layer/object can change if the canvas changes size. As @rodolforg says it should be fixed/changed.

If there’s not a bug report about it already I’ll make one.

Wait, why is it odd? Seems pretty logical to me. I do want to upscale everything when I change canvas size because I work with vector forms and it scales up perfectly.

If you want to change the size of the canvas without upscaling everything, then do the following:

  1. Go to “Canvas->Properties->Other”. Make sure that only “Pixel Aspect” is checked. Click “Apply”.
  2. Go to “Image” tab and specify the new resolution, click “OK”.

What I and @rodolforg meant is that parameters that specify scales, amounts, you know, anything relative, must not be converted in pixels/centimeters/whatever but always remain in units (floating numbers like 1.0, 2.0, 0.5, etc.).

Also, have a look here:

Hey BTW, why Units? Why not just Put it in Pixels for default instead units? We are working with digital 2D images for draws and animations dont editing documents for magazines or impress, think in the Random people or new users, all the animation2d and Painting programs have they metric system units in Pixels by default, with Synfig you must need to be like an atronaut to go the menu edit, preferences, system(i think, forget ), metric unit. :man_shrugging:. You want more people use the program think in that people the new users dont know nothing about the program, make easy and more friendly for they. I love Linux, but Im a Digital Artist not an informatic programer guy, for that reason I return to Windows because I lost more time try to configuring and try make the softwares work well than making my draws.
Ah other one: why time line Start for frame 0? It must start from frame 1, frame 0 dont exist, frame 0 is when you have no draw (in the moment that you do a simple doodle, point or line it be the frame 1.), I think it must start from frame 1 for default (but Synfig time line is more like a 3D program, but look even blender start the timeline in frame 1) and if some hipster want that they project start from frame 0, then that he have need to go the preferences and change it, but not make to the new users do all that changes

Ah yes, discussing Synfig metric system on New Year’s Eve. What can be better? :slight_smile:

Why not units? Things I have against pixels:

  • They are too small. It’s like measuring everything in millimeters. Not very convenient if you ask me
  • Pixel is the absolute unit. Which means it will NOT scale on resolution change, while units are relative. Say we have a line that has size -0.5u to 0.5u (-30px to 30px). This line will have the exact same size when you change resolution in units but not in pixels (it’ll become -60px to 60 px in case of 960x540 resolution). And it’s convenient for quickly moving objects around canvas. For example, I can simply put ‘-4’ to ‘Origin’ parameter of any shape and it will jump right in the left corner of the canvas no matter resolution
  • From the above point, pixels aren’t relative, so you can’t use them for tasks like expressing scale, percentage and so on. You have to use pixels and something else (% for example) for relative tasks while units can be used for everything
  • You’re working with vector graphics. Why do you even care about measuring system? I would understand if you were creating pixel art, but in that scenario you better off with program that has pixel-art specific tools

And besides, Synfig already has pixels for default choice (I don’t approve it though), so you got what you wanted, right?

It is such a little detail that I don’t even think it deserves a discussion. Personally I wouldn’t mind it either way. Heck, there’re SO MANY problems with Synfig and you got angry at starting frame? Come on, it’s not a big deal.

1 Like

Well, it happened due to programmer habits (and how computer works).

It’s possible to change to regular user, but we now should check everywhere to change what frame number is shown to keep consistency: timeslider, waypoint editor dialog, current frame field, tooltips, layer parameters (like TimeLoop) etc.

I have a vague memory of reporting a bug/feature request for changing the start frame number from 0 to 1 but can’t seem to find it on github. Oh well!

Personally I am in favour of it starting from frame 1. Every animation and video editing software I’ve used (open and closed source) starts from 1, which makes sense as it’s the first frame.

btw should discussion about the start frame be moved to its own topic?

Feature request made here: Start time line from frame 1 · Issue #1990 · synfig/synfig · GitHub Additionally feels like starting from 0 is more for audio and video editing software which is more describing time elapsed

1 Like

I just want to highlight :

It needs a very careful work of investigation.

1 Like

Agreed! And I appreciate that it may be a long time before it’s addressed but at least this is a start to the process.

@Svarov By the way, I’m working on fixing this problem. But I’ll need someone to check aaaaaall parameters of aaaaall layers (and parameters of all valuenode types XD)

1 Like

Yeah, I can do that.
Just to clarify, you aren’t implementing a new Synfig type, right? In my understanding, it should be just a hint in ValueNode class for GUI to ignore current visual representation and keep units or am I missing something?

I totally agree with you.

No, I’m just reusing the “set_is_distance()” hint that was used only for “GtkTextEntry”, but not by vectors.
I’m setting hints ‘everywhere’ and implemented the code to not show as distance metrics if not set.

If/When you can, the PR is this one: [Synfig Studio] Fix parameter values of several layers shown as distance metrics when they are not by rodolforg · Pull Request #1992 · synfig/synfig · GitHub
If you are a Windows user, and without a dev build system, you can retrieve the PR binaries directly.

1 Like

All right, I’ll test it on weekends and report back here.

1 Like

I didn’t complete all tests, but I’ve already noticed one big issue. The “set_is_distance()” hint or something related to it doesn’t support locales properly. For example, my Windows machine is set to Russian locale and in it we use comma (,) as separator in floating-point calculations instead of dot (.).

Now Synfig converts every vector value to dot separated number on edit, e.g. 0.5 instead of 0,5 and it gets dropped to zero because Synfig cannot understand it this way. It’s quite confusing, isn’t it? Maybe video will illustrate it better.

Take a look at how editing floating-point number looks in Stable:
Synfig1
Notice that when I hit enter without editing value it remains the same.

Now look how the same thing behaves in Master:
SynfigMaster
Pay attention to the following differences:

  • “1,000000” gets rounded up to “1” on edit
  • The number separator gets immediately changed to dot (.)
  • If you don’t change it back to comma (,) Synfig will reset it to zero, so 0.5 will become 0

This will confuse users because on every parameter edit they will have to retype both numbers (X and Y).