Currently, Blender exposes only very few data types to users in node editors.
The main types are Value, Integer, Vector and Color.
Unfortunately, more types are required when we want to give users more possibilities.
New types will become very useful when they are usable in a more general purpose node tree and when we want to let users define custom attributes on e.g. mesh vertices.
Examples for types that might become necessary are vectors of various dimensions of floats and integers.
Furthermore, we really need a boolean type.
Besides these simple types, there are a couple more complex types, that might become important in the future.
Namely matrices of various sizes, text and different float and integer sizes.
When we have more types, giving them precise names using some naming convention is important.
Especially the current name Value might be too generic and should be replaced in my opinion.
To get some inspiration for how to name data types in 3D software, I checked the docs of some other applications.
The names below might not be 100% correct in all cases, but this is what I found in their docs.
Having this overview hopefully helps to decide what we want to have for Blender.
- Shading Nodes in Blender: Value, Integer, Vector, Color
- Animation Nodes: Float, Integer, Vector, Text, Matrix, Color, Boolean
- Houdini: int, float, vector2, vector, vector4, array, struct, matrix2, matrix3, matrix, string
- Softimage ICE: scalar, integer, rotation, location, 2D vector, 3D vector, color, Boolean, 3x3 matrix, color
- Unreal Blueprint: Boolean, Byte, Integer, Integer64, Float, Name, String, Text, Vector, Rotator, Transform
- Maya Bifrost: bool, signed/unsigned char, signed short int, double, string, char3, float3, double4, int3x3, ulong4x4, .... Grouped in the UI, similar types have the same color (e.g. 2d, 3d and 4d vectors; all matrix types; integers of all types; decimal values)
- Max Creation Graph: sInt32, Single, Boolean, String, Matrix, Quaternion, Vector3
Various aspects need to be considered when picking a naming scheme:
- Similar types should have similar names.
- Should data type names be familiar to technical users?
- What is a good compromise between precise names like int32 and simple names to be displayed in the UI like Integer?
- Should there be two versions of every type name for different kinds of users?
- Should type names contain spaces (can be important when their are used in file names or programming languages)?
I do not have a strong opinion on what the names should be exactly. I'd just like to get some feedback to decide which naming scheme to use.