Alembic
1.8.11
Toggle main menu visibility
Loading...
Searching...
No Matches
OMaterial.h
1
//-*****************************************************************************
2
//
3
// Copyright (c) 2009-2015,
4
// Sony Pictures Imageworks Inc. and
5
// Industrial Light & Magic, a division of Lucasfilm Entertainment Company Ltd.
6
//
7
// All rights reserved.
8
//
9
// Redistribution and use in source and binary forms, with or without
10
// modification, are permitted provided that the following conditions are
11
// met:
12
// * Redistributions of source code must retain the above copyright
13
// notice, this list of conditions and the following disclaimer.
14
// * Redistributions in binary form must reproduce the above
15
// copyright notice, this list of conditions and the following disclaimer
16
// in the documentation and/or other materials provided with the
17
// distribution.
18
// * Neither the name of Sony Pictures Imageworks, nor
19
// Industrial Light & Magic, nor the names of their contributors may be used
20
// to endorse or promote products derived from this software without specific
21
// prior written permission.
22
//
23
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
//
35
//-*****************************************************************************
36
37
#ifndef Alembic_AbcMaterial_OMaterial_h
38
#define Alembic_AbcMaterial_OMaterial_h
39
40
#include <Alembic/Abc/All.h>
41
42
#include <Alembic/Util/Export.h>
43
#include <Alembic/AbcMaterial/SchemaInfoDeclarations.h>
44
45
namespace
Alembic
{
46
namespace
AbcMaterial {
47
namespace
ALEMBIC_VERSION_NS {
48
53
class
ALEMBIC_EXPORT OMaterialSchema
54
:
public
Abc::OSchema
<MaterialSchemaInfo>
55
{
56
public
:
57
58
//-------------------------------------------------------------------------
59
//BOILERPLATE
60
61
typedef
OMaterialSchema this_type;
62
63
OMaterialSchema() {}
64
65
OMaterialSchema(
66
Alembic::AbcCoreAbstract::CompoundPropertyWriterPtr iParent,
67
const
std::string &iName,
68
const
Abc::Argument
&iArg0 =
Abc::Argument
(),
69
const
Abc::Argument
&iArg1 =
Abc::Argument
(),
70
const
Abc::Argument
&iArg2 =
Abc::Argument
(),
71
const
Abc::Argument
&iArg3 =
Abc::Argument
() );
72
73
OMaterialSchema(
Abc::OCompoundProperty
iParent,
74
const
std::string &iName,
75
const
Abc::Argument
&iArg0 =
Abc::Argument
(),
76
const
Abc::Argument
&iArg1 =
Abc::Argument
(),
77
const
Abc::Argument
&iArg2 =
Abc::Argument
() );
78
79
//-------------------------------------------------------------------------
80
//ACTUAL STUFF
81
90
void
setShader
(
const
std::string & iTarget,
91
const
std::string & iShaderType,
92
const
std::string & iShaderName );
93
99
Abc::OCompoundProperty
getShaderParameters
(
100
const
std::string & iTarget,
const
std::string & iShaderType );
101
102
//add node by name, target, type, set node connection?, set node
103
//terminals?
104
105
void
addNetworkNode(
const
std::string & iNodeName,
106
const
std::string & iTarget,
107
const
std::string & iNodeType );
108
109
void
setNetworkNodeConnection(
const
std::string & iNodeName,
110
const
std::string & iInputName,
111
const
std::string & iConnectedNodeName,
112
const
std::string & iConnectedOutputName );
113
114
Abc::OCompoundProperty
115
getNetworkNodeParameters(
const
std::string & iNodeName );
116
117
void
setNetworkTerminal(
const
std::string & iTarget,
118
const
std::string & iShaderType,
119
const
std::string & iNodeName,
120
const
std::string & iOutputName =
""
);
121
122
void
123
setNetworkInterfaceParameterMapping(
124
const
std::string & iInterfaceParamName,
125
const
std::string & iMapToNodeName,
126
const
std::string & iMapToParamName );
127
128
Abc::OCompoundProperty
getNetworkInterfaceParameters();
129
130
protected
:
131
132
void
init();
133
134
// all the network nodes will be placed under this property
135
Abc::OCompoundProperty
m_node;
136
void
createNodeCompound();
137
138
class
Data
;
139
140
// shared and not scoped because we want this to survive a copy
141
Util::shared_ptr< Data > m_data;
142
};
143
145
typedef
Abc::OSchemaObject<OMaterialSchema>
OMaterial;
146
147
typedef
Util::shared_ptr< OMaterial > OMaterialPtr;
148
149
}
// End namespace ALEMBIC_VERSION_NS
150
151
using namespace
ALEMBIC_VERSION_NS;
152
153
}
// End namespace AbcMaterial
154
}
// End namespace Alembic
155
156
157
#endif
158
Alembic::Abc::ALEMBIC_VERSION_NS::Argument
Definition
Argument.h:120
Alembic::Abc::ALEMBIC_VERSION_NS::OCompoundProperty
Definition
OCompoundProperty.h:53
Alembic::Abc::ALEMBIC_VERSION_NS::OSchema
Definition
OSchema.h:119
Alembic::Abc::ALEMBIC_VERSION_NS::OSchemaObject
Definition
OSchemaObject.h:54
Alembic::AbcMaterial::ALEMBIC_VERSION_NS::OMaterialSchema::Data
Definition
OMaterial.cpp:47
Alembic::AbcMaterial::ALEMBIC_VERSION_NS::OMaterialSchema::getShaderParameters
Abc::OCompoundProperty getShaderParameters(const std::string &iTarget, const std::string &iShaderType)
Definition
OMaterial.cpp:186
Alembic::AbcMaterial::ALEMBIC_VERSION_NS::OMaterialSchema::setShader
void setShader(const std::string &iTarget, const std::string &iShaderType, const std::string &iShaderName)
Definition
OMaterial.cpp:168
Alembic
Alembic namespace ...
Definition
ArchiveInfo.cpp:39
AbcMaterial
OMaterial.h
Generated by
1.18.0