How is Scale calculated?

I’m trying to understand how scale works in Synfig. I have two images both sized 500x500px. I have resized my canvas to 500x500px and have set images to be scaled to the canvas size. However, when I import the images the Scale of these is 77.0371x77.0371px.

How is this being calculated? In programs such as Natron and Blender’s compositor the scale parameter is in relation to the original size of the imported image, so scale 1 is unchanged, scale 2 is double size (1000x1000), 0.5 half size (250x250) etc.

I’ve attached my project and files. I’m using Synfig (55.7 KB)

Check the options of the Canvas (F8) on first and last tab.
Some parameters are checked by default, changed according Synfig’s version and thus not behaving the same…


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


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: 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:
If you are a Windows user, and without a dev build system, you can retrieve the PR binaries directly.

1 Like