fixed stitching module link error on Windows
This commit is contained in:
parent
f2da701723
commit
b0fe660d5b
@ -50,12 +50,13 @@ namespace cv
|
|||||||
|
|
||||||
// See "Construction of Panoramic Image Mosaics with Global and Local Alignment"
|
// See "Construction of Panoramic Image Mosaics with Global and Local Alignment"
|
||||||
// by Heung-Yeung Shum and Richard Szeliski.
|
// by Heung-Yeung Shum and Richard Szeliski.
|
||||||
void focalsFromHomography(const Mat &H, double &f0, double &f1, bool &f0_ok, bool &f1_ok);
|
void CV_EXPORTS focalsFromHomography(const Mat &H, double &f0, double &f1, bool &f0_ok, bool &f1_ok);
|
||||||
|
|
||||||
void estimateFocal(const std::vector<ImageFeatures> &features, const std::vector<MatchesInfo> &pairwise_matches,
|
void CV_EXPORTS estimateFocal(const std::vector<ImageFeatures> &features,
|
||||||
std::vector<double> &focals);
|
const std::vector<MatchesInfo> &pairwise_matches,
|
||||||
|
std::vector<double> &focals);
|
||||||
|
|
||||||
bool calibrateRotatingCamera(const std::vector<Mat> &Hs, Mat &K);
|
bool CV_EXPORTS calibrateRotatingCamera(const std::vector<Mat> &Hs, Mat &K);
|
||||||
|
|
||||||
} // namespace cv
|
} // namespace cv
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ namespace cv
|
|||||||
{
|
{
|
||||||
|
|
||||||
// Simple blender which puts one image over another
|
// Simple blender which puts one image over another
|
||||||
class Blender
|
class CV_EXPORTS Blender
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum { NO, FEATHER, MULTI_BAND };
|
enum { NO, FEATHER, MULTI_BAND };
|
||||||
@ -65,7 +65,7 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class FeatherBlender : public Blender
|
class CV_EXPORTS FeatherBlender : public Blender
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FeatherBlender(float sharpness = 0.02f) { setSharpness(sharpness); }
|
FeatherBlender(float sharpness = 0.02f) { setSharpness(sharpness); }
|
||||||
@ -83,7 +83,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class MultiBandBlender : public Blender
|
class CV_EXPORTS MultiBandBlender : public Blender
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MultiBandBlender(int try_gpu = false, int num_bands = 5);
|
MultiBandBlender(int try_gpu = false, int num_bands = 5);
|
||||||
@ -106,16 +106,16 @@ private:
|
|||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
// Auxiliary functions
|
// Auxiliary functions
|
||||||
|
|
||||||
void normalizeUsingWeightMap(const Mat& weight, Mat& src);
|
void CV_EXPORTS normalizeUsingWeightMap(const Mat& weight, Mat& src);
|
||||||
|
|
||||||
void createWeightMap(const Mat& mask, float sharpness, Mat& weight);
|
void CV_EXPORTS createWeightMap(const Mat& mask, float sharpness, Mat& weight);
|
||||||
|
|
||||||
void createLaplacePyr(const Mat &img, int num_levels, std::vector<Mat>& pyr);
|
void CV_EXPORTS createLaplacePyr(const Mat &img, int num_levels, std::vector<Mat>& pyr);
|
||||||
|
|
||||||
void createLaplacePyrGpu(const Mat &img, int num_levels, std::vector<Mat>& pyr);
|
void CV_EXPORTS createLaplacePyrGpu(const Mat &img, int num_levels, std::vector<Mat>& pyr);
|
||||||
|
|
||||||
// Restores source image
|
// Restores source image
|
||||||
void restoreImageFromLaplacePyr(std::vector<Mat>& pyr);
|
void CV_EXPORTS restoreImageFromLaplacePyr(std::vector<Mat>& pyr);
|
||||||
|
|
||||||
} // namespace cv
|
} // namespace cv
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@
|
|||||||
namespace cv
|
namespace cv
|
||||||
{
|
{
|
||||||
|
|
||||||
struct CameraParams
|
struct CV_EXPORTS CameraParams
|
||||||
{
|
{
|
||||||
CameraParams();
|
CameraParams();
|
||||||
CameraParams(const CameraParams& other);
|
CameraParams(const CameraParams& other);
|
||||||
|
@ -47,7 +47,7 @@
|
|||||||
namespace cv
|
namespace cv
|
||||||
{
|
{
|
||||||
|
|
||||||
class ExposureCompensator
|
class CV_EXPORTS ExposureCompensator
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum { NO, GAIN, GAIN_BLOCKS };
|
enum { NO, GAIN, GAIN_BLOCKS };
|
||||||
@ -61,7 +61,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class NoExposureCompensator : public ExposureCompensator
|
class CV_EXPORTS NoExposureCompensator : public ExposureCompensator
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void feed(const std::vector<Point> &/*corners*/, const std::vector<Mat> &/*images*/,
|
void feed(const std::vector<Point> &/*corners*/, const std::vector<Mat> &/*images*/,
|
||||||
@ -70,7 +70,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class GainCompensator : public ExposureCompensator
|
class CV_EXPORTS GainCompensator : public ExposureCompensator
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void feed(const std::vector<Point> &corners, const std::vector<Mat> &images,
|
void feed(const std::vector<Point> &corners, const std::vector<Mat> &images,
|
||||||
@ -83,7 +83,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class BlocksGainCompensator : public ExposureCompensator
|
class CV_EXPORTS BlocksGainCompensator : public ExposureCompensator
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
BlocksGainCompensator(int bl_width = 32, int bl_height = 32)
|
BlocksGainCompensator(int bl_width = 32, int bl_height = 32)
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
namespace cv
|
namespace cv
|
||||||
{
|
{
|
||||||
|
|
||||||
struct ImageFeatures
|
struct CV_EXPORTS ImageFeatures
|
||||||
{
|
{
|
||||||
int img_idx;
|
int img_idx;
|
||||||
cv::Size img_size;
|
cv::Size img_size;
|
||||||
@ -57,7 +57,7 @@ struct ImageFeatures
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class FeaturesFinder
|
class CV_EXPORTS FeaturesFinder
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~FeaturesFinder() {}
|
virtual ~FeaturesFinder() {}
|
||||||
@ -70,7 +70,7 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class SurfFeaturesFinder : public FeaturesFinder
|
class CV_EXPORTS SurfFeaturesFinder : public FeaturesFinder
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SurfFeaturesFinder(bool try_use_gpu = true, double hess_thresh = 300.0,
|
SurfFeaturesFinder(bool try_use_gpu = true, double hess_thresh = 300.0,
|
||||||
@ -86,7 +86,7 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct MatchesInfo
|
struct CV_EXPORTS MatchesInfo
|
||||||
{
|
{
|
||||||
MatchesInfo();
|
MatchesInfo();
|
||||||
MatchesInfo(const MatchesInfo &other);
|
MatchesInfo(const MatchesInfo &other);
|
||||||
@ -101,7 +101,7 @@ struct MatchesInfo
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class FeaturesMatcher
|
class CV_EXPORTS FeaturesMatcher
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~FeaturesMatcher() {}
|
virtual ~FeaturesMatcher() {}
|
||||||
@ -124,7 +124,7 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class BestOf2NearestMatcher : public FeaturesMatcher
|
class CV_EXPORTS BestOf2NearestMatcher : public FeaturesMatcher
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
BestOf2NearestMatcher(bool try_use_gpu = true, float match_conf = 0.55f, int num_matches_thresh1 = 6,
|
BestOf2NearestMatcher(bool try_use_gpu = true, float match_conf = 0.55f, int num_matches_thresh1 = 6,
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
namespace cv
|
namespace cv
|
||||||
{
|
{
|
||||||
|
|
||||||
class Estimator
|
class CV_EXPORTS Estimator
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void operator ()(const std::vector<ImageFeatures> &features, const std::vector<MatchesInfo> &pairwise_matches,
|
void operator ()(const std::vector<ImageFeatures> &features, const std::vector<MatchesInfo> &pairwise_matches,
|
||||||
@ -65,7 +65,7 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class HomographyBasedEstimator : public Estimator
|
class CV_EXPORTS HomographyBasedEstimator : public Estimator
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
HomographyBasedEstimator() : is_focals_estimated_(false) {}
|
HomographyBasedEstimator() : is_focals_estimated_(false) {}
|
||||||
@ -79,7 +79,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class BundleAdjuster : public Estimator
|
class CV_EXPORTS BundleAdjuster : public Estimator
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum { NO, RAY_SPACE, FOCAL_RAY_SPACE };
|
enum { NO, RAY_SPACE, FOCAL_RAY_SPACE };
|
||||||
@ -108,21 +108,21 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void waveCorrect(std::vector<Mat> &rmats);
|
void CV_EXPORTS waveCorrect(std::vector<Mat> &rmats);
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
// Auxiliary functions
|
// Auxiliary functions
|
||||||
|
|
||||||
// Returns matches graph representation in DOT language
|
// Returns matches graph representation in DOT language
|
||||||
std::string matchesGraphAsString(std::vector<std::string> &pathes, std::vector<MatchesInfo> &pairwise_matches,
|
std::string CV_EXPORTS matchesGraphAsString(std::vector<std::string> &pathes, std::vector<MatchesInfo> &pairwise_matches,
|
||||||
float conf_threshold);
|
float conf_threshold);
|
||||||
|
|
||||||
std::vector<int> leaveBiggestComponent(std::vector<ImageFeatures> &features, std::vector<MatchesInfo> &pairwise_matches,
|
std::vector<int> CV_EXPORTS leaveBiggestComponent(std::vector<ImageFeatures> &features, std::vector<MatchesInfo> &pairwise_matches,
|
||||||
float conf_threshold);
|
float conf_threshold);
|
||||||
|
|
||||||
void findMaxSpanningTree(int num_images, const std::vector<MatchesInfo> &pairwise_matches,
|
void CV_EXPORTS findMaxSpanningTree(int num_images, const std::vector<MatchesInfo> &pairwise_matches,
|
||||||
Graph &span_tree, std::vector<int> ¢ers);
|
Graph &span_tree, std::vector<int> ¢ers);
|
||||||
|
|
||||||
} // namespace cv
|
} // namespace cv
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@
|
|||||||
namespace cv
|
namespace cv
|
||||||
{
|
{
|
||||||
|
|
||||||
class SeamFinder
|
class CV_EXPORTS SeamFinder
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum { NO, VORONOI, GC_COLOR, GC_COLOR_GRAD };
|
enum { NO, VORONOI, GC_COLOR, GC_COLOR_GRAD };
|
||||||
@ -59,14 +59,14 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class NoSeamFinder : public SeamFinder
|
class CV_EXPORTS NoSeamFinder : public SeamFinder
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void find(const std::vector<Mat>&, const std::vector<Point>&, std::vector<Mat>&) {}
|
void find(const std::vector<Mat>&, const std::vector<Point>&, std::vector<Mat>&) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class PairwiseSeamFinder : public SeamFinder
|
class CV_EXPORTS PairwiseSeamFinder : public SeamFinder
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual void find(const std::vector<Mat> &src, const std::vector<Point> &corners,
|
virtual void find(const std::vector<Mat> &src, const std::vector<Point> &corners,
|
||||||
@ -81,14 +81,14 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class VoronoiSeamFinder : public PairwiseSeamFinder
|
class CV_EXPORTS VoronoiSeamFinder : public PairwiseSeamFinder
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
void findInPair(size_t first, size_t second, Rect roi);
|
void findInPair(size_t first, size_t second, Rect roi);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class GraphCutSeamFinder : public SeamFinder
|
class CV_EXPORTS GraphCutSeamFinder : public SeamFinder
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum { COST_COLOR, COST_COLOR_GRAD };
|
enum { COST_COLOR, COST_COLOR_GRAD };
|
||||||
|
@ -59,7 +59,7 @@
|
|||||||
namespace cv
|
namespace cv
|
||||||
{
|
{
|
||||||
|
|
||||||
class DisjointSets
|
class CV_EXPORTS DisjointSets
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DisjointSets(int elem_count = 0) { createOneElemSets(elem_count); }
|
DisjointSets(int elem_count = 0) { createOneElemSets(elem_count); }
|
||||||
@ -76,7 +76,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct GraphEdge
|
struct CV_EXPORTS GraphEdge
|
||||||
{
|
{
|
||||||
GraphEdge(int from, int to, float weight)
|
GraphEdge(int from, int to, float weight)
|
||||||
: from(from), to(to), weight(weight) {}
|
: from(from), to(to), weight(weight) {}
|
||||||
@ -88,7 +88,7 @@ struct GraphEdge
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class Graph
|
class CV_EXPORTS Graph
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Graph(int num_vertices = 0) { create(num_vertices); }
|
Graph(int num_vertices = 0) { create(num_vertices); }
|
||||||
@ -106,13 +106,13 @@ private:
|
|||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
// Auxiliary functions
|
// Auxiliary functions
|
||||||
|
|
||||||
bool overlapRoi(Point tl1, Point tl2, Size sz1, Size sz2, Rect &roi);
|
bool CV_EXPORTS overlapRoi(Point tl1, Point tl2, Size sz1, Size sz2, Rect &roi);
|
||||||
Rect resultRoi(const std::vector<Point> &corners, const std::vector<Mat> &images);
|
Rect CV_EXPORTS resultRoi(const std::vector<Point> &corners, const std::vector<Mat> &images);
|
||||||
Rect resultRoi(const std::vector<Point> &corners, const std::vector<Size> &sizes);
|
Rect CV_EXPORTS resultRoi(const std::vector<Point> &corners, const std::vector<Size> &sizes);
|
||||||
Point resultTl(const std::vector<Point> &corners);
|
Point CV_EXPORTS resultTl(const std::vector<Point> &corners);
|
||||||
|
|
||||||
// Returns random 'count' element subset of the {0,1,...,size-1} set
|
// Returns random 'count' element subset of the {0,1,...,size-1} set
|
||||||
void selectRandomSubset(int count, int size, std::vector<int> &subset);
|
void CV_EXPORTS selectRandomSubset(int count, int size, std::vector<int> &subset);
|
||||||
|
|
||||||
} // namespace cv
|
} // namespace cv
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
namespace cv
|
namespace cv
|
||||||
{
|
{
|
||||||
|
|
||||||
class Warper
|
class CV_EXPORTS Warper
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum { PLANE, CYLINDRICAL, SPHERICAL };
|
enum { PLANE, CYLINDRICAL, SPHERICAL };
|
||||||
@ -62,7 +62,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct ProjectorBase
|
struct CV_EXPORTS ProjectorBase
|
||||||
{
|
{
|
||||||
void setTransformation(const Mat& R);
|
void setTransformation(const Mat& R);
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ struct ProjectorBase
|
|||||||
|
|
||||||
|
|
||||||
template <class P>
|
template <class P>
|
||||||
class WarperBase : public Warper
|
class CV_EXPORTS WarperBase : public Warper
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual Point warp(const Mat &src, float focal, const Mat &R, Mat &dst,
|
virtual Point warp(const Mat &src, float focal, const Mat &R, Mat &dst,
|
||||||
@ -96,7 +96,7 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct PlaneProjector : ProjectorBase
|
struct CV_EXPORTS PlaneProjector : ProjectorBase
|
||||||
{
|
{
|
||||||
void mapForward(float x, float y, float &u, float &v);
|
void mapForward(float x, float y, float &u, float &v);
|
||||||
void mapBackward(float u, float v, float &x, float &y);
|
void mapBackward(float u, float v, float &x, float &y);
|
||||||
@ -105,7 +105,7 @@ struct PlaneProjector : ProjectorBase
|
|||||||
|
|
||||||
|
|
||||||
// Projects image onto z = plane_dist plane
|
// Projects image onto z = plane_dist plane
|
||||||
class PlaneWarper : public WarperBase<PlaneProjector>
|
class CV_EXPORTS PlaneWarper : public WarperBase<PlaneProjector>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PlaneWarper(float plane_dist = 1.f, float scale = 1.f)
|
PlaneWarper(float plane_dist = 1.f, float scale = 1.f)
|
||||||
@ -119,7 +119,7 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class PlaneWarperGpu : public PlaneWarper
|
class CV_EXPORTS PlaneWarperGpu : public PlaneWarper
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PlaneWarperGpu(float plane_dist = 1.f, float scale = 1.f) : PlaneWarper(plane_dist, scale) {}
|
PlaneWarperGpu(float plane_dist = 1.f, float scale = 1.f) : PlaneWarper(plane_dist, scale) {}
|
||||||
@ -131,7 +131,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct SphericalProjector : ProjectorBase
|
struct CV_EXPORTS SphericalProjector : ProjectorBase
|
||||||
{
|
{
|
||||||
void mapForward(float x, float y, float &u, float &v);
|
void mapForward(float x, float y, float &u, float &v);
|
||||||
void mapBackward(float u, float v, float &x, float &y);
|
void mapBackward(float u, float v, float &x, float &y);
|
||||||
@ -140,7 +140,7 @@ struct SphericalProjector : ProjectorBase
|
|||||||
|
|
||||||
// Projects image onto unit sphere with origin at (0, 0, 0).
|
// Projects image onto unit sphere with origin at (0, 0, 0).
|
||||||
// Poles are located at (0, -1, 0) and (0, 1, 0) points.
|
// Poles are located at (0, -1, 0) and (0, 1, 0) points.
|
||||||
class SphericalWarper : public WarperBase<SphericalProjector>
|
class CV_EXPORTS SphericalWarper : public WarperBase<SphericalProjector>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SphericalWarper(float scale = 300.f) { projector_.scale = scale; }
|
SphericalWarper(float scale = 300.f) { projector_.scale = scale; }
|
||||||
@ -150,7 +150,7 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class SphericalWarperGpu : public SphericalWarper
|
class CV_EXPORTS SphericalWarperGpu : public SphericalWarper
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SphericalWarperGpu(float scale = 300.f) : SphericalWarper(scale) {}
|
SphericalWarperGpu(float scale = 300.f) : SphericalWarper(scale) {}
|
||||||
@ -162,7 +162,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct CylindricalProjector : ProjectorBase
|
struct CV_EXPORTS CylindricalProjector : ProjectorBase
|
||||||
{
|
{
|
||||||
void mapForward(float x, float y, float &u, float &v);
|
void mapForward(float x, float y, float &u, float &v);
|
||||||
void mapBackward(float u, float v, float &x, float &y);
|
void mapBackward(float u, float v, float &x, float &y);
|
||||||
@ -170,7 +170,7 @@ struct CylindricalProjector : ProjectorBase
|
|||||||
|
|
||||||
|
|
||||||
// Projects image onto x * x + z * z = 1 cylinder
|
// Projects image onto x * x + z * z = 1 cylinder
|
||||||
class CylindricalWarper : public WarperBase<CylindricalProjector>
|
class CV_EXPORTS CylindricalWarper : public WarperBase<CylindricalProjector>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CylindricalWarper(float scale = 300.f) { projector_.scale = scale; }
|
CylindricalWarper(float scale = 300.f) { projector_.scale = scale; }
|
||||||
@ -183,7 +183,7 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class CylindricalWarperGpu : public CylindricalWarper
|
class CV_EXPORTS CylindricalWarperGpu : public CylindricalWarper
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CylindricalWarperGpu(float scale = 300.f) : CylindricalWarper(scale) {}
|
CylindricalWarperGpu(float scale = 300.f) : CylindricalWarper(scale) {}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user