Page MenuHome

Proposal: Replace background images with Image Empties in 2.8x
Closed, ResolvedPublic

Description

Proposal

Image empties were originally added to be an easier to use background image.

Since 2.8x allows to remove some functionality, I'm proposing to remove background images.

  • They're stored in the viewport making it impossible to move to other scenes or viewports. (When "Load UI" is disabled, they're lost for eg).
  • They're difficult to manipulate.
  • They're duplicate code/functionality.

If we need empty-images to support some different draw options, we can always do this.

To make empty images more accessible the Add menu can have a "Background Image" entry with submenu choices "Left", "Top", .., and immediately opening a file browser to select the image. (suggested by @Brecht Van Lommel (brecht))

What to Keep

The one thing background images can do is draw in the camera with framing options.

I'd suggest this option be moved into the camera data-block (optional draw image/movieclip).

Changes to Empty Images

There are some features from background images we will want to support in empty images.

  • Option only to display in ortho axis-view.
  • Single sided display (to show only in front/back view).

Update: Wrote initial patch D2827

Event Timeline

Campbell Barton (campbellbarton) renamed this task from Proposal: Replace background images with Image Empties in Blender2.8 to Proposal: Replace background images with Image Empties in 2.8x.

I think this would be good, especially coupling it to the scene instead of the screen would be a good change.

Maybe image empties could be made a bit easier to discover? The Add menu could have a "Background Image" entry with submenu choices "Left", "Top", .., and immediately opening a file browser to select the image.

Besides the normal image manipulations one thing the empties lack is the ability to easily assign them to a view.
So, I think we should find some way to easily do this for the empties.

@Brecht Van Lommel (brecht) - good suggestion, added to proposal.

@Aaron Carlisle (Blendify) - how do you mean assign to a view? I'd assume regular object/layer features would be used here.


Edit, do mean only display the empty in the axis aligned views?
We could use a shader that fades the images out when viewed at an angle.

Single sided drawing might be important too, so you can switch from front to back and see different images.

I was just trying to say the same thing as Brecht

I think Aaron means to make them only visible in top view or camera view for example. That's indeed very usefull. And if it works for empties, it would be great to have it work for all objects. I would add a kind of sprite rendering like in old games, where the image always faces the view, but can also be constrained to only rotate around Z for example. The empty would then have a list of views ([always show, camera, front, back, top, bottom]) were they are displayed or not, and the constraints. Blender current constraint don't work if you have multiple 3D Viewports with different views, but with OpenGL it's ok.
The X-Ray option to draw behind or in front should be enough to have then all functionalities with a much better usability.

In general, good suggestion indeed. I see lots of potential here.

Edit, do mean only display the empty in the axis aligned views?
We could use a shader that fades the images out when viewed at an angle.
Single sided drawing might be important too, so you can switch from front to back and see different images.

Yeah, I think this could work. Maybe more would be needed (e.g. support showing same image in multiple views with single image empty), but this sounds like a good start.

This is a feature i use a lot when sculpting, specially when i have hard time to get the proportion right, so it will be good if it has an option to turn it on and off in orthogonal view or perspective view. It will be disturbing to have it stick on your model while in perspective view.

@Erick Tukuniata (erickblender) noted in proposal "Changes to Empty Images".

@Julian Eisel (Severin), re:

support showing same image in multiple views with single image empty

Not sure what you mean? Empty images are just objects so they show in multiple views.

imho the actual system works well, and have some features really usefull and have few problems. The images are linked to one view (right, front,...) and don't show in perspective view, also you can use movies. You can have different references for each view and you don't have objects in scene bothering to the pipeline (You don't need to check if you have extra objects in the scene when export).

But in other hand it's true that it's hard transform the image, but it's something that you make one time each various days.

@Alberto Velázquez (dcvertice) agree existing system is not terrible or useless, but it does have some serious limits which aren't so easy to resolve.

Using a layer (in 2.8x) for reference objects should give enough control so they don't get in the way.

Vuk Gardašević (lijenstina) triaged this task as Normal priority.Sep 8 2017, 5:10 PM
Albert (wevon) added a subscriber: Albert (wevon).EditedSep 11 2017, 5:58 PM

Perhaps, by placing the Pivot in the center of the image by default, it will streamline the workflow.

I have modified code in 2.79 a bit regarding drawing image empties and am suggesting perhaps developers also consider with following small options, especially before anything gets uprooted:
a) togging of backface culling. E.g if you load Front view of a person, you do not want to see Font view from background(culling must be enabled). At the same time suppose you're modeling a car (Sideview), boat, anything symmetrical - need to see it from both left and right. Checkbox for toggle is needed.
b) Borders are not needed WHEN image is loaded. Depending on theme and generally in other 3D applications Helper objects are BRIGHT(e.g green) so Image planes with borders are highly distractive especially if there are many. I personally disabled drawing of them IF image is loaded.
Example: http://cgstrive.com/SS/2_9122017_e1b0.png

