Page MenuHome

Add tooltips to the geomerty node add menu
ClosedPublic

Authored by Arye Ramaty (BelgaratTheGrey) on Jul 10 2022, 2:03 PM.

Details

Summary

This patch adds tooltips to the geometry node add-menu entry:

deference from the manual

In general, the tooltips describe what the node is doing, what it may be used for, and sometimes an example.
I tried to copy-paste from the manual as much as I could, but I still made some changes:

  • I changed the description to use imperative conjunction.
  • I made some changes for consistency (changed some of the descriptions of the nodes to start with Generates instead of Computes or Calculates etc.)
  • I shortened some descriptions.
  • I made some more significant changes when I deemed necessary
Related Patches

[D15309]

Diff Detail

Repository
rB Blender
Branch
geo_tooltips_for_add_menue (branched from master)
Build Status
Buildable 22927
Build 22927: arc lint + arc unit

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes
source/blender/nodes/NOD_static_types.h
326

Output a single material

  • The usage hint doesn't add too much IMO, there isn't much to explain for such a simple input node IMO
330

Calculate the surface area of each face in a mesh

  • Makes it clearer that it's not the total surface area
331

Retrieve whether all triangles in a face are on the same plane-- in other words, whether have the same normal

  • Simplify wording
  • I think a -- is more correct than a comma here
333

Retrieve information about separate contiguous regions of a mesh

  • Trying to avoid having "separate" and "connected" right next to each other which seems confusing
335

Retrieve a unit length vector indicating the direction pointing away from the geometry at each element

  • Has to work for curves and meshes
  • Normals are potentially stored on all four domains
336

Retrieve a vector indicating the location of each element

  • "Evaluated" isn't right
  • Use a word besides "position" in the description, just to be consistent about trying not to just repeat the node name in the description
337

Retrieve the radius at each point on curve or point cloud geometry

  • "evaluated" isn't meaningful here
  • "used to define specific properties" isn't useful enough to include
339

Retrieve whether each face is marked for smooth shading

  • Avoid "retrieve true" which sounds like a function doc-string
  • Simplify wording
340

Retrieve whether each spline endpoint connects to the beginning

  • Avoid "return true" like above
  • Avoid using the name of the node in its description
341

Retrieve the total length of each spline, as a distance or as a number of points

  • Remove superfluous comma
342

Retrieve the number of evaluated points that will be generated for every control point on curves

  • "The spline" has no meaning here, since "the" doesn't refer to anything specific
  • "curve" is unnecessary earlier in the sentence, that information is obvious here IMO
343

Retrieve the direction that the curve is traveling at each control point

  • "Depending on the direction" seemed redundant with the first part of the description to me
  • Add "traveling", since I think it's a bit more specific than "points"
346

Retrieve true if the nodes are being evaluated for the viewport rather than the final render

  • Combine the second sentence into a "rather" clause, which makes the whole thing shorter and simpler
348

Provide a selection of faces that use the specified material

  • "of faces" is simpler and clearer than "for meshes"
349

Merge vertices or points within a given distance

  • "by distance" is the name of the node, but it didn't really make sense in a sentence
350

Cut, subtract, or join multiple mesh inputs

  • "mesh" rather than "geometry" to be more specific
  • "multiple" is more correct than "two"
357

Generate vertices in a line and connect them with edges

  • Verb conjugation
358

Generate a spherical mesh with quads, except for triangles at the top and bottom

  • Remove some extra words
360

Generate a point cloud from a mesh's vertices

  • "Vertices" separates it from some other nodes
361

Create a fog volume with the shape of the input mesh's surface

362

Retrieve information from an object

  • Only one object
363

Generate a point cloud with positions and radii defined by fields

  • Maybe the extra information is helpful
364

Generate a mesh vertex for each point cloud point

  • Add "mesh" for some more context
367

Cast rays from the context geometry onto a target geometry, and retrieve information from each hit point

  • Removing "various" makes it read easier IMO
368

Delete an attribute with a specified name from a geometry. Typically used to optimize performance

  • Works a bit better with the verb-like wording for the rest of the descriptions that don't make the node the subject
372

Change the direction of the curve by swapping each spline's start and end data

  • Makes it clear that it applies to all data
374

Retrieve data from a point on a curve at a certain distance from its start

  • Just removing a few extra words
380

Set the radius of the curve at each control point

  • No need to repeat "curve"
382

Set the id attribute on the input geometry, mainly used internally for randomizing

  • unnecessary capital
383

Set the material index for each selected geometry element

  • A geometry has more than one material index
384

Assign a material to geometry elements

  • Before the node is added, there is no "the material" or "the selection', it's just hypothetical
  • "Assign" is less misleading IMO, since the material is assigned indirectly through indices (at least for meshes)
385

Set display size of point cloud points

  • The radius is used in renders as well as the viewport, and even in other places in the future
  • I'm not sure it's necessary to mention the selection since almost all nodes have selection
387

Control the smoothness of mesh normals around each face by changing the \"shade smooth\" attribute

  • "Shade Smooth" -> "shade_smooth"
  • Use just one sentence
  • Mention that it's the normals that are affected
  • It's behavior of other things too, not just how they look in the viewport or renders
388

Control whether each spline loops back on itself by changing the \"cyclic\" attribute

  • Similar changes to above
389

Control how many evaluated points should be generated on every curve segment

  • "Set" -> "Control" just seems a bit simpler, plus it's a different word
  • Technically it's every segment, rather than every control point
