Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
ddad201
IE Config : Add solidangle_LICENSE to ENV_VARS_TO_IMPORT
danieldresser Sep 14, 2017
ba7a2f9
SConstruct : Arnold tests depend on Arnold lib
danieldresser Sep 21, 2017
6e51598
IECoreArnold::PointsTest and RenderTest : This test could never have …
danieldresser Sep 14, 2017
1d3e5df
IECoreArnold::ProceduralTest : Need a tiny tolerance when checking va…
danieldresser Sep 14, 2017
574ec8a
IECoreArnold::RendererTest : With extreme motion blur, we need more s…
danieldresser Sep 18, 2017
cacc56c
IECoreArnold tests : Don't dump render output during tests
danieldresser Sep 22, 2017
5320eae
IECoreArnold tests : When testing example parameters, use ones that …
danieldresser Sep 15, 2017
86fcb48
IECoreArnold tests : Signature of AiNodeGetMatrix changed in Arnold 5
danieldresser Sep 15, 2017
efa1b5d
IECoreArnold::UniverseBlockTest : Accessing Metadata from Python now …
danieldresser Sep 18, 2017
4130ffa
IECoreArnold::RendererTest : Use correct types so we don't get warnings
danieldresser Sep 22, 2017
73f9798
IECoreArnold : Arnold 5 removes point types, and just uses vectors
danieldresser Sep 14, 2017
f8d2571
IECoreArnold : Arnold 5 replaces AtByte with uint8_t
danieldresser Sep 14, 2017
c146478
IECoreArnold : Arnold 5 replaces AtColor with AtRGB
danieldresser Sep 15, 2017
2f06053
IECoreArnold : In Arnold 5, member variables of AtArray are not decla…
danieldresser Sep 14, 2017
e1cdb1e
IECoreArnold::OutputDriver : Many API changes in Arnold 5
danieldresser Sep 15, 2017
5765d45
IECoreAnold::Parameter Algo : Use AtString
danieldresser Sep 15, 2017
3ab0ea5
IECoreArnold : Update M44f to AtMatrix casts for Arnold 5
danieldresser Sep 15, 2017
4acc625
IECoreArnold::RendererImplementation : Updated visibility attributes …
danieldresser Sep 15, 2017
45a5156
IECoreArnold : Arnold 5 doesn't support non-uniform sample times
danieldresser Sep 15, 2017
dde6223
IECoreArnold : Arnold 5 renamed aspect_ratio to pixel_aspect_ratio
danieldresser Sep 15, 2017
a78e362
IECoreArnold::RenderImplemenation : Update for Arnold 5 procedural in…
danieldresser Sep 18, 2017
c3771b6
IECoreArnold::Procedural : Update for Arnold 5, remove obselete test
danieldresser Sep 18, 2017
7ad6595
IECoreArnold::RendererImplemention : Remove duplicate AiEnd - the des…
danieldresser Sep 19, 2017
eeb3f92
IECoreArnold::ParameterAlgo : Support V3i and V2i parameters by casti…
danieldresser Sep 20, 2017
5ad3e9e
ICoreArnold : Without any options for setting log verbosity, default …
danieldresser Sep 22, 2017
96b708e
IECoreArnold::AutomaticInstancingTest : Force on console output so we…
danieldresser Sep 22, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class ProceduralHolderTranslator : public CShapeTranslator
if (m_isMasterDag)
{

return AddArnoldNode( "procedural" );
return AddArnoldNode( "ieProcedural" );
}
else
{
Expand Down Expand Up @@ -158,16 +158,6 @@ class ProceduralHolderTranslator : public CShapeTranslator
MFnDagNode fnDagNode( m_dagPath );
MBoundingBox bound = fnDagNode.boundingBox();

AiNodeSetVec( node, "min", bound.min().x, bound.min().y, bound.min().z );
AiNodeSetVec( node, "max", bound.max().x, bound.max().y, bound.max().z );

const char *dsoPath = getenv( "IECOREARNOLD_PROCEDURAL_PATH" );
AiNodeSetStr( node, "dso", dsoPath ? dsoPath : "ieProcedural.so" );

AiNodeDeclare( node, "className", "constant STRING" );
AiNodeDeclare( node, "classVersion", "constant INT" );
AiNodeDeclare( node, "parameterValues", "constant ARRAY STRING" );

// cast should be ok as we're registered to only work on procedural holders
IECoreMaya::ProceduralHolder *pHolder = static_cast<IECoreMaya::ProceduralHolder *>( fnDagNode.userNode() );

Expand Down
45 changes: 28 additions & 17 deletions contrib/IECoreArnold/src/IECoreArnold/procedural/Procedural.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,16 @@ static void initialisePython()
PyEval_ReleaseThread( PyThreadState_Get() );
}