Albert (wevon) added a comment.EditedSep 16 2017, 8:27 AM

When you launch an image on the 3D viewer, it automatically appears in the backgroud. It would be good to conserve this functionality with the Empty Images. It would make cut out animations with ease.
Converting the Empty Images to Mesh Planes, retaining the proportions and texture, I think would also be useful for playing with complex shaders and lighting.

One option I liked on the old background images is being able to change the render order to switch having the image always be in front of everything.

Would a toggle like {3D space | Infinitely close | infinitely far} be something worth considering? I'm imagining the latter modes as ones where you can still select the empty and manipulate it on the view direction's orthogonal axes, but without the clutter of having them be in the way of your actual geometry.

@Patrick Boelens (senshi) in 2.7x this can be done by placing the empty object behind other objects, then toggling xray to render on top.

2.8 doesn't have xray option and I'm not sure if it will get it. Whatever the case - a way to easily draw over/under existing objects is needed.

Also is needed the opacity control of the image

The idea is to make easy use the background image. But actually the proposal is more complicated. The actual tool have all controls in one place, visibility, views. position,... It's one of the things more user friendly for noobs, and the proposal needs move the object in 3D view, create directly the direction, making necesary unable select the empty, use other objects Xray to show correctly,... I don't see if a image empty will have new uses in other workflow (with the grease pencil workflow), but in the background image it's hard to see the improvements in front of the actual tool, only more steps to configure a image for the background.

In other hand, I expect that 2.8 will have xray solution because is needed to make retopology.

Tested the empty as an image functionality yesterday in Blender 2.8, because Clay render doesn't have background image yet , sincerely talking it a pain to manipulate the image. it scales only from the origin and since scaling from the origin is like translating it is making it hard to have the image in one place. It would good to have the future empty as image behave just like Blender 2.79 background image.

@Erick Tukuniata (erickblender) - not sure how you mean? - it needs to scale from somewhere.

To scale around the image center we could default the image offset to x/y -0.5, -0.5

otherwise you can always use the 3D cursor.

@Campbell Barton (campbellbarton) i see now, so yesterday while testing i offset it first and i scaled it. I wanted it to be on specific spot and with specific size and every time i was scaling it to have the correct size it will move from the spot that i have put it before, now i see it was because of the offset.
And it seems like we cannot scale empty as image with bounding box as pivot center.
The option 'scale around the image center' will be good as well :)

Loving this proposal. Specially with the additions that Brecht mentioned of having it under the Add menu. Perhaps not immediately in the menu since it's not used as often but inside a submenu for other objects of a similar kind, maybe "Helpers" or so? I wouldn't add a sub-menu for Top/Left, etc. I would just rely on the artist being in the desired view beforehand.

To sum up:

  • Dedicated entry in the Add menu (under sub-menu)
  • On adding, open the file browser (thumbnail view/image filtered)
  • Pivot of the image should be centered (image offset -0.5, -0.5)

Thanks Campbell for this much needed proposal.

In T52668#467715, @venomgfx wrote:

I wouldn't add a sub-menu for Top/Left, etc. I would just rely on the artist being in the desired view beforehand.

Makes sense, perhaps it can be an option in the operator redo panel still: Aligned to View, Left, Right, ... just in case it's not immediately obvious to new users.

Campbell Barton (campbellbarton) closed this task as Resolved.

Thanks for feedback, I've added these suggestions to T51366 - this task can be closed.

This comment was removed by Niasia (danimpa).

You've missed some basic functionality to provide.

Ability to turn off image in User ortho, keeping it in Front/Right/Left ortho.
There is a workflow video (full channel of them, but this one is ok).
https://youtu.be/CQPshxa_K9Y?t=351

In complex organic/baroque refrence modeling turning off background image in user ortho is needed to check up the shape and shading of the model without any refrence on background because baroque refrences are heavy for view preception, and they visually mix with the model (works like camouflage).
Slight rotation were fixing that issue:


Ability to view refrence by returning to Front otho immediately allws to compare shape with refrence.

For the time being you can do it manual like here ->


Automate it like it used to be would be good as well.

Automate it like it used to be would be good as well.

Yes, we know about such functionality of empties.

But baroque modeling is never performed in perspective view, because of - actually - perspective distortions.

Such models always needed to be modeled in ortho, it is a very important issue of perception of their shape and ratio, but there is currently no way to turn off the image for a User ortho, keeping it in Projection ortho views.

As you already may know, such modeling is used for supporting Blender development at diamond donation state for a long time.
So, problem basically is a bit deeper - how can it be possible, that Blender's development cancelled a tool that is used daily for supporting Blender's development, and even lower the quality of models that can be performed in it?
Seems definitely like a lupus)

Please, add such functionalty to make images of 2.8 at least usable for us, to help us to support you.