390

Duplicate mesh edges and break connections with the surrounding faces

  • Simpler wording, avoid repeating "split"
393

Generate a paragraph of text with a specific font, using curve instances to store each character

  • Add helpful information
  • Specifically mention "font", since it's important to how the shape of the result curves is chosen
394

Dividing each curve segment into a specified number of pieces

  • Phrase it as if it was changing existing curves rather than generating new ones, which is how it works on the user level
  • Explain what we're dividing the segments into
395

Divide mesh faces into smaller ones without changing the shape or volume, using linear interpolation to place the new vertices

  • This is just a bit more specific and solves the "faces / number" unit problem
396

Divide mesh faces to form a smooth surface, using the Catmull-Clark subdivision method

  • Similar to above
  • Mentioning the subdivision level isn't fundamental to describing what the node does IMO, it's just one of the inputs
397

Switch between two inputs

  • Grammar, "input" should be plural
399

Translate, rotate or scale the geometry

  • Just to be a bit more specific
402

Shorten curves by removing portions at the start or end

  • I think just mentioning "curves" is fine here, it's clear enough
  • "Portions" instead of "sections" gives a small hint to how the portion is described (e.g. a portion of the total length)
404

Generate a dense volume with a density field that controls the density at each grid voxel based on its position

  • Hint that the position node can be used in the input field
  • Avoid repeating "volume cube"
  • Use "controls" or "sets" like above
405

'surfac' -> \"surface\"\

406

Scale islands of a UV map and move them so they fill the UV space as much as possible

407

Generate a UV map split based on seam edges

  • Not sure, but something like that should work
407–408

Syntax error here

This revision now requires changes to proceed.Jul 20 2022, 12:18 AM
Arye Ramaty (BelgaratTheGrey) edited the summary of this revision. (Show Details)
  • fix review and rebase on master
Arye Ramaty (BelgaratTheGrey) marked 79 inline comments as done.Jul 24 2022, 4:41 PM

I agree with 99 percent of your's comment so I simply copy-pasted all of them.
I will add some inline comment on specific tooltips which still needs some refining IMO.

source/blender/nodes/NOD_static_types.h
285

I think many people are struggling with this node, an example such as "old position on displaced geometry" could help - even though it clutters the tooltip.

302

I am not sure about this tooltip, my English is okay (although I am by no means a native), and I am not sure I would understand this tooltip without knowing the node functionality beforehand. IMO sometimes it is better to resort to the more simple/common/obvious terms.

306

I usually use "Generate" instead of "Make".

317

Sample values from an image texture

  • I don't think there is a need to mention pixels.
343

The term "Traveling" seems a little bit strange in this context, but I don't know, does it common to use it as a substitute for Tangent? Maybe using something like "The curve's flow" would sound better.

346

Retrieve whether the nodes are being evaluated for the viewport rather than the final render

  • As you said, true sounds like function doc-string
361

Create a volume with the shape of the input mesh's surface

  • Is there a reason to mention fog?
363

I don't know, why is it useful?

407

I think "island" works better than "split".

source/blender/nodes/NOD_static_types.h
285

Yeah, this is probably a good node for a brief example like that. What about something like this?

Store the result of a field on a geometry and output the data as a node socket. Allows remembering or interpolating data as the geometry changes, such as positions before deformation

302

Hmm, fair enough. How about something like Convert curves into a mesh, optionally with a custom shape defined by profile curves?

306

Yeah, good call

343

How about even simpler? Retrieve the direction of curves at each control point

346

Yeah, good catch

361

Yes, as opposed to an SDF volume-- we're planning on adding more nodes for those in the future

363

I think it might not be clear that you're responsible for positioning all of the points yourself otherwise

407

Yeah, it might! And it would be consistent with the pack islands description too

Arye Ramaty (BelgaratTheGrey) marked 7 inline comments as done.Jul 24 2022, 10:29 PM

I have three last comments, but I am not so sure about them, feel free to commit the patch if you think they are unnecessary.

source/blender/nodes/NOD_static_types.h
302

That's fine, maybe sweeping the order would be better:

Convert curves into a mesh, optionally with a custom profile shape defined by curves

343

Sound good, but shouldn't it be "Spline" instead of "curves" I mean, curves don't really have a direction.
Retrieve the direction of the spline at each control point

363

Fair enough, but if so, should we add the same clarification to Duplicate Element as well?

source/blender/nodes/NOD_static_types.h
302

That sounds great!

343

The distinction between splines and curves is really vague, I think each has a direction just as much as the other. We've been moving towards "Curves" naming recently because of that meaningless difference, I'd prefer to stick to that. It matches up with the node name too anyway.

363

I guess we could add "at the same location" to the end?

source/blender/nodes/NOD_static_types.h
363

Do you mean, keeping the "point node" the same and adding "at the same location" just for the "duplicate element"?
Point: Generate a point cloud with positions and radii defined by fields
Duplicate: Generate an arbitrary number of copies at the same location for each selected input element
Well, I am actually okay with keeping the duplicate node as is, what do you think?

source/blender/nodes/NOD_static_types.h
363

I'm okay with keeping it the same too. I tried rearranging the duplicate tooltip a bit but didn't find something better

This revision was not accepted when it landed; it landed in state Needs Review.Jul 25 2022, 4:05 PM
This revision was automatically updated to reflect the committed changes.

Forgot to accept it, but yeah, agreed! I just fixed 3 or so tiny things when committing. Thanks for taking the initiative with this!