Matrix operations and sockets for geometry nodes #105408

Closed
Lukas Tönne wants to merge 37 commits from LukasTonne/blender:nodes-matrix-types into main

When changing the target branch, be careful to rebase the branch in your fork to match. See documentation.

37 Commits

Author SHA1 Message Date
Lukas Tönne dd55a1f93d Merge remote-tracking branch 'origin/main' into nodes-matrix-types 2023-03-06 11:59:14 +01:00
Lukas Tönne 997dbf8cc5 Fixed outdated matrix input menu entry. 2023-03-03 16:57:31 +01:00
Lukas Tönne 4f74ca2b79 Renamed matrix socket type as well by removing the 4x4 suffix. 2023-03-03 16:41:01 +01:00
Lukas Tönne 95875b8cc7 Added a transform node for applying matrices to vectors. 2023-03-03 16:06:01 +01:00
Lukas Tönne ddad2b8337 Implemented remaining matrix math operations. 2023-03-03 14:38:59 +01:00
Lukas Tönne 4580828dd9 Fix indexing errors in the matrix decompose node. 2023-03-03 14:16:27 +01:00
Lukas Tönne 79ff2f88e2 Renamed matrix nodes without the 4x4 suffix.
Matrix nodes should be generic enough to work with all kinds
of matrices. Right now that will only be 4x4 matrices but the
nodes don't need that in their names.
2023-03-03 14:14:56 +01:00
Lukas Tönne bfde6c8a9c Removed the 2x2 and 3x3 matrix types.
Having different matrix types is likely to be confusing for users
and complicates node trees by requiring conversions.
For now there will be only a the 4x4 matrix type, which can encode
3x3 and 2x2 matrices as well at the cost of some performance.

Eventually a generic socket type could make this easier and allow
the introduction of additional matrix types without too much
inconvenience for users.
2023-03-03 12:39:00 +01:00
Lukas Tönne cdd86e85f6 Moved the matrix nodes menu into the Utilities category. 2023-03-03 11:43:04 +01:00
Lukas Tönne 49b22cc187 Fix crash when socket UI creates an empty layout. 2023-03-03 11:33:47 +01:00
Lukas Tönne ad36523191 Merge branch 'main' into nodes-matrix-types 2023-03-03 10:48:40 +01:00
Lukas Tönne 6d107b9f5a Merge branch 'main' into nodes-matrix-types 2023-03-03 10:42:16 +01:00
Lukas Tönne 8ee84bc82d Added a few more nodes for affine (de)composition. 2022-12-22 08:20:01 +01:00
Lukas Tönne ddb172eef3 Fixed incorrect socket lookup in a few places. 2022-12-19 17:28:13 +01:00
Lukas Tönne b2825c4176 Fixed socket lookup functions in CombineMatrix4x4 node. 2022-12-19 16:06:52 +01:00
Lukas Tönne ccaeb31e46 Use the large size preset for matrix input nodes to accomodate all the columns. 2022-12-19 16:06:36 +01:00
Lukas Tönne 1b90ba3d04 Use correct storage callbacks for matrix input nodes. 2022-12-19 16:06:06 +01:00
Lukas Tönne 95f1b7c904 Fix incorrect output socket indices in math nodes. 2022-12-19 16:05:40 +01:00
Lukas Tönne edbd778923 Merge branch 'master' into nodes-matrix-types 2022-12-16 14:57:11 +00:00
Lukas Tönne 83e4fef23c Revert "Matrix input mode for the instance-on-points node."
This reverts commit eea512fbcc.
Should be decided separately if a matrix input is better suited for the
instance-on-points node or other existing nodes.
2022-12-16 14:48:55 +00:00
Lukas Tönne 9c01a58ceb Added nodes for both 3x3 and 4x4 matrix variants. 2022-12-16 14:48:19 +00:00
Lukas Tönne eea512fbcc Matrix input mode for the instance-on-points node. 2022-12-11 19:44:17 +00:00
Lukas Tönne 147a3e635e Fix vec3 input of the matrix input node. 2022-12-10 21:07:31 +00:00
Lukas Tönne b5f6919a80 Node menu entries for matrix nodes. 2022-12-10 18:59:07 +00:00
Lukas Tönne 6b9e700ed1 Custom data layer types for float matrix types. 2022-12-10 18:19:52 +00:00
Lukas Tönne 88cbc107f1 Include runtime C++ functions for bNode. 2022-12-10 15:28:45 +00:00
Lukas Tönne eac7726df3 Added missing implementation of socket declaration builders. 2022-12-10 15:27:59 +00:00
Lukas Tönne 9cd8342506 Fixed callback signature for matrix multifunctions. 2022-12-10 15:07:11 +00:00
Lukas Tönne f773604aae Declare field CppTypes for float3x3 and float4x4. 2022-12-10 15:06:30 +00:00
Lukas Tönne 6156c1f8e1 Hash function for the float3x3 type. 2022-12-10 15:06:08 +00:00
Lukas Tönne 8394e73a2f Register CppType for float3x3. 2022-12-10 14:26:56 +00:00
Lukas Tönne bfa19daccc Stub implementation of the matrix4x4 math node. 2022-12-10 12:45:44 +00:00
Lukas Tönne 726ad272aa Implementation of the input, combine and separate nodes for matrix_4x4. 2022-12-10 00:00:55 +00:00
Lukas Tönne 8bfd84a3c9 Finished majority of boilerplate code for matrix socket types. 2022-12-08 22:12:20 +00:00
Lukas Tönne 9a55a9bdd5 Plumbing for the SOCK_MATRIX types. 2022-12-06 09:21:14 +00:00
Lukas Tönne 87004bd122 Blenkernel socket identifiers. 2022-12-05 18:11:17 +00:00
Lukas Tönne a3b7f972d0 Some initial files for matrix nodes. 2022-12-05 09:41:04 +00:00