Skip to content

Commit

Permalink
Merge release v0.8.4
Browse files Browse the repository at this point in the history
  • Loading branch information
pixar-oss committed Mar 7, 2018
2 parents 7229566 + 4c391b0 commit 2631ea8
Show file tree
Hide file tree
Showing 581 changed files with 20,928 additions and 7,699 deletions.
75 changes: 43 additions & 32 deletions BUILDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,17 @@ Advanced Build Configuration

## Building With CMake

Users may specify libraries to build USD against and other build options by
Users may specify libraries to build USD against and other build options by
passing arguments when running cmake. Documentation for these arguments
are below.

Some examples:

#### On Linux
#### On Linux

```bash
cmake \
-DTBB_ROOT_DIR=/path/to/tbb \
-DTBB_ROOT_DIR=/path/to/tbb \
-DOPENEXR_LOCATION=/path/to/openexr \
-DOPENSUBDIV_ROOT_DIR=/path/to/opensubdiv \
-DPTEX_LOCATION=/path/to/ptex \
Expand All @@ -42,7 +42,7 @@ The following will generate an Xcode project that can be used to build USD.
```bash
cmake \
-G "Xcode" \
-DTBB_ROOT_DIR=/path/to/tbb \
-DTBB_ROOT_DIR=/path/to/tbb \
-DOPENEXR_LOCATION=/path/to/openexr \
-DOPENSUBDIV_ROOT_DIR=/path/to/opensubdiv \
-DPTEX_LOCATION=/path/to/ptex \
Expand All @@ -55,7 +55,7 @@ cmake --build . --target install -- -j <NUM_CORES>

#### On Windows

The following will generate a Visual Studio 2015 solution that can be used to
The following will generate a Visual Studio 2015 solution that can be used to
build USD.

