Page MenuHome

Using texture projection with external image editor does not work
Closed, ResolvedPublic

Description

System Information
Operating system: Windows 10
Graphics card: GTX 1080

Blender Version
Broken: 2.8, 4d795cee4938
(example: 2.79b release)
(example: 2.80, edbf15d3c044, blender2.8, 2018-11-28, as found on the splash screen)
Worked: (optional) 2.79 stable

Short description of error
Using texture projection with external image editor does not work. Eg "texture paint > External > Quick edit" does not work.

Error message:
Operator bpy.ops.paint.image_from_view.poll() expected a view3d region
bpy.context.area.ui_type = 'INFO'
Operator bpy.ops.paint.image_from_view.poll() expected a view3d region

Exact steps for others to reproduce the error
Based on the default startup or an attached .blend file (as simple as possible).
1.create a cube

  1. select it and enable texture paint
  2. add texture slot (base color)
  3. go to and press button "properties > active tool > external > quick edit"
  4. error message is displayed even if I have choosen an external image editor in "edit > preferences >files > image editor"

Event Timeline

Philipp Oeser (lichtwerk) claimed this task.
Philipp Oeser (lichtwerk) triaged this task as Confirmed, Medium priority.

Confirmed, checking...

These operators used to be located in a 3DView.
Now these are still working when called from the 3DView (search menu), but fail from the Properties Editor and TopBar...

One solution would be to alter the poll() and exec() of these operators to find a 3DView [this could be the first 3DView it finds -- or possibly invoking them and using a "pipette" > thus using mouse coords to get the desired 3DView if there are multiple...]

Before implementing I would like to get opinions from @Campbell Barton (campbellbarton) / @William Reynish (billreynish) if this is the best way to go?

From an artists standpoint it would work just fine to

  1. Press "properties > active tool > external > quick edit"
  2. use pipette to choose which 3d view to pick up.

One solution would be to alter the poll() and exec() of these operators to find a 3DView [this could be the first 3DView it finds -- or possibly invoking them and using a "pipette" > thus using mouse coords to get the desired 3DView if there are multiple...]

alternative: remove those (VIEW3D_PT_tools_imagepaint_external) from the toolsettings and put them as popover in the 3DView header (next to View and Brush)?

Could be fine too I suppose, yes.

just checked: this was actually marked TODO:

# TODO, move to space_view3d.py
class VIEW3D_PT_tools_imagepaint_external(Panel, View3DPaintPanel):

will do then and commit in a bit...