Commit graph

3839 commits

Author SHA1 Message Date
Candice Bentéjac
c3e8b8833f [core] checkTemplateVersions: Ensure nodes are not loaded several times
By performing a `initNodes()` every single time `checkTemplateVersions`
was called without ever unregistering the nodes, warnings about nodes
being already registered were raised when for example calling
`checkAllTemplatesVersions`.
2025-03-18 14:04:06 +00:00
Candice Bentéjac
cfa33b6442 [core] Add a test.py file that contains sanity methods used for validation
For now, it contains methods allowing to check whether a template provided
as an argument is valid (i.e. has no compatibility issue).

It performs a check that's very similar to what `test_templatesVersions`
was doing, but it allows this check to be performed from outside of
Meshroom.
2025-03-17 17:05:56 +01:00
Candice Bentéjac
f5b79f6d39 [core] Update initPipelines following removal of the "pipelines" folder
Since the "pipelines" folder does not exist anymore in Meshroom, there
is no use to try and look for any file in it. Instead, we now only look
for the paths that have been provided with the
`MESHROOM_PIPELINE_TEMPLATES_PATH` environment variable.
2025-03-17 16:47:12 +01:00
Candice Bentéjac
cf29a6db74 [nodes] Remove the "aliceVision" and "blender" folders
The nodes contained in these folders, except for the `Publish` node,
are all moved to AliceVision's repository.
2025-03-17 12:37:30 +01:00
Candice Bentéjac
95ebf83c18 [nodes] Add a "general" folder and move the Publish node in it
The `Publish` node will remain the only default node that comes with
Meshroom.
2025-03-17 12:36:05 +01:00
Candice Bentéjac
15414c1984 Remove all default templates from Meshroom
These templates are moved to AliceVision's repository.
2025-03-17 12:29:37 +01:00
Fabien Castan
09720f6be1
Merge pull request #2696 from alicevision/dev/surveyInjecting
Node to inject survey points in the SFM
2025-03-17 10:53:40 +01:00
Candice Bentéjac
df7e6f8845 [core] Node: Status should be NONE when there is no chunk
Prior to this commit, nodes with a varying number of chunks were initialized with an empty list of chunks (as expected), but with a global status that was set to `SUCCESS` instead of `NONE`. This caused issue on the graphical side as `SUCCESS` is interpreted as the status for nodes that have been successfully computed.
2025-03-12 10:40:46 +00:00
Fabien Servant
d8f3a25b67 Injecting survey points 2025-03-11 11:40:35 +01:00
Candice Bentéjac
091dbddcd3 [nodes] Replace desc.Node.internalFolder with {nodeCacheFolder}
For nodes that were added right before the merge of #2629, the replacement
still needed to be done.
2025-03-10 11:29:28 +00:00
Candice Bentéjac
21afd053f8
Merge pull request #2629 from alicevision/dev/relativePaths
Add relative paths to nodes as variables
2025-03-10 10:48:09 +00:00
Candice Bentéjac
ef33aabe5e [nodes] ExportImages: Fix category and namingMode parameter
Change the category to "Export" instead of "Utils" and align the
default value of the `namingMode` parameter with the one used in the
AliceVision's executable. Moreover, the value "viewId" was incorrect,
as "viewid" if the expected one.
2025-03-06 14:42:48 +01:00
Fabien Servant
92cc5b7cb2 images export nodes 2025-03-06 11:09:18 +00:00
Candice Bentéjac
2c06ea4870 [GraphEditor] Use attribute's evaluated value for "Open File"
Otherwise, input attributes with variables (either environment ones
or local ones) cannot be opened through "Open File", even though "Open
Containing Folder" works fine.
2025-03-05 13:36:34 +00:00
Candice Bentéjac
6b9e76d95a [nodes] ScenePreview: Use {nodeSourceCodeFolder} for the script's path 2025-03-05 13:36:34 +00:00
Candice Bentéjac
e0b2aafae3 [core] Attribute: Strip ending "/" from invalidation values
By doing so, invalidation values will evaluate to the same UID
independently from whether the attribute's value has been written
with an extra "/" or not.
2025-03-05 13:36:34 +00:00
Candice Bentéjac
8afc9adad3 [core] Node: Resolve nodeCacheFolder without cache for outputs 2025-03-05 13:36:33 +00:00
Candice Bentéjac
dafb7be688 [nodes] CameraInit: Use node's internal folder instead of the description's 2025-03-05 13:36:33 +00:00
Candice Bentéjac
23901c502b [desc] Remove internalFolder in desc.Node
This is fully replaced with `{nodeCacheFolder}`.
2025-03-05 13:36:32 +00:00
Candice Bentéjac
2290c12da2 [nodes] Replace desc.Node.internalFolder with {nodeCacheFolder} 2025-03-05 13:36:31 +00:00
Candice Bentéjac
6cbb97d9a8 [core] Add default relative paths to the command line variables
Add 2 default entries to the command line variables:
- `nodeCacheFolder`, which contains the location of the cache folder
- `nodeSourceCodeFolder`, which contains the location of the file
describing the node
2025-03-05 13:26:53 +00:00
Candice Bentéjac
40fd46d476 [core] Node: Add a sourceCodeFolder property
This property stores the location of the source code for a given node
and is not exposed to the QML side.
2025-03-05 13:26:53 +00:00
Candice Bentéjac
5791bdb1bd
Merge pull request #2682 from alicevision/dev/choiceParamValuesOverride
ChoiceParam: add option to serialize overriden values
2025-03-05 10:19:42 +00:00
Yann Lanthony
634197583c [ui] AttributeEditor: Generic TextField param editor improvements
* Use disabled text color when attribute is readonly.
* Improved UX: text cursor on mouse hovering.
* Simplify context menu handling.
2025-02-26 15:24:21 +01:00
demoulinv
f901f814f7
Merge pull request #2667 from alicevision/dev/usdSupport
Export USD Node
2025-02-26 10:57:11 +01:00
Yann Lanthony
5a66087eac
Merge pull request #2680 from alicevision/fix/jsParamInjection
[qml] Fix QML warnings when dropping project files into the Graph Editor
2025-02-25 17:39:18 +01:00
Yann Lanthony
fb3c1b5718
Merge pull request #2678 from alicevision/fix/emptyPipelineMenu
[GraphEditor] Only display "Pipelines" menu when templates are available
2025-02-25 17:38:47 +01:00
Yann Lanthony
cdb25e28df [ui] Application: fix save-as dialog not working properly (Qt6.7+)
Since Qt 6.7, type annotations are enforced at runtime.
Typing the `sourceSaveDialog` as Dialog (or Platform.FileDialog) breaks the value received by the function and its behavior.
2025-02-21 18:18:15 +01:00
Yann Lanthony
062bc3ca28 [core] ChoiceParam: add option to serialize overriden values
Introduce a new `saveValuesOverride` parameter on desc.ChoiceParam to define
whether to serialize the list of possible values if they have been overridden at runtime.
2025-02-21 10:45:26 +01:00
Candice Bentéjac
8ee7b50204 [nodes] Fix labels and descriptions for some nodes 2025-02-20 12:56:39 +01:00
Candice Bentéjac
54c8bfefa8 [pipelines] Experimental: Align nodes and apply correct colors 2025-02-20 12:56:39 +01:00
Candice Bentéjac
bfb9ee3272 [GraphEditor] Convert file to string before testing its extension
This fixes the "Property 'endsWith' of object file xxx is not a function"
warning.
2025-02-20 11:06:07 +01:00
Candice Bentéjac
e214868d81 [ui] Fix injections into signal handlers with JS functions 2025-02-20 11:06:06 +01:00
Candice Bentéjac
1fbf42a3f4 [GraphEditor] Only display "Pipelines" menu when templates are available
In the node menu (displayed when pressing "Tab" or right-clicking in the
Graph Editor), the "Pipelines" menu entry used to be displayed even if
there was no available template (the entry would open to display an
empty list).

