Skip to content

Commit 586d2c9

Browse files
committed
Merge pull request #183 from andrewkaufman/sccXform
Added SceneCache Transform SOP
2 parents 664ed34 + 6d52ce5 commit 586d2c9

File tree

5 files changed

+694
-0
lines changed

5 files changed

+694
-0
lines changed
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
//////////////////////////////////////////////////////////////////////////
2+
//
3+
// Copyright (c) 2013, Image Engine Design Inc. All rights reserved.
4+
//
5+
// Redistribution and use in source and binary forms, with or without
6+
// modification, are permitted provided that the following conditions are
7+
// met:
8+
//
9+
// * Redistributions of source code must retain the above copyright
10+
// notice, this list of conditions and the following disclaimer.
11+
//
12+
// * Redistributions in binary form must reproduce the above copyright
13+
// notice, this list of conditions and the following disclaimer in the
14+
// documentation and/or other materials provided with the distribution.
15+
//
16+
// * Neither the name of Image Engine Design nor the names of any
17+
// other contributors to this software may be used to endorse or
18+
// promote products derived from this software without specific prior
19+
// written permission.
20+
//
21+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
22+
// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
23+
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24+
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
25+
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
26+
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
27+
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
28+
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
29+
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30+
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31+
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32+
//
33+
//////////////////////////////////////////////////////////////////////////
34+
35+
#ifndef IECOREHOUDINI_SOPSCENECACHETRANSFORM_H
36+
#define IECOREHOUDINI_SOPSCENECACHETRANSFORM_H
37+
38+
#include "SOP/SOP_Node.h"
39+
40+
#include "IECore/SceneCache.h"
41+
42+
#include "IECoreHoudini/SceneCacheNode.h"
43+
44+
namespace IECoreHoudini
45+
{
46+
47+
/// SOP for loading an IECore::SceneCache from disk
48+
class SOP_SceneCacheTransform : public SceneCacheNode<SOP_Node>
49+
{
50+
public :
51+
52+
SOP_SceneCacheTransform( OP_Network *net, const char *name, OP_Operator *op );
53+
virtual ~SOP_SceneCacheTransform();
54+
55+
static const char *typeName;
56+
57+
enum Mode
58+
{
59+
Name = 0,
60+
Root
61+
};
62+
63+
static PRM_Name pMode;
64+
static PRM_Name pInvert;
65+
66+
static PRM_Default modeDefault;
67+
68+
static PRM_ChoiceList modeList;
69+
70+
static OP_Node *create( OP_Network *net, const char *name, OP_Operator *op );
71+
static OP_TemplatePair *buildParameters();
72+
73+
virtual void getNodeSpecificInfoText( OP_Context &context, OP_NodeInfoParms &parms );
74+
75+
protected :
76+
77+
virtual OP_ERROR cookMySop( OP_Context &context );
78+
79+
virtual void sceneChanged();
80+
81+
private :
82+
83+
void transformByName( const IECore::SceneInterface *scene, double time, Space space, bool invert );
84+
UT_Matrix4 getTransform( const IECore::SceneInterface *rootScene, const IECore::SceneInterface *scene, double time, Space space, bool invert );
85+
Imath::M44d relativeTransform( const IECore::SceneInterface *rootScene, const IECore::SceneInterface *scene, double time );
86+
87+
};
88+
89+
} // namespace IECoreHoudini
90+
91+
#endif // IECOREHOUDINI_SOPSCENECACHETRANSFORM_H

menus/IECoreHoudini/cortex.shelf

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,15 @@ soptoolutils.genericTool(kwargs, 'ieCortexConverter')]]></script>
4040
<script scriptType="python"><![CDATA[import soptoolutils; soptoolutils.genericTool(kwargs, 'ieSceneCacheSource')]]></script>
4141
</tool>
4242

43+
<!-- SceneCacheSource SOP -->
44+
<tool name="cortexSceneCacheTransformSop" label="SceneCache Xform" icon="SOP_xform">
45+
<toolMenuContext name="network">
46+
<contextNetType>SOP</contextNetType>
47+
</toolMenuContext>
48+
<toolSubmenu>Cortex</toolSubmenu>
49+
<script scriptType="python"><![CDATA[import soptoolutils; soptoolutils.genericTool(kwargs, 'ieSceneCacheTransform')]]></script>
50+
</tool>
51+
4352
<!-- SceneCacheTransform OBJ -->
4453
<tool name="cortexSceneCacheTransform" label="SceneCache Xform" icon="SOP_ieToHoudiniConverter">
4554
<toolMenuContext name="network">

0 commit comments

Comments
 (0)