3ds Max USD API Reference
Loading...
Searching...
No Matches
PrimWriter.h
1//**************************************************************************/
2// Copyright (c) 2022 Autodesk, Inc.
3// All rights reserved.
4//
5// Use of this software is subject to the terms of the Autodesk license
6// agreement provided at the time of installation or download, or which
7// otherwise accompanies this software in either electronic or hard copy form.
8//**************************************************************************/
9#pragma once
10
11#include "MaxUsd/MaxTokens.h"
12#include "MaxUsd/Builders/USDSceneBuilderOptions.h"
13
14PXR_NAMESPACE_OPEN_SCOPE
15
17
25{
26public:
33 enum class ContextSupport
34 {
35 Unsupported,
36 Supported,
37 Fallback
38 };
39
44 MaxUSDAPI MaxUsdPrimWriter(const MaxUsdWriteJobContext& jobCtx);
45
49 MaxUSDAPI virtual ~MaxUsdPrimWriter();
50
56 MaxUSDAPI virtual ContextSupport CanConvert(INode* node) { return ContextSupport::Unsupported; };
57
70 MaxUSDAPI virtual TfToken GetPrimType(INode* node) { return pxr::MaxUsdPrimTypeTokens->Xform; };
71
81 MaxUSDAPI virtual bool Write(INode* sourceNode, UsdPrim& targetPrim, bool applyOffsetTransform) { return false; }
82
87 MaxUSDAPI virtual WStr GetWriterName() { return WStr(); };
88
96 MaxUSDAPI virtual TfToken GetObjectPrimSuffix(INode* /*node*/)
97 {
98 return TfToken("Object");
99 };
100
109 MaxUSDAPI virtual std::string GetPrimName(INode* node, const std::string& suggestedName)
110 {
111 return suggestedName;
112 };
113
131 MaxUSDAPI virtual maxUsd::XformSplitRequirement RequiresXformPrim(INode* node)
132 {
133 return maxUsd::XformSplitRequirement::ForOffsetObjects;
134 };
135
141 MaxUSDAPI virtual bool HandlesObjectOffsetTransform()
142 {
143 return false;
144 };
145
152 MaxUSDAPI virtual maxUsd::MaterialAssignRequirement RequiresMaterialAssignment(INode* node)
153 {
154 return maxUsd::MaterialAssignRequirement::Default;
155 };
156
163 MaxUSDAPI virtual maxUsd::InstancingRequirement RequiresInstancing()
164 {
165 return maxUsd::InstancingRequirement::Default;
166 };
167
168 MaxUSDAPI const UsdStageRefPtr& GetUsdStage() const;
169 MaxUSDAPI const std::string& GetFilename() const;
170 MaxUSDAPI virtual boost::python::dict GetNodesToPrims() const;
171
172protected:
174 MaxUSDAPI const USDSceneBuilderOptions& GetExportArgs() const;
175 MaxUSDAPI const MaxUsdWriteJobContext& GetJobContext() const;
176
177private:
178 const MaxUsdWriteJobContext& writeJobCtx;
179};
180
181typedef std::shared_ptr<MaxUsdPrimWriter> MaxUsdPrimWriterSharedPtr;
182
183PXR_NAMESPACE_CLOSE_SCOPE
Base class for all built-in and user-defined prim writers. Translates 3dsMax nodes to USD prims.
Definition: PrimWriter.h:25
MaxUSDAPI const USDSceneBuilderOptions & GetExportArgs() const
Gets the current global export args in effect.
virtual MaxUSDAPI bool HandlesObjectOffsetTransform()
Whether or not we want to manually handle the object offset transform in the Write()....
Definition: PrimWriter.h:141
ContextSupport
The level of support a writer can offer for a given context.
Definition: PrimWriter.h:34
virtual MaxUSDAPI maxUsd::InstancingRequirement RequiresInstancing()
Returns the instancing requirement for this Prim Writer. Some Prim Writers may want to handle instanc...
Definition: PrimWriter.h:163
virtual MaxUSDAPI ~MaxUsdPrimWriter()
Destructor.
virtual MaxUSDAPI bool Write(INode *sourceNode, UsdPrim &targetPrim, bool applyOffsetTransform)
Responsible for writing the prim's attribute for the given context. This is where the translation fro...
Definition: PrimWriter.h:81
virtual MaxUSDAPI ContextSupport CanConvert(INode *node)
Returns the level of support this writer can provide for a given 3dsMax node.
Definition: PrimWriter.h:56
MaxUSDAPI MaxUsdPrimWriter(const MaxUsdWriteJobContext &jobCtx)
Constructor.
virtual MaxUSDAPI maxUsd::XformSplitRequirement RequiresXformPrim(INode *node)
Returns the requirement to split the object from its transform in the scene.
Definition: PrimWriter.h:131
virtual MaxUSDAPI TfToken GetPrimType(INode *node)
The prim type you are writing to. For performance reasons, all prims get created ahead of time in a s...
Definition: PrimWriter.h:70
virtual MaxUSDAPI maxUsd::MaterialAssignRequirement RequiresMaterialAssignment(INode *node)
Returns the material assignment requirement for this node. Some prim writers may not want the prims t...
Definition: PrimWriter.h:152
virtual MaxUSDAPI TfToken GetObjectPrimSuffix(INode *)
In a few scenarios, you need two prims to properly represent an INode. One for its transform,...
Definition: PrimWriter.h:96
virtual MaxUSDAPI WStr GetWriterName()
Returns the name of this prim writer.
Definition: PrimWriter.h:87
virtual MaxUSDAPI std::string GetPrimName(INode *node, const std::string &suggestedName)
Returns the name that should be used for the prim. The base implementation should be sufficient in mo...
Definition: PrimWriter.h:109
Provides basic functionality and access to shared data for prim and shader writers.
Definition: WriteJobContext.h:19
USD Scene Build configuration options.
Definition: USDSceneBuilderOptions.h:49