This commit adds a check to ensure that the "Pipelines" menu is only
added to the node menu if there is at least one template that is
available. Otherwise, it is not displayed.
2025-02-19 15:14:27 +01:00
Candice Bentéjac
96a9757f5c [ui] app: Register components to QML before instantiating the engine 2025-02-18 18:15:19 +01:00
Candice Bentéjac
6355037036
Merge pull request #2671 from alicevision/dev/nodeCreationCallback
NodeAPI: Trigger node creation callback only for explicit new node creation
2025-02-18 18:07:25 +01:00
Yann Lanthony
9f622a2691
Fix Meshroom UI CLI latest option
Fix invalid use of `_recentProjectFiles`  variable.
2025-02-17 22:02:54 +01:00
mhog
db62f2be96
Merge pull request #2674 from alicevision/dev/mayaExport
Add maya scene export
2025-02-17 16:09:47 +01:00
Fabien Servant
f9af052c16 Add maya scene export 2025-02-17 16:03:48 +01:00
Yann Lanthony
4b1226e8ea
Merge pull request #2673 from alicevision/fix/chunksWarnings
[qml] Fix QML warnings related to chunks
2025-02-17 13:07:25 +01:00
Candice Bentéjac
bae85d65e3 [ui] Graph: In minimal refresh, do not poll files for chunks run locally
When the minimal refresh mode is on, only chunks that are running,
submitted or in error while their execution mode is external should be
polled.