@Paul Kotelevets (1D_Inc) you're asking for the option only to show the image when it's aligned to the view axis?

Will be a great addition to the actual system

@Paul Kotelevets (1D_Inc) you're asking for the option only to show the image when it's aligned to the view axis?

@Paul Kotelevets (1D_Inc) you're asking for the option only to show the image when it's aligned to the view axis?

Yes. To show image when view is in Front/Right/Left/Top/view_axis ortho, to hide image when view is in User's ortho / Perspective view.

This will allow to retrieve such behaviour.
In view axis image provides refrence, in user ortho and perspective view it does not affect visual appearance.

I think, that current realization can be also useful, (for example, for viewing whole amount of refrences that model have) so this view-axis ability can be a global display mode, that infuences all images at once.

This way,

  • turning this mode off will allow to view all refrences in User Otrho in order to manage them.
  • turning this mode on will allow to make models, having refrences visible only in view axis.

A gorgeous news! Nice to know!
We are step closer to being alive)

I don't really use background images myself much ("asking for a friend"), but for the sake of documenting facts I'll post it here also.
Some users seem to miss an option to include images while in local view; this came up in Blender Stack Exchange a few times

On previous versions, background images would remain displayed when entering local view /. In 2.8, image empty get hidden like any other unselected object.
I think it would be nice to have a checkbox option to force display in local view.

Though I can't really envision how this could be managed. At most basic level having a checkbox for each image would suffice, but you wouldn't get granular enough control.
Not sure we want/need more control over which individual images get included on each local view.

Tried new axis restriction. A very nice)
Also loves, that ortho + axis checkbox shows images as wireframe in user ortho - a wise solution!
It allows to expect reference from a given view.

entering local view

yes, that's kind an issue for modeling complex/hidden parts

Though I can't really envision how this could be managed. At most basic level having a checkbox for each image would suffice, but you wouldn't get granular enough control.
Not sure we want/need more control over which individual images get included on each local view.

I think it is possible to be solved in a simple way.
Since Backgound image is a separate type of images, isolation mode have to be supported by entire type, as far as this is the expected behaviour for Background images.

Changes to local view should be done carefully - if at all.

For example, you might to into local view, selected all meshes, invert the selection and delete.

If objects are being loaded into local view unintentionally it makes local-view operations unpredictable.

We could have a toggle to always load background images, or always draw background images in the viewport - even if they aren't in local view. I'd like to wait a bit with this though, since I'd prefer not to have exceptions in local-view and rely on Blender's features instead.

It may be that a general way to show a non-editable collection in local-view is useful in other cases too (similar to a temporary background scene).

If objects are being loaded into local view unintentionally it makes local-view operations unpredictable.

Yes it does.

It may be that a general way to show a non-editable collection in local-view is useful in other cases too (similar to a temporary background scene).

Is that collection formed manually, or every visible Background image will go there and back automatically?
We are using collection number slots to navigate tons of references, and can't afford placing them into one collection manually even temporary, as far as they have complex hierarchical stucture to provide flexible ref navigation during modeling process.
Same GIF:

We will better prefer to have visible Background images switching to unselectable as objects by image type while entering isolation mode, to avoid changes, and restoring selectability states when quitting.
It will also allow to edit them in isolation mode by editing selectability in outliner, on demand.

An interesting question - what if only visible background images with manually turned off selectability will go isolation mode automatically?

This way, if image have selectability turned off in outliner means, that it was placed properly, and is "ready for work".
It is flexible enough, as it keeps it's hierarchical position, behaves in 2.79 style, and also makes local-view operations predictable.

Easy to setup, easy to control.

If objects are being loaded into local view unintentionally it makes local-view operations unpredictable.

Fully agree, that is why I was reluctant about that solution. You may want only a certain subselection of background images at a time or non at all, manually toggling them on or off could become a chore.

It may be that a general way to show a non-editable collection in local-view is useful in other cases too (similar to a temporary background scene).

That would indeed be a lot more useful, flexible and maintainable, without creating exceptions or corner cases.
Guides, helpers, originals meshes in retopology, elevations and architectural plans, among other "reference objects",are also often desirable in local views but kept unselectable in the viewport.

A generic way to specify objects to include include in local view would also solve this, perhaps a way to tag collections or objects for inclusion in local view could work.

  • Either a new visibility state in the restrictions toggle for each collection/object - Granular control per object/collection, no additional collections. The downside being that it is very crowded, we already have a lot that are hard to distinguish.
  • A specific collection and its sub collections (named Local View?) that would always be included - Different objects could be individually linked there (without removing them from their original collections). Granular control, individual sub collections visibility could be toggled on or off while in local view. Downside being the hardcoded(?) collection name and requiring one more collection to manage polluting your outliner.

References with cross-linking are hard to manage.
Turning reference's restrict viewport selection off to give it a ticket to isolation mode seems to be more simple.