Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-03-17Geometry Nodes: Add initial version of mesh primitivesHans Goudey
This commit includes nodes to build the following primitives: - Cone - Cylinder - Circle - Cube - UV Sphere - Ico Sphere - Line - Plane/Grid In general the inputs are the same as the corresponding operators in the 3D view. **Line Primitive** The line primitive has two modes-- adding vertices between two end points, or adding vertices each at an offset from the start point. For the former mode, there is a choice between a vertex count and a distance between each point. **Plane Primitive** This commit includes the "Plane" and "Grid" primitives as one node. Generally primitives are named after the simpler form of the shape they create (i.e. "Cone" can make some more complex shapes). Also, generally you want to tweak the number of subdivisions anyway, so defaulting to plane is not an inconvenience. And generally having fewer redundant base primitives is better. **Future Improvements** A following patch proposes to improve the speed of the cylinder, cone, and sphere primitives: D10730. Additional possible future improvements would be adding subdivisions to the cube node and rings to the cone and cylinder nodes. Differential Revision: https://developer.blender.org/D10715
2021-03-16Grease Pencil: Add LineArt modifierYimingWu
This adds the LineArt grease pencil modifier. It takes objects or collections as input and generates various grease pencil lines from these objects with the help of the active scene camera. For example it can generate contour lines, intersection lines and crease lines to name a few. This is really useful as artists can then use 3D meshes to automatically generate grease pencil lines for characters, enviroments or other visualization purposes. These lines can then be baked and edited as regular grease pencil lines. Reviewed By: Sebastian Parborg, Antonio Vazquez, Matias Mendiola Differential Revision: http://developer.blender.org/D8758
2021-03-16LibOverride: Resync: Fix most remaining 'overrides in master collection' issues.Bastien Montagne
Problem is, when a collection is excluded from the scene, none of its objects are technically instantiated. This should not happen when *creating* an override, but can be fairly common during resync process. For now, use a lesser precise check in resync case, only relying on object usercount. This might lead to some objects being left without any collection in some rare weird case, but this cannot really be avoided currently.
2021-03-16LibOverride: Resync: Fix too many objects being rooted in master collection.Bastien Montagne
No need to instantiate systematically the root object if it is already instantiated in the scene... Issue reported by the studio.
2021-03-16LibOverride: tweak log messages, fix crash in log code.Bastien Montagne
One of the log call could use freed memory.
2021-03-16Fix: Cryptomatte load corrupt manifests.Jeroen Bakker
Seems like one of the example files on the cryptomatte github is malformed and blender crashes when loading that file. This change will try to load as much as possible from the manifest so it can still be used. This has also been reported to cryptomatte project.
2021-03-16Compositor: Redesign Cryptomatte node for better usabilityJeroen Bakker
In the current implementation, cryptomatte passes are connected to the node and elements are picked by using the eyedropper tool on a special pick channel. This design has two disadvantages - both connecting all passes individually and always having to switch to the picker channel are tedious. With the new design, the user selects the RenderLayer or Image from which the Cryptomatte layers are directly loaded (the type of pass is determined by an enum). This allows the node to automatically detect all relevant passes. Then, when using the eyedropper tool, the operator looks up the selected coordinates from the picked Image, Node backdrop or Clip and reads the picked object directly from the Renderlayer/Image, therefore allowing to pick in any context (e.g. by clicking on the Combined pass in the Image Viewer). The sampled color is looked up in the metadata and the actual name is stored in the cryptomatte node. This also allows to remove a hash by just removing the name from the matte id. Technically there is some loss of flexibility because the Cryptomatte pass inputs can no longer be connected to other nodes, but since any compositing done on them is likely to break the Cryptomatte system anyways, this isn't really a concern in practise. In the future, this would also allow to automatically translate values to names by looking up the value in the associated metadata of the input, or to get a better visualization of overlapping areas in the Pick output since we could blend colors now that the output doesn't have to contain the exact value. Idea + Original patch: Lucas Stockner Reviewed By: Brecht van Lommel Differential Revision: https://developer.blender.org/D3959
2021-03-15Fix T86262: Tracking backwards fails after gap in trackSergey Sharybin
The issue was caused by a prediction algorithm detecting tracking the wrong way. Solved by passing tracking direction explicitly, so that prediction will always happen correctly regardless of the state of the Tracks context.
2021-03-15Tracking: Mention TODO about DNA to Libmv API conversionSergey Sharybin
Current code works, but is heavily relying on matched enum definition in the Blender's DNA and Libmv's API, which is suboptimal and fragile.
2021-03-15Geometry Nodes: expose builtin crease attributeJacques Lucke
This exposes the `crease` attribute, that is used by the Subdivide Smooth node. It is also the first attribute on the edge domain. Domain interpolations for the edge domain have not been implemented yet. Ref T86397. Differential Revision: https://developer.blender.org/D10660
2021-03-15LibOverride: Add checks to address some degenerate blend file casesBastien Montagne
Attempt to work around some full-corruption cases created at the studio. Not clear how those were created, so not really fixing anything here, just detecting and 'solving' as best as possible some high corruption of local overrides. This is good to have in general anyway, might help prevent further corruption to happen too.
2021-03-15Spreadsheet: add status barJacques Lucke
This implements the status bar as footer region in the spreadsheet editor. It shows the total number of rows and columns as well as how many rows are actually visible (based on the filter). The implementation stores the stats in a runtime struct during drawing and the status bar reads from that struct. Ref T86142. Differential Revision: https://developer.blender.org/D10693
2021-03-15Cleanup: clang modernize-use-override errors.Jeroen Bakker
2021-03-15Writefile: only include recovery info in auto-save & quit.blendCampbell Barton
Previously all blend files included the path they were saved, causing files distributed publicly to include users local paths. This also included developers home directories for startup & userprefs defaults & app-templates bundled with Blender. Now recovery information is only written for auto-save & quit.blend since this is the only time they're intended to be used.
2021-03-15Cleanup: rename G_FILE_RECOVER -> G_FILE_RECOVER_READCampbell Barton
No functional changes, make room for a write equivalent.
2021-03-14Fix T86427 Exact solver does not apply target material.Howard Trickey
I had done some experiments to see what Fast boolean did for material mapping and thought it just used the same slot in the target as the slot in the source. The truth is more complicated: if the target material exists in any slot of the destination, we need to remap to whatever slot has the matching material. I fixed Exact Boolean to do this. Since the materials may be in the object, this means that BKE_mesh_boolean had to get another argument, the remapping arrays. I will note that the current behavior of Fast, and now Exact, is not ideal. Ideally, if the source material does not exist in the target, a new material slot should be created in the target and the source material copied there (and incrementing the material's reference count). Maybe a future project, but for now, I want the behavior of Exact to match that of Fast.
2021-03-14Nodes: Add distance float socket typeHans Goudey
This is necessary to make float sockets display a value with the unit system. `PROP_DISTANCE` will be used quite a lot by the mesh primitives geometry nodes patch. Differential Revision: https://developer.blender.org/D10711
2021-03-13Geometry Nodes: Add "normal" attribute for face normalsHans Goudey
This commit adds a `normal` attribute on the polygon domain. Since normal data is derived data purely based off of the location of each face's vertices, it is exposed as a read-only attribute. After rB80f7f1070f17, this attribute can be interpolated to the other domains. Since this attribute is a special case compared to the others, the implementation subclasses `BuiltinAttributeProvider`. It's possible there is a better way to abstract this. Something else might also become apparent if we add similar read-only attributes. See rB2966871a7a891bf36 for why this is preferred over the previous implementation. Differential Revision: https://developer.blender.org/D10677
2021-03-13Geometry Nodes: Revert current normal attribute implementationHans Goudey
After further thought, the implementation of the "normal" attribute from D10541 is not the best approach to expose this data, mainly because it blindly copied existing design rather than using the best method in the context of the generalized attribute system. In Blender, vertex normals are simply a cache of the average normals from the surrounding / connected faces. Because we have automatic interpolation between domains already, we don't need a special `vertex_normal` attribute for this case, we can just let the generalized interpolation do the hard work where necessary, simplifying the set of built-in attributes to only include the `normal` attribute from faces. The fact that vertex normals are just a cache also raised another issue, because the cache could be dirty, so mutex locks were necessary to calculate normals. That isn't necessarily a problem, but it's nice to avoid where possible. Another downside of the current attribute naming is that after the point distribute node there would be two normal attributes. This commit reverts the `vertex_normal` attribute so that it can be replaced by the implementation in D10677. Differential Revision: https://developer.blender.org/D10676
2021-03-13Geometry Nodes: Add Attribute Convert nodeCharlie Jolly
The Attribute Convert node provides functionality to change attributes between different domains and data types. Before it was impossible to write to a UV Map attribute with the attribute math nodes since they did not output a 2D vector type. This makes it possible to "convert into" a UV map attribute. The data type conversion uses the implicit conversions provided by `\nodes\intern\node_tree_multi_function.cc`. The `Auto` domain mode chooses the domain based on the following rules: 1. If the result attribute already exists, use that domain. 2. If the result attribute doesn't exist, use the source attribute domain. 3. Otherwise use the default domain (points). See {T85700} Differential Revision: https://developer.blender.org/D10624
2021-03-13Cleanup: add BKE_pbvh_vertex_iter_begin to clang-formatPablo Dobarro
Reviewed By: JacquesLucke Differential Revision: https://developer.blender.org/D10707
2021-03-12LibOverride Auto Resync: Add option to disable it in Experimental userpref.Bastien Montagne
Some older .blend files won't react nicely to auto-resync, they need to get manually fixed with `resync enforce` first.
2021-03-12Fix another crash in LibOverride resync code.Bastien Montagne
Another case where newly overridden ID (stored in `newid` of its linked reference) gets immediately deleted in old broken overrides. Re T86501.
2021-03-12LibOverride: Add a new operation to Outliner to enforce resync of hierarchies.Bastien Montagne
This is basically done by ignoring override operations from old override affecting ID pointer properties, when the new (destination) one is not NULL. Fix T86501: New object added to overridden collection doesn't show up in linking file on Resync. This is more of a work-around actually, since there is no real way to fix the issue in a fully automated and consistent way, it is caused by older blender files being saved with 'broken' overrides. WARNING: This cannot ensure that some purposedly edited/overridden ID pointer properties won't be lost in the process.
2021-03-12Fix first part of T86501: Crash during resync process.Bastien Montagne
Code would end up freeing some of the newly created overrides, which were assigned to the matching linked ID's `newid` pointer, accessed again further down the code. Note that this is not a normal expected situation, and it won't give a proper resync result anyway, but it might happen in some complicated corner cases, and also quite often when dealing with older .blend files.
2021-03-12IDRemap: Add option to also remap internal runtime ID pointers.Bastien Montagne
In some cases (advanced, low-level), we also want to remap pointers like `ID.newid` or `ID.orig_id`. Only known case currently is `id_delete`, to avoid leaving potential access to freed memory. See next commit and T86501.
2021-03-12LibQuery: Add an option to process internal runtime ID pointers.Bastien Montagne
In some cases (advanced, low-level code) we also want to process ID pointers like `ID.newid` or `ID.orig_id`.
2021-03-12Nodes: Add Attribute Remove NodeFabian Schempp
This patch adds a node, that removes an attribute if possible, otherwise it adds an error message. Differential Revision: https://developer.blender.org/D10697
2021-03-11Fix T86431: Keep memory location of the window manager on file loadCampbell Barton
Keep the pointer location from the initial window-manager between file load operations. This is needed as the Python API may hold references to keymaps for e.g. which are transferred to the newly loaded window manager, without their `PointerRNA.owner_id` fields being updated. Since there is only ever one window manager, keep the memory at the same location so the Python ID pointers stay valid. Reviewed By: mont29 Ref D10690
2021-03-11Cleanup: split file read and setup into separate stepsCampbell Barton
Currently file loading performs almost all reloading logic even in the case loading the file fails, causing the file to be in a state that isn't well defined: undo is cleared, timers are canceled & scripts are re-registered.
2021-03-11Cleanup: file loading/recover checksCampbell Barton
- Don't set G.relbase_valid until the file is loaded. - Remove unnecessary string pointer comparison. - Remove unused filename being passed to 'setup_app_data'.
2021-03-11LibOverride: auto-run resync process on file reading.Bastien Montagne
Part of T83811 & D10649.
2021-03-11LibOverride: Add second part of auto-resync code.Bastien Montagne
`BKE_lib_override_library_main_resync` uses `LIB_TAG_LIB_OVERRIDE_NEED_RESYNC` tags set by RNA override apply code, and perform detection for the remaining cases (those were new overrides need to be created for data that was not present before in the library). And then it actually resync all needed local overrides. Part of T83811 & D10649.
2021-03-11LibOverride: First stage of detection of 'need resync'.Bastien Montagne
We can fairly easily detect some resync-needed cases when applying the overrides operations on a Pointer RNA property. This should cover all cases where an existing override's ID pointer is changed in its linked data. We still have to add code to detect when a not-yet-overridden linked ID needs to become overridden (because its relations to other data-blocks changed in a way that requires it). Part of T83811 & D10649.
2021-03-11LibOverride: Do not delete no-more-used overrides during resync if they are ↵Bastien Montagne
user-edited. Ultimately those will be listed with a special icon in the upcomming Outliner overrides view. Part of T83811 & D10649.
2021-03-11LibOverride: Add a utils to check if override has been user-edited.Bastien Montagne
Part of T83811 & D10649.
2021-03-10Cryptomatte tests: Fix layer_from_manifest failure.Ankit Meel
Error in rBc6a831cfbc9b24fa8b1ed4852178c139e6ed79a6
2021-03-10Geometry Nodes: move geometry component type enum to CJacques Lucke
This allows us to use it in rna for the spreadsheet editor.
2021-03-10Spreadsheet: new spreadsheet editorJacques Lucke
This implements the MVP for the new spreadsheet editor (T85879). The functionality is still very limited, but it proved to be useful already. A more complete picture of where we want to go with the new editor can be found in T86279. Supported features: * Show point attributes of evaluated meshes (no original data, no other domains, no other geometry types, yet). Since only meshes are supported right now, the output of the Point Distribute is not shown, because it is a point cloud. * Only show data for selected vertices when the mesh is in edit mode. Different parts of Blender keep track of selection state and original-indices with varying degrees of success. Therefore, when the selected-only filter is used, the result might be a bit confusing when using some modifiers or nodes. This will be improved in the future. * All data is readonly. Since only evaluated data is displayed currently, it has to be readonly. However, this is not an inherent limitation of the spreadsheet editor. In the future editable data will be displayed as well. Some boilerplate code for the new editor has been committed before in rB9cb5f0a2282a7a84f7f8636b43a32bdc04b51cd5. It would be good to let the spreadsheet editor mature for a couple of weeks as part of the geometry nodes project. Then other modules are invited to show their own data in the new editor! Differential Revision: https://developer.blender.org/D10566
2021-03-09Fix T86422: Expand crashing with EEVEE enabledPablo Dobarro
Using EEVEE (as well as some other actions like saving the file or tweaking mesh parameters) can cause a PBVH rebuild. The different sculpt tools can store PBVH nodes or other related data in their caches, so this data becomes invalid if the PBVH rebuilds during evaluation. This ensures that the PBVH does not rebuild while the cache of Expand is being used, like it already happens for brushes and filters. Reviewed By: JacquesLucke Maniphest Tasks: T86422 Differential Revision: https://developer.blender.org/D10675
2021-03-09Geometry Nodes: Add Attribute interpolation for polygon domainsHans Goudey
This commit adds interpolation to and from attribute on the polygon domain. Interpolation is done automatically when a node uses attributes on two different domains. The following are the new interpolations and corresponding simple test cases: - **Point to Polygon**: Painting the shade smooth attribute in weight paint mode - **Polygon to Point**: Moving points along a normal based on the material index - **Polygon to Corner**: Scaling a UV map with the material index before sampling a texture {F9881516} This is also necessary for an improved implementation of the `normal` attribute. Differential Revision: https://developer.blender.org/D10393
2021-03-09Cleanup: use raw strings.Jeroen Bakker
2021-03-09Geometry Nodes: Expose "shade smooth" as an attributeHans Goudey
This patch exposes the "Shade Smooth" value as a boolean attribute. This setting is exposed as a check-box in the mesh data properties, but the value is actually stored for every face, allowing some faces to be shaded smooth with a simple per-face control. One bonus, this allows at least a workaround to the lack of control of whether meshes created by nodes are shaded smooth or not: just use an attribute fill node. Differential Revision: https://developer.blender.org/D10538
2021-03-09Cleanup: add resource manager for cryptomatte session.Jeroen Bakker
Auto frees cryptomatte session when it the pointer is collected from the stack. Reviewed By: Jacques Lucke Differential Revision: https://developer.blender.org/D10667
2021-03-09Cleanup: Correct area writing function nameJulian Eisel
This function writes areas, not regions. The old name read as if it was regions.
2021-03-09Fix the session UUID being set for temporary blend file dataCampbell Barton
Triggered by temporarily appending library linked data from Python.
2021-03-09Cleanup: Complete earlier geometry component refactorHans Goudey
This was meant to be part of rB9ce950daabbf, but the change dropped from the set at some point in the process of updating and committing. Sorry for the noise.
2021-03-08Geometry Nodes: Rename subdivision nodesHans Goudey
This makes the following changes to the name of the two geometry nodes subvision nodes: - `Subdivision Surface` -> `Subdivide Smooth` - `Subdivision Surface Simple` -> `Subdivide` Most of the benefit is that the names are shorter, but it also better mirrors the naming of operations in edit mode, and phrases the names more like actions. This was discussed with the geometry nodes team.
2021-03-08Cleanup: Move geometry component implementations to separate filesHans Goudey
Currently the implementations specific to each geometry type are in the same file. This makes it difficult to tell which code is generic for all component types and which is specific to a certain type. The two files, `attribute_access.cc`, and `geometry_set.cc` are also getting quite long. This commit splits up the implementation for every geometry component, and adds an internal header file for the common parts of the attribute access code. This was discussed with Jacques Lucke.
2021-03-08Cleanup: Move LibOverride debug prints to CLOG.Bastien Montagne