Loading...
Searching...
No Matches
camera.h
1//
2// Copyright 2019 Pixar
3//
4// Licensed under the terms set forth in the LICENSE.txt file available at
5// https://openusd.org/license.
6//
7#ifndef EXT_RMANPKG_25_0_PLUGIN_RENDERMAN_PLUGIN_HD_PRMAN_CAMERA_H
8#define EXT_RMANPKG_25_0_PLUGIN_RENDERMAN_PLUGIN_HD_PRMAN_CAMERA_H
9
10#include "pxr/pxr.h"
11#include "hdPrman/api.h"
12#include "hdPrman/renderParam.h"
13#include "pxr/imaging/hd/camera.h"
14#include "pxr/imaging/hd/timeSampleArray.h"
15
16#include "pxr/base/vt/array.h"
17
18#include <optional>
19
20PXR_NAMESPACE_OPEN_SCOPE
21
22class HdSceneDelegate;
23
32class HdPrmanCamera final : public HdCamera
33{
34public:
39 {
40 std::optional<float> shutterOpenTime;
41 std::optional<float> shutterCloseTime;
42 std::optional<std::array<float, 8>> shutteropening;
43 };
44
45 HDPRMAN_API
46 HdPrmanCamera(SdfPath const& id);
47
48 HDPRMAN_API
49 ~HdPrmanCamera() override;
50
52 HDPRMAN_API
53 void Sync(HdSceneDelegate *sceneDelegate,
54 HdRenderParam *renderParam,
55 HdDirtyBits *dirtyBits) override;
56
58 HDPRMAN_API
61 return _sampleXforms;
62 }
63
64#if HD_API_VERSION < 52
65 float GetLensDistortionK1() const {
66 return _lensDistortionK1;
67 }
68
69 float GetLensDistortionK2() const {
70 return _lensDistortionK2;
71 }
72
73 const GfVec2f &GetLensDistortionCenter() const {
74 return _lensDistortionCenter;
75 }
76
77 float GetLensDistortionAnaSq() const {
78 return _lensDistortionAnaSq;
79 }
80
81 const GfVec2f &GetLensDistortionAsym() const {
82 return _lensDistortionAsym;
83 }
84
85 float GetLensDistortionScale() const {
86 return _lensDistortionScale;
87 }
88#endif
89
124 return _shutterCurve;
125 }
126
127 float GetApertureAngle() const {
128 return _apertureAngle;
129 }
130
131 float GetApertureDensity() const {
132 return _apertureAngle;
133 }
134
135 float GetApertureNSides() const {
136 return _apertureNSides;
137 }
138
139 float GetApertureRoundness() const {
140 return _apertureRoundness;
141 }
142
143private:
145
146#if HD_API_VERSION < 52
147 float _lensDistortionK1;
148 float _lensDistortionK2;
149 GfVec2f _lensDistortionCenter;
150 float _lensDistortionAnaSq;
151 GfVec2f _lensDistortionAsym;
152 float _lensDistortionScale;
153#endif
154
165 ShutterCurve _shutterCurve;
166
167 float _apertureAngle;
168 float _apertureDensity;
169 int _apertureNSides;
170 float _apertureRoundness;
171};
172
173
174PXR_NAMESPACE_CLOSE_SCOPE
175
176#endif // EXT_RMANPKG_25_0_PLUGIN_RENDERMAN_PLUGIN_HD_PRMAN_CAMERA_H
Basic type for a vector of 2 float components.
Definition: vec2f.h:46
Hydra schema for a camera that pulls the params (see above) during Sync.
Definition: camera.h:87
A representation for cameras that pulls on camera parameters used by Riley cameras.
Definition: camera.h:33
HDPRMAN_API void Sync(HdSceneDelegate *sceneDelegate, HdRenderParam *renderParam, HdDirtyBits *dirtyBits) override
Synchronizes state from the delegate to this object.
HDPRMAN_API HdTimeSampleArray< GfMatrix4d, HDPRMAN_MAX_TIME_SAMPLES > const & GetTimeSampleXforms() const
Returns the time sampled xforms that were queried during Sync.
Definition: camera.h:60
const ShutterCurve & GetShutterCurve() const
Get the shutter curve of the camera.
Definition: camera.h:123
See GetShutterCurve() below for a description of what these values represent.
Definition: camera.h:39
The HdRenderParam is an opaque (to core Hydra) handle, to an object that is obtained from the render ...
Adapter class providing data exchange with the client scene graph.
A path value used to locate objects in layers or scenegraphs.
Definition: path.h:274
An array of a value sampled over time, in struct-of-arrays layout.