Attribute spreadsheet for attribute debugging #85654

Closed
opened 2021-02-15 14:22:18 +01:00 by Dalai Felinto · 24 comments

We need a design for the editor/region where users will inspect their "node-tree" data.

  • Needs inspection, not necessarily editing, but it would be nice to edit it.
  • It could support non-node data as well. (e.g., to inspect a whole mesh).
  • It should be able to inspect not only the end of the node-tree, but a snapshot of it (a socket or link).
  • Instances are to be shown as instance- meaning, the user can use that editor to find which part of the tree is forcing the instances to be made real (e.g., by inspecting one socket at a time).

Note: There is already an experimental implementation, but it uses the outliner: D8637.


Design

It still needs a mockup.

This is a new editor that allows users to inspect the (geometry) data of the active object/node. It focus on showing one data set at a time, so there is no mixing of volume and mesh data, or even face and vertices data. It supports different filters, both to slice the spreadsheet table "horizontally" or "vertically".

Complete Specifications

Those are options based on the use case where we are looking only at geometry data. In the future this can also support multiple objects (e.g., to edit the power of different lights).

  • Spreadsheet Editor - pinning supported
  • Context Data - which data to show
  • Object - The active object fully evaluated (with all its modifiers).
  • Modifier - The active modifier of the active object.
  • Original object - The active object original data.
  • Node - The active node of the active modifier of the active object.
  • Domain
  • Mesh → Vertex
  • Mesh → Edge
  • Mesh → Face
  • Mesh → Corner
  • Volume Grid → Voxels
  • Point Cloud → Points
  • Hair → Strand
  • Vertical Filter
    • Attribute Names (bonus if it supports wildcards: MyAttri*)
    • Category (Built-in, User, Nodes)
    • Data-Type (Float, Vector) [not sure we need this]
  • Horizontal Filter
  • Selected mesh
  • Attribute value (for instance a range)
  • Geometry Tag (e.g., vertex groups, but also eventually more limited boolean only tags #85369
  • Decoration
  • Units
  • Color as floats
  • Vector as floats

Minimum Viable Product

What is the initial target to make this useful and master-ready:

  • New Editor - "Spreadsheet".
  • Read-only - no way to edit values.
  • Only working for the active object fully evaluated - no active node, no active modifier.
  • Only mesh data, only vertices
  • Row filter: "(edit mesh) selected"
  • Editor icon
We need a design for the editor/region where users will inspect their "node-tree" data. * Needs inspection, not necessarily editing, but it would be nice to edit it. * It could support non-node data as well. (e.g., to inspect a whole mesh). * It should be able to inspect not only the end of the node-tree, but a snapshot of it (a socket or link). * Instances are to be shown as instance- meaning, the user can use that editor to find which part of the tree is forcing the instances to be made real (e.g., by inspecting one socket at a time). Note: There is already an experimental implementation, but it uses the outliner: [D8637](https://archive.blender.org/developer/D8637). --- ### Design *It still needs a mockup.* This is a new editor that allows users to inspect the (geometry) data of the active object/node. It focus on showing one data set at a time, so there is no mixing of volume and mesh data, or even face and vertices data. It supports different filters, both to slice the spreadsheet table "horizontally" or "vertically". ### Complete Specifications Those are options based on the use case where we are looking only at geometry data. In the future this can also support multiple objects (e.g., to edit the power of different lights). * Spreadsheet Editor - pinning supported * Context Data - which data to show - Object - The active object fully evaluated (with all its modifiers). - Modifier - The active modifier of the active object. - Original object - The active object original data. - Node - The active node of the active modifier of the active object. * Domain - Mesh → Vertex - Mesh → Edge - Mesh → Face - Mesh → Corner - Volume Grid → Voxels - Point Cloud → Points - Hair → Strand * Vertical Filter - Attribute Names (bonus if it supports wildcards: `MyAttri*`) - Category (Built-in, User, Nodes) - Data-Type (Float, Vector) [not sure we need this] * Horizontal Filter - Selected mesh - Attribute value (for instance a range) - Geometry Tag (e.g., vertex groups, but also eventually more limited boolean only tags `#85369` * Decoration - Units - Color as floats - Vector as floats ### Minimum Viable Product What is the initial target to make this useful and master-ready: * New Editor - "Spreadsheet". * Read-only - no way to edit values. * Only working for the active object fully evaluated - no active node, no active modifier. * Only mesh data, only vertices * Row filter: "(edit mesh) selected" * Editor icon
Dalai Felinto self-assigned this 2021-02-15 14:22:18 +01:00
Author
Owner

Added subscriber: @dfelinto

Added subscriber: @dfelinto
Dalai Felinto removed their assignment 2021-02-15 14:50:26 +01:00
Author
Owner

spreadsheet.jpg

![spreadsheet.jpg](https://archive.blender.org/developer/F9814841/spreadsheet.jpg)

Added subscriber: @MiroHorvath

Added subscriber: @MiroHorvath
Author
Owner

Mockup for the MVP

mockup-v2.jpg

Clarifications

Note: seam is just an example of a boolean value. It is not supported by vertices.

mockup-v2-notes.jpg

### Mockup for the MVP ![mockup-v2.jpg](https://archive.blender.org/developer/F9828058/mockup-v2.jpg) ### Clarifications Note: `seam` is just an example of a boolean value. It is not supported by vertices. ![mockup-v2-notes.jpg](https://archive.blender.org/developer/F9828057/mockup-v2-notes.jpg)
Author
Owner

{F9832283, size=full}

{[F9832283](https://archive.blender.org/developer/F9832283/image.png), size=full}

Added subscriber: @someuser

Added subscriber: @someuser

in addition to those stats (colums/rows total/visible), i suggest to add attributes count total/visible

in addition to those stats (colums/rows total/visible), i suggest to add attributes count total/visible

Added subscriber: @SteffenD

Added subscriber: @SteffenD
Author
Owner
I started to move the docs here: https://wiki.blender.org/wiki/Source/Editors/Spreadsheet

Added subscriber: @ArtLaab

Added subscriber: @ArtLaab
Author
Owner
No description provided.
-
Member

Added subscriber: @HooglyBoogly

Added subscriber: @HooglyBoogly
Member

On the topic of the header row for vector attributes

This is the original prototype from Brecht. I don't have a strong feeling about the black background, but I think the way the attribute name isn't repeated for every axis is really nice

{F9858082 size=full}

Does anyone using the spreadsheet editor not understand the implicit XYZ order of vectors? I don't think we have to include it, and this provides the benefits:

  • Attributes with long names don't take up way too much space
  • There are fewer vertical lines, making the editor less noisy
  • The only lines are between attributes, making it easier to make the distinction further down in the sheet
  • We don't have the ugly capital X Y Z after the lowercase attribute name : P
**On the topic of the header row for vector attributes** This is the original prototype from Brecht. I don't have a strong feeling about the black background, but I think the way the attribute name isn't repeated for every axis is really nice {[F9858082](https://archive.blender.org/developer/F9858082/image.png) size=full} Does anyone using the spreadsheet editor not understand the implicit XYZ order of vectors? I don't think we have to include it, and this provides the benefits: - Attributes with long names don't take up way too much space - There are fewer vertical lines, making the editor less noisy - The only lines are between attributes, making it easier to make the distinction further down in the sheet - We don't have the ugly capital X Y Z after the lowercase attribute name : P
Member

Added subscriber: @CharlieJolly

Added subscriber: @CharlieJolly
Member

One thing I can't see on any of the designs is that I'd expect to be able to click a header to sort a column.

One thing I can't see on any of the designs is that I'd expect to be able to click a header to sort a column.

Added subscriber: @Erindale

Added subscriber: @Erindale

Another nice-to-have would be the ability to drag columns to reorder them horizontally. Use case might be if you've created some burner attributes during a calculation and really you just want to focus on your final attributes. Or checking between two calculations and you want to check two specific columns against each other.

I agree with the implicit XYZ too. I think showing "Position X" would lead some people to try calling it as an attribute rather than knowing to separate the Position vector.
Maybe keep all entries to 3 decimal places as well for floats.

Another nice-to-have would be the ability to drag columns to reorder them horizontally. Use case might be if you've created some burner attributes during a calculation and really you just want to focus on your final attributes. Or checking between two calculations and you want to check two specific columns against each other. I agree with the implicit XYZ too. I think showing "Position X" would lead some people to try calling it as an attribute rather than knowing to separate the Position vector. Maybe keep all entries to 3 decimal places as well for floats.
Contributor

Added subscriber: @KenzieMac130

Added subscriber: @KenzieMac130
Contributor

In #85654#1121949, @Erindale wrote:
I agree with the implicit XYZ too. I think showing "Position X" would lead some people to try calling it as an attribute rather than knowing to separate the Position vector.

If it becomes necessary to do so however you could do: "position.x" or "position[x]".

> In #85654#1121949, @Erindale wrote: > I agree with the implicit XYZ too. I think showing "Position X" would lead some people to try calling it as an attribute rather than knowing to separate the Position vector. If it becomes necessary to do so however you could do: "position.x" or "position[x]".
Member

Drag and drop would obviously be nice here, but you can probably also understand why it's not a priority for the initial version.

The sorting thing might not have been mentioned yet, but we will definitely have a triangle for sorting a column, just also not in the initial version.

Drag and drop would obviously be nice here, but you can probably also understand why it's not a priority for the initial version. The sorting thing might not have been mentioned yet, but we will definitely have a triangle for sorting a column, just also not in the initial version.

Added subscriber: @brecht

Added subscriber: @brecht

This task doesn't seem to have the latest mockups posted in #geometry-nodes-squad, but will give some feedback anyway:

  • Like @HooglyBoogly I prefer the header row and reduced vertical lines for vector attributes as in my original patch.
  • I think there should be more space after the index number. I find it difficult to read the first attribute value, it blends together with the index number too much. Center or right aligning the numbers would be an alternative solution.
  • Personally I think a header, two sidebars and a statusbar in this spreadsheet editor is too much. In general I think we're adding too many additional bars and overlays in the Blender UI.
This task doesn't seem to have the latest mockups posted in #geometry-nodes-squad, but will give some feedback anyway: * Like @HooglyBoogly I prefer the header row and reduced vertical lines for vector attributes as in my original patch. * I think there should be more space after the index number. I find it difficult to read the first attribute value, it blends together with the index number too much. Center or right aligning the numbers would be an alternative solution. * Personally I think a header, two sidebars and a statusbar in this spreadsheet editor is too much. In general I think we're adding too many additional bars and overlays in the Blender UI.
Author
Owner

Changed status from 'Needs Triage' to: 'Resolved'

Changed status from 'Needs Triage' to: 'Resolved'
Dalai Felinto self-assigned this 2021-03-08 12:34:07 +01:00
Member

@brecht It may make sense to post that comment in #86279. I do agree with you about your last point.

@brecht It may make sense to post that comment in #86279. I do agree with you about your last point.
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
10 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#85654
No description provided.