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

Improve Missing Texture Error Handling #173

Closed
AlexeyAdamitsky opened this issue May 31, 2022 · 5 comments
Closed

Improve Missing Texture Error Handling #173

AlexeyAdamitsky opened this issue May 31, 2022 · 5 comments
Assignees
Labels
feature request New feature or request

Comments

@AlexeyAdamitsky
Copy link
Contributor

The issue is more about UX. Currently, there is no easy way knowing why Arnold won't run if a texture is missing. The renderer just won't run. This definitely can cause frustration and false bug reports.

Currently the only way, as far as I know, to know why render won't run because of missing textures is to use console to look for the error:
image

I suggest we use Blender's usual way of handling messages and notify the user with error message in the status bar: “Missing textures. Arnold render cancelled.”

@osiriswrecks
Copy link
Contributor

osiriswrecks commented Jun 1, 2022

Being able to write status updates as the render happens is something on our radar. When it gets in, we can probably implement something like this.

For now, I've moved the "ignore missing texture" flag to the AddonPreferences, where it's enabled by default. This way, renders will finish but will show the missing texture color (magenta by default) without erroring out, which at least is similar to how Blender handles it. Let me know what you think of this approach. fff3c9b

To further clean up the UI, we can remove the "missing texture color" parameter from the node altogether and just force it to magenta globally so it can't be changed and cause confusion. The only downside is it's taking control away from the user, which might be an issue. But then again, Blender doesn't let you customize this value either so maybe people won't care because they're used to the "Blender way".

image

@osiriswrecks osiriswrecks added feature request New feature or request needs qa Ready for testing labels Jun 1, 2022
@osiriswrecks osiriswrecks added this to To do in Core Features via automation Jun 1, 2022
@osiriswrecks osiriswrecks moved this from To do to In progress in Core Features Jun 1, 2022
@AlexeyAdamitsky
Copy link
Contributor Author

Yes, this is a good idea. I have similar ideas but I want to suggest something a little bit different. I'll offer my suggestion next week regarding this issue.

@AlexeyAdamitsky
Copy link
Contributor Author

I was thinking about this design and what issues it solves since I couldn’t find a straight forward answer in the documentation.

If we use it by design with Ignore Missing Texture Errors turned off then whenever a texture is missing the render will stop.

Since Arnold historically was predominantly a VFX/film renderer I believe this was a crucial setting you’d always want to have since once you prepare a scene and send it to render if anything is missing you would want it it to stop immediately and not waste any time and resources rendering anything. Then the person responsible for this would re-check everything for missing textures and restart the renderer. This is a use case where it is most likely using the server rendering and the user is probably have minimal if no UI controls so we’d want to stop the renderer if anything is missing.

Currently, I am having a hard time imaging anyone would use BtoA for VFX/film production level of rendering.

Also in Blender we have some control over missing textures with UI. Albeit it’s somewhat cumbersome it works and with some specialized addons it works even better.

I also don’t fully understand the need for granular control over missing textures with per texture settings. It’s good that it’s there I suppose but I can’t imagine the use case.

So here are the possible solution to this:

  1. Leave as is. I’d argue it’s the worst solution since it bloats the texture node with two settings which are rarely if every useful and will break the render and might confuse the user. Especially since we don’t have a proper errors handling system yet.
  2. Move the settings at material level. I was thinking it might be more useful to move both Ignore Missing Texture Errors and Missing Texture Color at material level. It’s still pretty granular control and might make it still confusing to search for materials that have missing textures. Still it’s a bit easier to change settings for the whole material rather then per texture node. But I’d say it’s far from ideal.
  3. Move the settings at scene level. I believe this would the the most useful solution for several reasons. We keep this setting at scene level providing access to easily change the setting per scene. It could be useful for users to debug visibly what exactly textures are missing and tick off Ignore Missing Texture Errors if it needs to be sent to the server render. We also need to remove Missing Texture Color and make it global so user have global per scene control to change the texture color. While magenta is a great default choice there can be some scenes where it might need other color like lime green to make missing textures more visible for debugging.
    I suggest we move these settings at Textures sub-panel. It makes sense for me since it’ll follow the other addons implementations and it would be the expected place to look for these settings. Here is the mockup:
    image
    P.S. I know the Textures panel might seem empty now and like an over kill for one setting but there are more general settings we will need to put here such as textures cache size control, textures tiling control and mipmap textures settings.
  4. Move the settings at global addon preferences level. This is a good solution too but it’s probably too extreme to tuck away these settings at addon level. It’s more work to get there and change the settings. It’s also more global than a scene level.

I’d suggest we go with solution number 3. If there is a strong demand in future from users to get back these settings at texture node level we can do that and make scene level work as an override if enabled.

@osiriswrecks
Copy link
Contributor

I think you're onto something with solution 3. This can be rolled into some additional ignore flags that Arnold provides in a "error handling" kind of panel. See the ignore and error flags in AiUniverseOptions

https://docs.arnoldrenderer.com/display/A5NodeRef/options#options-ignore_textures
https://docs.arnoldrenderer.com/display/A5NodeRef/options#options-error_color_bad_texture

@osiriswrecks osiriswrecks self-assigned this Jun 12, 2022
@osiriswrecks osiriswrecks removed the needs qa Ready for testing label Jun 12, 2022
@osiriswrecks
Copy link
Contributor

Opted to keep the missing texture settings global. This may change in the future, but closing this ticket for now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature request New feature or request
Projects
No open projects
Status: Done
Core Features
In progress
Development

No branches or pull requests

2 participants