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

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
325

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
329

Calculate the surface area of each face in a mesh

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

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
332

Retrieve information about separate contiguous regions of a mesh

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

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
335

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
336

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
338

Retrieve whether each face is marked for smooth shading

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

Retrieve whether each spline endpoint connects to the beginning

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

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

  • Remove superfluous comma
341

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
342

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"
345

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
347

Provide a selection of faces that use the specified material

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

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
349

Cut, subtract, or join multiple mesh inputs

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

Generate vertices in a line and connect them with edges

  • Verb conjugation
357

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

  • Remove some extra words
359

Generate a point cloud from a mesh's vertices

  • "Vertices" separates it from some other nodes
360

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

361

Retrieve information from an object

  • Only one object
362

Generate a point cloud with positions and radii defined by fields

  • Maybe the extra information is helpful
363

Generate a mesh vertex for each point cloud point

  • Add "mesh" for some more context
366

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

  • Removing "various" makes it read easier IMO
367

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
371

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

  • Makes it clear that it applies to all data
373

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

  • Just removing a few extra words
379

Set the radius of the curve at each control point

  • No need to repeat "curve"
381

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

  • unnecessary capital
382

Set the material index for each selected geometry element

  • A geometry has more than one material index
383

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)
384

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
386

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
387

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

  • Similar changes to above
388

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
389

Duplicate mesh edges and break connections with the surrounding faces

  • Simpler wording, avoid repeating "split"
392

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
393

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
394

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
395

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
396

Switch between two inputs

  • Grammar, "input" should be plural
398

Translate, rotate or scale the geometry

  • Just to be a bit more specific
401

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)
403

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
404

'surfac' -> \"surface\"\

405

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

406

Generate a UV map split based on seam edges

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

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
284

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.

301

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.

305

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

316

Sample values from an image texture

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

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.

345

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

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

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

  • Is there a reason to mention fog?
362

I don't know, why is it useful?

406

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

source/blender/nodes/NOD_static_types.h
284

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

301

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

305

Yeah, good call

342

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

345

Yeah, good catch

360

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

362

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

406

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
301

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

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

342

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

362

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

source/blender/nodes/NOD_static_types.h
301

That sounds great!

342

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.

362

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

source/blender/nodes/NOD_static_types.h
362

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
362

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!