Skip to content

Commit

Permalink
Added PrimitiveVariableTweaks
Browse files Browse the repository at this point in the history
  • Loading branch information
danieldresser-ie committed Dec 7, 2024
1 parent 39639d1 commit ef82780
Show file tree
Hide file tree
Showing 9 changed files with 1,866 additions and 1 deletion.
1 change: 1 addition & 0 deletions Changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ Features
- Inference : Loads ONNX models and performance inference using an array of input tensors.
- ImageToTensor : Converts images to tensors for use with the Inference node.
- TensorToImage : Converts tensors back to images following inference.
- PrimiitiveVariableTweaks : Added node for tweaking primitive variables. Can affect just part of a primitive based on ids or a mask.

API
---
Expand Down
102 changes: 102 additions & 0 deletions include/GafferScene/PrimitiveVariableTweaks.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
//////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2024, Image Engine Design Inc. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above
// copyright notice, this list of conditions and the following
// disclaimer.
//
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following
// disclaimer in the documentation and/or other materials provided with
// the distribution.
//
// * Neither the name of John Haddon nor the names of
// any other contributors to this software may be used to endorse or
// promote products derived from this software without specific prior
// written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
//////////////////////////////////////////////////////////////////////////

#pragma once

#include "GafferScene/ObjectProcessor.h"

#include "Gaffer/TweakPlug.h"

namespace GafferScene
{

class GAFFERSCENE_API PrimitiveVariableTweaks : public ObjectProcessor
{

public :

enum class SelectionMode
{
All,
IdList,
IdListPrimitiveVariable,
MaskPrimitiveVariable
};

explicit PrimitiveVariableTweaks( const std::string &name=defaultName<PrimitiveVariableTweaks>() );
~PrimitiveVariableTweaks() override;

GAFFER_NODE_DECLARE_TYPE( GafferScene::PrimitiveVariableTweaks, PrimitiveVariableTweaksTypeId, ObjectProcessor );

Gaffer::IntPlug *interpolationPlug();
const Gaffer::IntPlug *interpolationPlug() const;

Gaffer::IntPlug *selectionModePlug();
const Gaffer::IntPlug *selectionModePlug() const;

Gaffer::Int64VectorDataPlug *idListPlug();
const Gaffer::Int64VectorDataPlug *idListPlug() const;

Gaffer::StringPlug *idListVariablePlug();
const Gaffer::StringPlug *idListVariablePlug() const;

Gaffer::StringPlug *idPlug();
const Gaffer::StringPlug *idPlug() const;

Gaffer::StringPlug *maskVariablePlug();
const Gaffer::StringPlug *maskVariablePlug() const;

Gaffer::BoolPlug *ignoreMissingPlug();
const Gaffer::BoolPlug *ignoreMissingPlug() const;

Gaffer::TweaksPlug *tweaksPlug();
const Gaffer::TweaksPlug *tweaksPlug() const;

protected :

bool affectsProcessedObject( const Gaffer::Plug *input ) const override;
void hashProcessedObject( const ScenePath &path, const Gaffer::Context *context, IECore::MurmurHash &h ) const override;
IECore::ConstObjectPtr computeProcessedObject( const ScenePath &path, const Gaffer::Context *context, const IECore::Object *inputObject ) const override;

private :

static size_t g_firstPlugIndex;

};

IE_CORE_DECLAREPTR( PrimitiveVariableTweaks )

} // namespace GafferScene
2 changes: 1 addition & 1 deletion include/GafferScene/TypeIds.h
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ enum TypeId
PruneTypeId = 110546,
FreezeTransformTypeId = 110547,
MeshDistortionTypeId = 110548,
OpenGLRenderTypeId = 110549, // Available for reuse
PrimitiveVariableTweaksTypeId = 110549,
InteractiveRenderTypeId = 110550,
CubeTypeId = 110551,
SphereTypeId = 110552,
Expand Down
Loading

0 comments on commit ef82780

Please sign in to comment.