static int procInit( AtNode *node, void **userPtr )
AI_PROCEDURAL_NODE_EXPORT_METHODS(IECoreProcedural);

node_parameters
{
AiParameterStr( "className", "" );
AiParameterInt( "classVersion", 1 );
AiParameterArray( "parameterValues", AiArray(0, 1, AI_TYPE_STRING) );
}

procedural_init
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For what it's worth, I hate the way Arnold uses macros to obfuscate the function parameters, and I explicitly wrote out the signatures instead so they were obvious.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, though I liked having less typing ...

{
// load the class

Expand All @@ -124,7 +133,7 @@ static int procInit( AtNode *node, void **userPtr )
{
// hack to workaround ass parsing errors
/// \todo Remove when we get the Arnold version that fixes this
std::string s = AiArrayGetStr( parameterValues, i );
std::string s = AiArrayGetStr( parameterValues, i ).c_str();
for( size_t c = 0; c<s.size(); c++ )
{
if( s[c] == '@' )
Expand Down Expand Up @@ -163,47 +172,49 @@ static int procInit( AtNode *node, void **userPtr )
parameterisedProcedural->render( renderer.get() );

renderer->addRef();
*userPtr = renderer.get();
*user_ptr = renderer.get();
}
else
{
*userPtr = 0;
*user_ptr = 0;
}

return 1;
}

static int procCleanup( void *userPtr )
procedural_cleanup
{
IECoreArnold::Renderer *renderer = (IECoreArnold::Renderer *)( userPtr );
IECoreArnold::Renderer *renderer = (IECoreArnold::Renderer *)( user_ptr );
if( renderer )
{
renderer->removeRef();
}
return 1;
}

static int procNumNodes( void *userPtr )
procedural_num_nodes
{
IECoreArnold::Renderer *renderer = (IECoreArnold::Renderer *)( userPtr );
IECoreArnold::Renderer *renderer = (IECoreArnold::Renderer *)( user_ptr );
return renderer ? renderer->numProceduralNodes() : 0;
}

static AtNode* procGetNode( void *userPtr, int i )
procedural_get_node
{
IECoreArnold::Renderer *renderer = (IECoreArnold::Renderer *)( userPtr );
IECoreArnold::Renderer *renderer = (IECoreArnold::Renderer *)( user_ptr );
return renderer ? (AtNode *)renderer->proceduralNode( i ) : 0;
}


AI_EXPORT_LIB int ProcLoader( AtProcVtable *vTable )
node_loader
{
if (i>0)
return false;

vTable->Init = procInit;
vTable->Cleanup = procCleanup;
vTable->NumNodes = procNumNodes;
vTable->GetNode = procGetNode;
strcpy( vTable->version, AI_VERSION );
node->methods = IECoreProcedural;
node->output_type = AI_TYPE_NONE;
node->name = "ieProcedural";
node->node_type = AI_NODE_SHAPE_PROCEDURAL;
strcpy(node->version, AI_VERSION);

return 1;
return true;
}
22 changes: 0 additions & 22 deletions contrib/IECoreArnold/test/IECoreArnold/ProceduralTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -224,27 +224,5 @@ def hash( self ):

self.failIf( "ignoring parameter max" in self.__arnoldMessages )

def testNoBound( self ) :

r = IECoreArnold.Renderer( "/tmp/test.ass" )

with IECore.WorldBlock( r ) :

r.procedural(
r.ExternalProcedural(
"test.so",
r.Procedural.noBound,
{}
)
)

l = "".join( open( "/tmp/test.ass" ).readlines() )

self.assertTrue( "procedural" in l )
self.assertFalse( "inf" in l )
self.assertFalse( re.search( r"\bmin\b", l ) )
self.assertFalse( re.search( r"\bmax\b", l ) )
self.assertTrue( "load_at_init" in l )

if __name__ == "__main__":
unittest.main()
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,8 @@ persp_camera
name camera
}

procedural
ieProcedural
{

dso contrib/IECoreArnold/test/IECoreArnold/plugins/ieProcedural.so
min -100 -100 -100
max 100 100 100

declare className constant STRING
declare classVersion constant INT
declare parameterValues constant ARRAY STRING

matrix 1 0 0 0 0 1 0 0 0 0 1 0 0 0 -20 1

className "read"
Expand Down