HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
dependencies.h
Go to the documentation of this file.
1 //
2 // Copyright 2016 Pixar
3 //
4 // Licensed under the Apache License, Version 2.0 (the "Apache License")
5 // with the following modification; you may not use this file except in
6 // compliance with the Apache License and the following modification to it:
7 // Section 6. Trademarks. is deleted and replaced with:
8 //
9 // 6. Trademarks. This License does not grant permission to use the trade
10 // names, trademarks, service marks, or product names of the Licensor
11 // and its affiliates, except as required to comply with Section 4(c) of
12 // the License and to reproduce the content of the NOTICE file.
13 //
14 // You may obtain a copy of the Apache License at
15 //
16 // http://www.apache.org/licenses/LICENSE-2.0
17 //
18 // Unless required by applicable law or agreed to in writing, software
19 // distributed under the Apache License with the above modification is
20 // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21 // KIND, either express or implied. See the Apache License for the specific
22 // language governing permissions and limitations under the Apache License.
23 //
24 #ifndef PXR_USD_USD_UTILS_DEPENDENCIES_H
25 #define PXR_USD_USD_UTILS_DEPENDENCIES_H
26 
27 /// \file usdUtils/dependencies.h
28 ///
29 /// Utilities for the following tasks that require consideration of a USD
30 /// asset's external dependencies:
31 /// * extracting asset dependencies from a USD file.
32 /// * creating a USDZ package containing a given asset and all of its external
33 /// dependencies.
34 /// * some time in the future, localize a given asset and all of its
35 /// dependencies into a specified directory.
36 ///
37 
38 #include "pxr/pxr.h"
39 #include "pxr/usd/usdUtils/api.h"
42 
43 #include <string>
44 #include <vector>
45 
47 
48 /// Parses the file at \p filePath, identifying external references, and
49 /// sorting them into separate type-based buckets. Sublayers are returned in
50 /// the \p sublayers vector, references, whether prim references, value clip
51 /// references or values from asset path attributes, are returned in the
52 /// \p references vector. Payload paths are returned in \p payloads.
53 ///
54 /// \note No recursive chasing of dependencies is performed; that is the
55 /// client's responsibility, if desired.
56 ///
57 /// \note Not all returned references are actually authored explicitly in the
58 /// layer. For example, templated clip asset paths are resolved and expanded
59 /// to include all available clip files that match the specified pattern.
62  const std::string& filePath,
63  std::vector<std::string>* subLayers,
64  std::vector<std::string>* references,
65  std::vector<std::string>* payloads);
66 
67 /// Recursively computes all the dependencies of the given asset and populates
68 /// \p layers with all the dependencies that can be opened as an SdfLayer.
69 /// All of the resolved non-layer dependencies are populated in \p assets.
70 /// Any unresolved (layer and non-layer) asset paths are populated in
71 /// \p unresolvedPaths.
72 ///
73 /// If a function is provided for the \p processingFunc parameter, it will be
74 /// invoked on every asset path that is discovered during localization.
75 /// Refer to \ref UsdUtilsDependencyInfo for general information on User
76 /// processing functions. Any changes made to the paths during the
77 /// invocation of this function will not be written to processed layers.
78 ///
79 /// The input vectors to be populated with the results are *cleared* before
80 /// any results are added to them.
81 ///
82 /// Returns true if the given asset was resolved correctly.
84 bool
86  const SdfAssetPath &assetPath,
87  std::vector<SdfLayerRefPtr> *layers,
88  std::vector<std::string> *assets,
89  std::vector<std::string> *unresolvedPaths,
90  const std::function<UsdUtilsProcessingFunc> &processingFunc =
91  std::function<UsdUtilsProcessingFunc>());
92 
93 /// Callback that is used to modify asset paths in a layer. The \c assetPath
94 /// will contain the string value that's authored. The returned value is the
95 /// new value that should be authored in the layer. If the function returns
96 /// an empty string, that value will be removed from the layer.
97 using UsdUtilsModifyAssetPathFn = std::function<std::string(
98  const std::string& assetPath)>;
99 
100 /// Helper function that visits every asset path in \c layer, calls \c modifyFn
101 /// and replaces the value with the return value of \c modifyFn. This modifies
102 /// \c layer in place.
103 ///
104 /// This can be useful in preparing a layer for consumption in contexts that do
105 /// not have access to the ArResolver for which the layer's asset paths were
106 /// authored: we can replace all paths with their fully resolved equivalents,
107 /// for example.
110  const SdfLayerHandle& layer,
111  const UsdUtilsModifyAssetPathFn& modifyFn);
112 
114 
115 #endif // PXR_USD_USD_UTILS_DEPENDENCIES_H
Attempt to access an object that no longer exists in Houdini Invalid output Invalid type The attempted operation failed Node initialization script failed Failed to modify node or parameter because of a permission error Possible causes include locked assets
Definition: HOM_Errors.h:191
GLsizei const GLchar *const * string
Definition: glcorearb.h:814
USDUTILS_API void UsdUtilsModifyAssetPaths(const SdfLayerHandle &layer, const UsdUtilsModifyAssetPathFn &modifyFn)
GLenum GLuint GLint GLint layer
Definition: glcorearb.h:1299
std::function< std::string(const std::string &assetPath)> UsdUtilsModifyAssetPathFn
Definition: dependencies.h:98
USDUTILS_API bool UsdUtilsComputeAllDependencies(const SdfAssetPath &assetPath, std::vector< SdfLayerRefPtr > *layers, std::vector< std::string > *assets, std::vector< std::string > *unresolvedPaths, const std::function< UsdUtilsProcessingFunc > &processingFunc=std::function< UsdUtilsProcessingFunc >())
PXR_NAMESPACE_OPEN_SCOPE USDUTILS_API void UsdUtilsExtractExternalReferences(const std::string &filePath, std::vector< std::string > *subLayers, std::vector< std::string > *references, std::vector< std::string > *payloads)
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition: path.h:1432
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:91
#define USDUTILS_API
Definition: api.h:40