Chunks that have the same status but with a local execution mode will be
correctly updated as their status changes will be notified.

The behaviour for the automatic refresh mode remains the same: all the
chunks are polled, independently from their status and their execution
mode.
2025-02-17 11:34:01 +01:00
Candice Bentéjac
3e6aabc795 [qml] Handle cases where a chunk is undefined 2025-02-14 17:29:04 +01:00
Candice Bentéjac
b7716ef1bd [GraphEditor] Remove "common.js" and use Utils.Colors instead 2025-02-14 17:19:11 +01:00
Yann Lanthony
90acb93ea8 [core] Trigger node desc creation callback only for explicit node creation
The desc.Node.onCreated callback is a hook in the Node API for developers to
write custom behavior on a node first initialization.
By being called in the core.Node constructor, this was triggered in several situations
that don't match this idea and with unpredictable side effects (graph loading, node re-creation on undo...).

* Make `onNodeCreated` callback an explicit method on desc.Node.
* Remove the call to node descriptor's `onNodeCreated` callback outside core.Node constructor.
* Trigger this callback on explicit node creation (adding new node to graph, init a graph from a template).
2025-02-14 11:42:22 +01:00
Candice Bentéjac
6ee3b01177
Merge pull request #2656 from alicevision/dev/choiceParamUI
UI: Redesign ChoiceParam UI component
2025-02-14 11:40:15 +01:00
Candice Bentéjac
5710bf3ed3
Merge pull request #2657 from alicevision/dev/valueChangedPropagation
Node: Propagate attribute change via `valueChanged` signal
2025-02-14 11:04:26 +01:00
mhog
ff921d622a
Merge pull request #2664 from alicevision/dev/changeDefaultSfm
Create new pipeline for testing modular sfm
2025-02-14 09:04:15 +01:00
Yann Lanthony
ccc77c3153 [ui] FilterComboBox: rework filtering behavior
Reverse relationship between combobox and filter field.
- Make textfield filter the main active focus item
that forwards its key event to the combobox.
- Make sure highlighted item is always valid.
- Block combobox validation when the filter is invalid.
2025-02-13 18:42:58 +01:00
Yann Lanthony
583088035b [ui] FilterComboBox: fix issue clicking on last menu item
Disable the horizontal scrollbar in the popup menu that was
interfering with mouse click selection on the last item.
Also, remove the unneeded Layout policy on the root ColumLayout
of this popup's contentItem.
2025-02-13 11:40:09 +01:00
Yann Lanthony
212384bd1c [ui] GraphEditor: redesign non exclusive ChoiceParam control
* Move the control to its own file.
* Add support for displaying custom values (elements outside the predefined possible values).
2025-02-13 11:40:09 +01:00