274 lines
7.2 KiB
C++
274 lines
7.2 KiB
C++
/****************************************************************************************
|
|
|
|
Copyright (C) 2015 Autodesk, Inc.
|
|
All rights reserved.
|
|
|
|
Use of this software is subject to the terms of the Autodesk license agreement
|
|
provided at the time of installation or download, or which otherwise accompanies
|
|
this software in either electronic or hard copy form.
|
|
|
|
****************************************************************************************/
|
|
|
|
//! \file fbxlight.h
|
|
#ifndef _FBXSDK_SCENE_GEOMETRY_LIGHT_H_
|
|
#define _FBXSDK_SCENE_GEOMETRY_LIGHT_H_
|
|
|
|
#include <fbxsdk/fbxsdk_def.h>
|
|
|
|
#include <fbxsdk/scene/geometry/fbxnodeattribute.h>
|
|
|
|
#include <fbxsdk/fbxsdk_nsbegin.h>
|
|
|
|
class FbxTexture;
|
|
|
|
/** \brief This node attribute contains methods for accessing the properties of a light.
|
|
* \nosubgrouping
|
|
*/
|
|
class FBXSDK_DLL FbxLight : public FbxNodeAttribute
|
|
{
|
|
FBXSDK_OBJECT_DECLARE(FbxLight, FbxNodeAttribute);
|
|
|
|
public:
|
|
/**
|
|
* \name Light Properties
|
|
*/
|
|
//@{
|
|
/** \enum EType Light types.
|
|
* - \e ePoint
|
|
* - \e eDirectional
|
|
* - \e eSpot
|
|
* - \e eArea
|
|
* - \e eVolume
|
|
*/
|
|
enum EType
|
|
{
|
|
ePoint,
|
|
eDirectional,
|
|
eSpot,
|
|
eArea,
|
|
eVolume
|
|
};
|
|
|
|
/** \enum EDecayType Decay types. Used for setting the attenuation of the light.
|
|
* - \e eNone No decay. The light's intensity will not diminish with distance.
|
|
* - \e eLinear Linear decay. The light's intensity will diminish linearly with the distance from the light.
|
|
* - \e eQuadratic Quadratic decay. The light's intensity will diminish with the squared distance from the light.
|
|
* This is the most physically accurate decay rate.
|
|
* - \e eCubic Cubic decay. The light's intensity will diminish with the cubed distance from the light.
|
|
*/
|
|
enum EDecayType
|
|
{
|
|
eNone,
|
|
eLinear,
|
|
eQuadratic,
|
|
eCubic
|
|
};
|
|
|
|
/** \enum EAreaLightShape Supported area light types.
|
|
* - \e eRectangle Rectangle (or often called a plane) area light type.
|
|
* - \e eSphere Area light that illuminate all directions.
|
|
*/
|
|
enum EAreaLightShape
|
|
{
|
|
eRectangle,
|
|
eSphere
|
|
};
|
|
|
|
/** Set the shadow texture for the light.
|
|
* \param pTexture The texture cast by the light shadow.
|
|
*/
|
|
void SetShadowTexture(FbxTexture* pTexture);
|
|
|
|
/** Get the light state.
|
|
* \return Pointer to the texture cast by the light shadow, or \c NULL if the shadow texture has not been set.
|
|
*/
|
|
FbxTexture* GetShadowTexture() const;
|
|
//@}
|
|
|
|
/**
|
|
* \name Properties
|
|
*/
|
|
//@{
|
|
/** This property handles the light type.
|
|
*
|
|
* Default value is ePoint
|
|
*/
|
|
FbxPropertyT<EType> LightType;
|
|
|
|
/** This property handles the cast light on object flag.
|
|
*
|
|
* Default value is true
|
|
*/
|
|
FbxPropertyT<FbxBool> CastLight;
|
|
|
|
/** This property handles the draw volumetric light flag.
|
|
*
|
|
* Default value is true
|
|
*/
|
|
FbxPropertyT<FbxBool> DrawVolumetricLight;
|
|
|
|
/** This property handles the draw ground projection flag.
|
|
*
|
|
* Default value is true
|
|
*/
|
|
FbxPropertyT<FbxBool> DrawGroundProjection;
|
|
|
|
/** This property handles the draw facing volumetric projection flag.
|
|
*
|
|
* Default value is false
|
|
*/
|
|
FbxPropertyT<FbxBool> DrawFrontFacingVolumetricLight;
|
|
|
|
/** This property handles the light color.
|
|
*
|
|
* Default value is (1.0, 1.0, 1.0)
|
|
*/
|
|
FbxPropertyT<FbxDouble3> Color;
|
|
|
|
/** This property handles the light intensity.
|
|
*
|
|
* Default value is 100.0
|
|
*/
|
|
FbxPropertyT<FbxDouble> Intensity;
|
|
|
|
/** This property handles the light inner cone angle (in degrees). Also know as the HotSpot
|
|
*
|
|
* Default value is 45.0
|
|
*/
|
|
FbxPropertyT<FbxDouble> InnerAngle;
|
|
|
|
/** This property handles the light outer cone angle (in degrees). Also known as the Falloff
|
|
*
|
|
* Default value is 45.0
|
|
*/
|
|
FbxPropertyT<FbxDouble> OuterAngle;
|
|
|
|
/** This property handles the light fog intensity
|
|
*
|
|
* Default value is 50.0
|
|
*/
|
|
FbxPropertyT<FbxDouble> Fog;
|
|
|
|
/** This property handles the decay type
|
|
*
|
|
* Default value is eNone
|
|
*/
|
|
FbxPropertyT<EDecayType> DecayType;
|
|
|
|
/** This property handles the decay start distance
|
|
*
|
|
* Default value is 0.0
|
|
*/
|
|
FbxPropertyT<FbxDouble> DecayStart;
|
|
|
|
/** This property handles the gobo file name
|
|
*
|
|
* Default value is ""
|
|
*/
|
|
FbxPropertyT<FbxString> FileName;
|
|
|
|
/** This property handles the enable near attenuation flag
|
|
*
|
|
* Default value is false
|
|
*/
|
|
FbxPropertyT<FbxBool> EnableNearAttenuation;
|
|
|
|
/** This property handles the near attenuation start distance
|
|
*
|
|
* Default value is 0.0
|
|
*/
|
|
FbxPropertyT<FbxDouble> NearAttenuationStart;
|
|
|
|
/** This property handles the near end attenuation
|
|
*
|
|
* Default value is 0.0
|
|
*/
|
|
FbxPropertyT<FbxDouble> NearAttenuationEnd;
|
|
|
|
/** This property handles the enable far attenuation flag
|
|
*
|
|
* Default value is false
|
|
*/
|
|
FbxPropertyT<FbxBool> EnableFarAttenuation;
|
|
|
|
/** This property handles the far attenuation start distance
|
|
*
|
|
* Default value is 0.0
|
|
*/
|
|
FbxPropertyT<FbxDouble> FarAttenuationStart;
|
|
|
|
/** This property handles the attenuation end distance
|
|
*
|
|
* Default value is 0.0
|
|
*/
|
|
FbxPropertyT<FbxDouble> FarAttenuationEnd;
|
|
|
|
/** This property handles the cast shadow flag
|
|
*
|
|
* Default value is false
|
|
*/
|
|
FbxPropertyT<FbxBool> CastShadows;
|
|
|
|
/** This property handles the shadow color
|
|
*
|
|
* Default value is (0.0, 0.0, 0.0)
|
|
*/
|
|
FbxPropertyT<FbxDouble3> ShadowColor;
|
|
|
|
/** This property handles type when LightType is eArea
|
|
*
|
|
* Default value is eRectangle
|
|
*/
|
|
FbxPropertyT<EAreaLightShape> AreaLightShape;
|
|
|
|
/** This property handles the left barn door angle
|
|
*
|
|
* Default value is 20.0
|
|
*/
|
|
FbxPropertyT<FbxFloat> LeftBarnDoor;
|
|
|
|
/** This property handles the right barn door angle
|
|
*
|
|
* Default value is 20.0
|
|
*/
|
|
FbxPropertyT<FbxFloat> RightBarnDoor;
|
|
|
|
/** This property handles the top barn door angle
|
|
*
|
|
* Default value is 20.0
|
|
*/
|
|
FbxPropertyT<FbxFloat> TopBarnDoor;
|
|
|
|
/** This property handles the bottom barn door angle
|
|
*
|
|
* Default value is 20.0
|
|
*/
|
|
FbxPropertyT<FbxFloat> BottomBarnDoor;
|
|
|
|
/** This property handles active status of barn doors
|
|
*
|
|
* Default value is false
|
|
*/
|
|
FbxPropertyT<FbxBool> EnableBarnDoor;
|
|
//@}
|
|
|
|
/*****************************************************************************************************************************
|
|
** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
|
|
*****************************************************************************************************************************/
|
|
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
|
FbxNodeAttribute::EType GetAttributeType() const override;
|
|
|
|
protected:
|
|
void ConstructProperties(bool pForceSet) override;
|
|
FbxStringList GetTypeFlags() const override;
|
|
#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
|
|
};
|
|
|
|
inline EFbxType FbxTypeOf(const FbxLight::EType&){ return eFbxEnum; }
|
|
inline EFbxType FbxTypeOf(const FbxLight::EDecayType&){ return eFbxEnum; }
|
|
inline EFbxType FbxTypeOf(const FbxLight::EAreaLightShape&){ return eFbxEnum; }
|
|
|
|
#include <fbxsdk/fbxsdk_nsend.h>
|
|
|
|
#endif /* _FBXSDK_SCENE_GEOMETRY_LIGHT_H_ */
|