Skip to content

Commit 065d63d

Browse files
authored
Merge pull request #1435 from johnhaddon/usdVolumeFix
USD VolumeAlgo : Fix crash loading empty field
2 parents ac82753 + 97c19f0 commit 065d63d

File tree

4 files changed

+26
-2
lines changed

4 files changed

+26
-2
lines changed

Changes

+3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
10.5.x.x (relative to 10.5.9.3)
22
========
33

4+
Fixes
5+
-----
46

7+
- USDScene : Fixed crash loading a Volume with an empty field.
58

69
10.5.9.3 (relative to 10.5.9.2)
710
========

contrib/IECoreUSD/src/IECoreUSD/VolumeAlgo.cpp

+5-2
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,11 @@ IECore::ObjectPtr readVolume( pxr::UsdVolVolume &volume, pxr::UsdTimeCode time,
9898
continue;
9999
}
100100

101-
ConstDataPtr fieldFileNameData = DataAlgo::fromUSD( fieldAsset.GetFilePathAttr(), time );
102-
const std::string fieldFileName = static_cast<const StringData *>( fieldFileNameData.get() )->readable();
101+
std::string fieldFileName;
102+
if( auto fieldFileNameData = runTimeCast<const StringData>( DataAlgo::fromUSD( fieldAsset.GetFilePathAttr(), time ) ) )
103+
{
104+
fieldFileName = fieldFileNameData->readable();
105+
}
103106

104107
if( fileName.empty() )
105108
{

contrib/IECoreUSD/test/IECoreUSD/USDSceneTest.py

+7
Original file line numberDiff line numberDiff line change
@@ -4398,5 +4398,12 @@ def testUsdVolVolumeSlashes( self ) :
43984398
self.assertNotIn( "\\", vdbObject.fileName() )
43994399
self.assertTrue( pathlib.Path( vdbObject.fileName() ).is_file() )
44004400

4401+
@unittest.skipIf( not haveVDB, "No IECoreVDB" )
4402+
def testUsdVolVolumeWithEmptyField( self ) :
4403+
4404+
fileName = os.path.dirname( __file__ ) + "/data/volumeWithEmptyField.usda"
4405+
root = IECoreScene.SceneInterface.create( fileName, IECore.IndexedIO.OpenMode.Read )
4406+
self.assertIsNone( root.child( "volume" ).readObject( 0 ) )
4407+
44014408
if __name__ == "__main__":
44024409
unittest.main()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#usda 1.0
2+
3+
def Volume "volume"
4+
{
5+
custom rel field:density = </volume/density>
6+
7+
def OpenVDBAsset "density"
8+
{
9+
}
10+
}
11+

0 commit comments

Comments
 (0)