```cmd.exe
Expand All @@ -70,7 +70,7 @@ build USD.
\path\to\USD\source
cmake --build . --target install -- /m:%NUMBER_OF_PROCESSORS%
```
```

## Optional Components

Expand All @@ -80,20 +80,20 @@ removes the need for their dependencies when building USD.

##### Python

Python support in USD refers to:
Python support in USD refers to:
- [The USD Toolset](https://graphics.pixar.com/usd/docs/USD-Toolset.html)
- [Third Party Plugins](https://graphics.pixar.com/usd/docs/USD-3rd-Party-Plugins.html)
- Python language bindings for the USD C++ API
- Unit tests using Python

Support for Python can optionally be disabled by specifying the cmake flag
Support for Python can optionally be disabled by specifying the cmake flag
```PXR_ENABLE_PYTHON_SUPPORT=FALSE```.

##### Documentation

Doxygen documentation can optionally be generated by specifying the cmake flag
Doxygen documentation can optionally be generated by specifying the cmake flag
```PXR_BUILD_DOCUMENTATION=TRUE```. The additional dependencies that must
be supplied for enabling documentation generation are:
be supplied for enabling documentation generation are:

| Dependency Name | Description | Version |
| ------------------ |----------------------------------------------------------------------- | ------- |
Expand All @@ -105,7 +105,7 @@ be supplied for enabling documentation generation are:

This component contains Hydra, a high-performance graphics rendering engine.

Disable this component by specifying the cmake flag ```PXR_BUILD_IMAGING=FALSE``` when
Disable this component by specifying the cmake flag ```PXR_BUILD_IMAGING=FALSE``` when
invoking cmake. Disabling this component will also disable the [USD Imaging](#usd-imaging)
component and any [Imaging Plugins](#imaging-plugins).

Expand Down Expand Up @@ -140,7 +140,7 @@ Embree 2.16.1. The additional dependencies that must be supplied when invoking c
## Third Party Plugins

USD provides several plugins for integration with third-party software packages,
including Maya, Katana, Houdini, and Alembic. There is additional documentation on each plugin
including Maya, Katana, Houdini, and Alembic. There is additional documentation on each plugin
[here](http://openusd.org/docs/USD-3rd-Party-Plugins.html).
These plugins are not built by default and must be enabled via the instructions below.

Expand All @@ -167,7 +167,7 @@ For further information see the documentation on the Alembic plugin [here](http:

##### Maya Plugin

Enable the Maya plugin in the build by specifying the cmake flag ```PXR_BUILD_MAYA_PLUGIN=TRUE```
Enable the Maya plugin in the build by specifying the cmake flag ```PXR_BUILD_MAYA_PLUGIN=TRUE```
when invoking cmake. This plugin is compatible with Maya 2016. The additional dependencies that must be supplied when invoking cmake are:

| Dependency Name | Description | Version |
Expand All @@ -179,7 +179,7 @@ For further information see the documentation on the Maya plugin [here](http://o

##### Katana Plugin

Enable the Katana plugin in the build by specifying the cmake flag ```PXR_BUILD_KATANA_PLUGIN=TRUE```
Enable the Katana plugin in the build by specifying the cmake flag ```PXR_BUILD_KATANA_PLUGIN=TRUE```
when invoking cmake. This plugin is compatible with Katana 2.5v1. The additional dependencies that must be supplied when invoking cmake are:

| Dependency Name | Description | Version |
Expand All @@ -190,7 +190,7 @@ For further information see our additional documentation on the Katana plugins [

##### Houdini Plugin

Enable the Houdini plugin in the build by specifying the cmake flag ```PXR_BUILD_HOUDINI_PLUGIN=TRUE```
Enable the Houdini plugin in the build by specifying the cmake flag ```PXR_BUILD_HOUDINI_PLUGIN=TRUE```
when invoking cmake. This plugin is compatible with Houdini 16.0. The additional dependencies that must be supplied when invoking cmake are:

| Dependency Name | Description | Version |
Expand All @@ -201,7 +201,7 @@ For further information see our additional documentation on the Houdini plugins

## Tests

Disable unit testing and prevent tests from being built by specifying the cmake flag ```PXR_BUILD_TESTS=FALSE```
Disable unit testing and prevent tests from being built by specifying the cmake flag ```PXR_BUILD_TESTS=FALSE```
when invoking cmake.

## Other Build Options
Expand All @@ -210,26 +210,37 @@ when invoking cmake.

Each library in the USD core generally has an associated file named 'plugInfo.json' that contains metadata about that library,
such as the schema types provided by that library. These files are consumed by USD's internal plugin system to lazily load
libraries when needed.
libraries when needed.

The plugin system requires knowledge of where these metadata files are located. The cmake build will ensure this is set up
properly based on the install location of the build. However, if you plan to relocate these files to a new location after
the build, you must inform the build by setting the cmake variable ```PXR_INSTALL_LOCATION``` to the intended final
directory where these files will be located. This variable may be a ':'-delimited list of paths.

Another way USD is locating plugins is the ```PXR_PLUGINPATH_NAME``` environment variable. This variable
may be a list of paths. If you do not want your USD build to use this default variable name, you can override the name
of the environment variable using the following CMake option:

```
-DPXR_OVERRIDE_PLUGINPATH_NAME=CUSTOM_USD_PLUGINPATHS
```

By doing this, USD will check the ```CUSTOM_USD_PLUGINPATHS``` environment variable for paths, instead of the default
```PXR_PLUGINPATH_NAME``` one.

##### Shared library prefix

By default shared libraries will have the prefix 'lib'. This means, for a given
component such as [usdGeom](pxr/usd/lib/usdGeom), the build will generate a corresponding
libusdGeom object (libusdGeom.so on Linux, libusdGeom.dll on Windows
and libusdGeom.dylib on Mac). You can change the prefix (or remove it) through
component such as [usdGeom](pxr/usd/lib/usdGeom), the build will generate a corresponding
libusdGeom object (libusdGeom.so on Linux, libusdGeom.dll on Windows
and libusdGeom.dylib on Mac). You can change the prefix (or remove it) through
```PXR_LIB_PREFIX```. For example,

```
-DPXR_LIB_PREFIX=pxr
```

Will generate pxrusdGeom.so on Linux, pxrusdGeom.dll on Windows and
Will generate pxrusdGeom.so on Linux, pxrusdGeom.dll on Windows and
pxrusdGeom.dylib on Mac for the usdGeom component.

> Note: This prefix does not apply to shared objects used for Python bindings.
Expand All @@ -247,37 +258,37 @@ flags:
| PXR_SET_INTERNAL_NAMESPACE | The internal namespace identifier | ```pxrInternal_v_x_y``` (for version x.y.z) |
| PXR_ENABLE_NAMESPACES | Enable namespaces | ```OFF``` |

When enabled, there are a set of macros provided in a generated header,
When enabled, there are a set of macros provided in a generated header,
pxr/pxr.h, which facilitates using namespaces:

| Macro Name | Description |
| ------------------------------ |-----------------------------------------|
| Macro Name | Description |
| ------------------------------ |-----------------------------------------|
| PXR_NAMESPACE_OPEN_SCOPE | Opens the namespace scope. |
| PXR_NAMESPACE_CLOSE_SCOPE | Closes the namespace. |
| PXR_NS | Explicit qualification on items, e.g. ```PXR_NS::TfToken foo = ...```|
| PXR_NAMESPACE_USING_DIRECTIVE | Enacts a using-directive, e.g. ```using namespace PXR_NS;``` |

##### ASCII Parser Editing/Validation

There is an ASCII parser for the USD file format, which can be found in
[sdf](pxr/usd/lib/sdf/). Most users will not have a need to edit the parser, but
There is an ASCII parser for the USD file format, which can be found in
[sdf](pxr/usd/lib/sdf/). Most users will not have a need to edit the parser, but
for the adventurous ones, there are a couple additional requirements.

If you choose to edit the ASCII parsers, make sure
```PXR_VALIDATE_GENERATED_CODE``` is set to ```TRUE```. This flag enables tests
that check the generated code in [sdf](pxr/usd/lib/sdf) and
If you choose to edit the ASCII parsers, make sure
```PXR_VALIDATE_GENERATED_CODE``` is set to ```TRUE```. This flag enables tests
that check the generated code in [sdf](pxr/usd/lib/sdf) and
[gf](pxr/base/lib/gf).

| Dependency Name | Description | Version |
| ------------------------------ |----------------------------------------------------------------- | ------- |
| FLEX_EXECUTABLE | Path to [flex](http://flex.sourceforge.net/) executable | 2.5.35 |
| BISON_EXECUTABLE | Path to [bison](https://www.gnu.org/software/bison/) executable | 2.4.1 |
| BISON_EXECUTABLE | Path to [bison](https://www.gnu.org/software/bison/) executable | 2.4.1 |

##### USD Schema Generation

USD generates some code through a process called [schema
USD generates some code through a process called [schema
generation]. This process requires the following python modules be installed
and available on the syspath. You can learn more about Schemas and why you
and available on the syspath. You can learn more about Schemas and why you
might want to generate them
[here](http://openusd.org//docs/Generating-New-Schema-Classes.html).

Expand Down
88 changes: 88 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,93 @@
# Change Log

## [0.8.4] - 2018-03-05

### Added
- The PXR_PLUGINPATH_NAME environment variable name may be changed by
specifying `PXR_OVERRIDE_PLUGINPATH_NAME=<name>` when running cmake.
- Example sendmail plugin for usdview, located at
extras/usd/examples/usdviewPlugins/sendMail.py
- ArDefaultResolverContext, a context object for the ArDefaultResolver asset
resolution implementation that allows additional search paths to be used
during asset resolution.
- Users can now query the UsdNotice::ObjectsChanged notice for the changed
scene description fields that affected the reported objects.
- UsdAPISchemaBase base class for all API schemas.
- All UsdGeomBoundable schemas in usdGeom now have functions for computing
extents. These functions are also used when calling the general
UsdGeomBoundable::ComputeExtentFromPlugins method.
- UsdLuxCylinderLight schema.
- Significant additions to edge and point selection and highlighting
capabilities in Hydra.
- Initial support for UsdSkel bones in usdImaging.
- Initial support for exporting joints and skin clusters using the UsdSkel
schema in the Maya plugin.
- Documentation for third party plugin code is now included in the
doxygen build.

### Changed
- build_usd.py no longer checks for pyside-uic or boost::python if Python
support is disabled, and no longer builds OpenImageIO's Python bindings.
- Updated moduleDeps.cpp files to only register direct library dependencies.
This makes it easier for users to generate their own file for custom schemas.
- ArDefaultResolver now allows search paths like "Dir/File.usd" to be anchored
to other paths via AnchorRelativePath. During composition, these asset paths
will be resolved relative to the layer where they were authored before
falling back to the previous search path behavior.
- Updates to VtArray and .usdc code in preparation for zero-copy functionality.
- Inherit and specializes arcs to non-existent prims are no longer considered
composition errors.
- Apply method on API schemas have been moved to UsdAPISchemaBase and now
require a UsdPrim. Also improved documentation.
- Property queries on UsdPrim now accept a predicate for filtering results.
- UsdPrim::HasAPI now accepts an instance name argument to query if a prim has
a particular instance of a multiple-apply API schema has been applied.
- Adding or removing an inert prim spec no longer causes affected prims to
be resynced. These prims are now reported as "changed info only" in the
corresponding UsdNotice::ObjectsChanged notice.
- UsdNotice::ObjectsChanged::GetResyncedPaths and GetChangedInfoOnlyPaths now
return a custom range object instead of a SdfPathVector.
- Performance optimizations for querying properties on UsdPrim.
- Replaced UsdCollectionAPI::AddPrim/RemovePrim with IncludePath/ExcludePath.
- UsdGeomBoundable::ComputeExtentFromPlugins now accepts an optional
transform matrix, which may be used to provide more accurate bounds.
- UsdGeomBBoxCache now computes extents for all UsdGeomBoundable schemas.
- Performance optimizations in UsdShadeMaterialBindingAPI.
- Numerous changes and fixes to UsdSkel schemas.
- Significantly improved curve rendering in Hydra.
- Many improvements towards the goal of getting modern UsdShade materials
through Hydra to various kinds of backends.
- Performance improvements to hydra gather phase via multi-threading and other
optimizations.
- Changed complexity options in usdview to prevent users from inadvertently
bumping the complexity value too high and hanging the application.
- Several tweaks and improvements to usdview UI.
- Refactored Maya/Hydra batch renderer to improve performance for imaging USD
proxy shape nodes.

### Removed
- UsdShadeLook schema. This has been replaced by UsdShadeMaterial.
Material bindings authored using the "look:binding" relationship are no
longer respected.

### Fixed
- Various typo and compiler warning fixes throughout the codebase.
- Fixed bug where build_usd.py would not use the CMake generator specified at
the command line.
- Fixed crash in Apply method on API schemas.
- Fixed several bugs in UsdShadeMaterialBindingAPI::ComputeBoundMaterial.
- Changing the population mask for a UsdStage now correctly releases resources
used by objects that have been excluded from the stage.
- Fixed quadrangulation bug in Hydra with handling topology with degenerate or
hole faces.
- Fixed patch param refinement for Loop meshes.
- Several fixes to the nascent Hydra lights pipeline.
- Fixed bug in the usdExport AlembicChaser in the Maya plugin where primvars
that match the primvarprefix do not get exported. They are now exported with
constant interpolation, and using _AbcGeomScope is no longer required.
- Fixed bug in Katana plugin where infinite recursion would occur in pxrUsdIn
when sources were outside the scope of the point instancer. (Issue #286)

## [0.8.3] - 2018-02-05

### Added
Expand Down
5 changes: 3 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -120,12 +120,13 @@ if (${PXR_BUILD_DOCUMENTATION})

set(DOCS_DIR "${CMAKE_BINARY_DIR}")
set(GEN_SCRIPT "${PROJECT_SOURCE_DIR}/cmake/macros/generateDocs.py")
set(SOURCE_DIR "${CMAKE_SOURCE_DIR}/pxr")
set(PXR_SOURCE_DIR "${CMAKE_SOURCE_DIR}/pxr")
set(THIRD_PARTY_SOURCE_DIR "${CMAKE_SOURCE_DIR}/third_party")

add_custom_target(
documentation
ALL
COMMAND ${PYTHON_EXECUTABLE} ${GEN_SCRIPT} ${SOURCE_DIR} ${CMAKE_BINARY_DIR} ${DOCS_DIR} ${DOXYGEN_EXECUTABLE} ${DOT_EXECUTABLE}
COMMAND ${PYTHON_EXECUTABLE} ${GEN_SCRIPT} ${PXR_SOURCE_DIR} ${THIRD_PARTY_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${DOCS_DIR} ${DOXYGEN_EXECUTABLE} ${DOT_EXECUTABLE}
DEPENDS ${CMAKE_BINARY_DIR}/include/pxr/pxr.h
)

Expand Down
19 changes: 14 additions & 5 deletions build_scripts/build_usd.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,11 +190,14 @@ def RunCMake(context, force, extraArgs = None):
if msvcCompilerAndVersion:
_, version = msvcCompilerAndVersion
if version >= MSVC_2017_COMPILER_VERSION:
generator = '-G "Visual Studio 15 2017 Win64"'
generator = "Visual Studio 15 2017 Win64"
else:
generator = '-G "Visual Studio 14 2015 Win64"'
generator = "Visual Studio 14 2015 Win64"

if generator is not None:
generator = '-G "{gen}"'.format(gen=generator)

# On MacOS, enable the use of @rpath for relocatable builds.
# On MacOS, enable the use of @rpath for relocatable builds.
osx_rpath = None
if MacOS():
osx_rpath = "-DCMAKE_MACOSX_RPATH=ON"
Expand Down Expand Up @@ -400,12 +403,14 @@ def InstallBoost(context, force):
'--with-date_time',
'--with-filesystem',
'--with-program_options',
'--with-python',
'--with-regex',
'--with-system',
'--with-thread'
]

if context.buildPython:
b2_settings.append("--with-python")

if force:
b2_settings.append("-a")

Expand Down Expand Up @@ -649,6 +654,7 @@ def InstallOpenImageIO(context, force):
with CurrentWorkingDirectory(DownloadURL(OIIO_URL, context, force)):
extraArgs = ['-DOIIO_BUILD_TOOLS=OFF',
'-DOIIO_BUILD_TESTS=OFF',
'-DUSE_PYTHON=OFF',
'-DSTOP_ON_WARNING=OFF']

# OIIO's FindOpenEXR module circumvents CMake's normal library
Expand Down Expand Up @@ -1234,7 +1240,7 @@ def ForceBuildDependency(self, dep):
"PATH")
sys.exit(1)

if context.buildUsdImaging:
if PYSIDE in requiredDependencies:
# The USD build will skip building usdview if pyside-uic or pyside2-uic is
# not found, so check for it here to avoid confusing users. This list of
# PySide executable names comes from cmake/modules/FindPySide.cmake
Expand Down Expand Up @@ -1263,6 +1269,7 @@ def ForceBuildDependency(self, dep):
3rd-party source directory {srcDir}
3rd-party install directory {instDir}
Build directory {buildDir}
CMake generator {cmakeGenerator}
Building {buildType}
Imaging {buildImaging}
Expand All @@ -1284,6 +1291,8 @@ def ForceBuildDependency(self, dep):
srcDir=context.srcDir,
buildDir=context.buildDir,
instDir=context.instDir,
cmakeGenerator=("Default" if not context.cmakeGenerator
else context.cmakeGenerator),
dependencies=("None" if not dependenciesToBuild else
", ".join([d.name for d in dependenciesToBuild])),
buildType=("Shared libraries" if context.buildShared
Expand Down
Loading

0 comments on commit 2631ea8

Please sign in to comment.