Choreonoid  1.5
SceneDrawables.h
Go to the documentation of this file.
1 
6 #ifndef CNOID_UTIL_SCENE_DRAWABLES_H
7 #define CNOID_UTIL_SCENE_DRAWABLES_H
8 
9 #include "SceneGraph.h"
10 #include "Image.h"
11 #include <boost/shared_ptr.hpp>
12 #include <boost/variant.hpp>
13 #include "exportdecl.h"
14 
15 namespace cnoid {
16 
18 {
19 public:
20  SgMaterial();
21  SgMaterial(const SgMaterial& org);
22  virtual SgObject* clone(SgCloneMap& cloneMap) const;
23 
24  float ambientIntensity() const { return ambientIntensity_; }
25  void setAmbientIntensity(float intensity) { ambientIntensity_ = intensity; }
26  const Vector3f& diffuseColor() const { return diffuseColor_; }
27  template<typename Derived> void setDiffuseColor(const Eigen::MatrixBase<Derived>& c) {
28  diffuseColor_ = c.template cast<Vector3f::Scalar>(); }
29  const Vector3f& emissiveColor() const { return emissiveColor_; }
30  template<typename Derived> void setEmissiveColor(const Eigen::MatrixBase<Derived>& c) {
31  emissiveColor_ = c.template cast<Vector3f::Scalar>(); }
32  float shininess() const { return shininess_; }
33  void setShininess(float s) { shininess_ = s; }
34  const Vector3f& specularColor() const { return specularColor_; }
35  template<typename Derived> void setSpecularColor(const Eigen::MatrixBase<Derived>& c) {
36  specularColor_ = c.template cast<Vector3f::Scalar>(); }
37  float transparency() const { return transparency_; }
38  void setTransparency(float t) { transparency_ = t; }
39 
40 private:
41  Vector3f diffuseColor_;
42  Vector3f emissiveColor_;
43  Vector3f specularColor_;
44  float ambientIntensity_;
45  float transparency_;
46  float shininess_;
47 };
49 
50 
52 {
53 public:
54  SgImage();
55  SgImage(const Image& image);
56  SgImage(boost::shared_ptr<Image> sharedImage);
57  SgImage(const SgImage& org);
58  virtual SgObject* clone(SgCloneMap& cloneMap) const;
59 
60  Image& image();
61  const Image& image() const { return *image_; }
62  const Image& constImage() const { return *image_; }
63 
64  bool empty() const { return image_->empty(); }
65 
66  unsigned char* pixels();
67  const unsigned char* pixels() const { return image_->pixels(); }
68  const unsigned char* constPixels() const { return image_->pixels(); }
69 
70  int width() const { return image_->width(); }
71  int height() const { return image_->height(); }
72  int numComponents() const { return image_->numComponents(); }
73 
74  void setSize(int width, int height, int nComponents);
75  void setSize(int width, int height);
76 
77 private:
78  boost::shared_ptr<Image> image_;
79 };
81 
82 
84 {
85 public:
87 
90  virtual SgObject* clone(SgCloneMap& cloneMap) const;
91 
92  const Vector2& center() const { return center_; }
93  template<typename Derived> void setCenter(const Eigen::MatrixBase<Derived>& c) {
94  center_ = c.template cast<Vector3::Scalar>(); }
95  double rotation() const { return rotation_; }
96  void setRotation(double rotation) { rotation_ = rotation; }
97  const Vector2& scale() const { return scale_; }
98  template<typename Derived> void setScale(const Eigen::MatrixBase<Derived>& c) {
99  scale_ = c.template cast<Vector2::Scalar>(); }
100  const Vector2& translation() const { return translation_; }
101  template<typename Derived> void setTranslation(const Eigen::MatrixBase<Derived>& c) {
102  translation_ = c.template cast<Vector3::Scalar>(); }
103 
104 private:
105  Vector2 center_;
106  Vector2 scale_;
107  Vector2 translation_;
108  double rotation_;
109 };
111 
112 
114 {
115 public:
116  SgTexture();
117  SgTexture(const SgTexture& org, SgCloneMap& cloneMap);
118  virtual SgObject* clone(SgCloneMap& cloneMap) const;
119  virtual int numChildObjects() const;
120  virtual SgObject* childObject(int index);
121 
122  SgImage* image() { return image_; }
123  const SgImage* image() const { return image_; }
124  SgImage* setImage(SgImage* image);
125  SgImage* getOrCreateImage();
126 
127  bool repeatS() const { return repeatS_; }
128  bool repeatT() const { return repeatT_; }
129  void setRepeat(bool s, bool t) { repeatS_ = s; repeatT_ = t; }
130 
131  SgTextureTransform* textureTransform() { return textureTransform_; }
132  const SgTextureTransform* textureTransform() const { return textureTransform_; }
133  SgTextureTransform* setTextureTransform(SgTextureTransform* textureTransform);
134 
135 private:
136  SgImagePtr image_;
137  SgTextureTransformPtr textureTransform_;
138  bool repeatS_;
139  bool repeatT_;
140 };
142 
143 
144 template<class T, class Alloc = std::allocator<T> > class SgVectorArray : public SgObject
145 {
146  typedef std::vector<T> Container;
147 
148 public:
149  typedef typename Container::iterator iterator;
150  typedef typename Container::const_iterator const_iterator;
151  typedef typename Container::size_type size_type;
152  typedef typename Container::value_type value_type;
153  typedef typename Container::reference reference;
154  typedef typename Container::const_reference const_reference;
155  typedef typename Container::pointer pointer;
156  typedef typename Container::const_pointer const_pointer;
157  typedef typename T::Scalar Scalar;
158 
160 
161  SgVectorArray(size_t size) : values(size) { }
162 
163  SgVectorArray(const std::vector<T>& org) : values(org) { }
164 
165  template<class Element>
166  SgVectorArray(const std::vector<Element>& org) {
167  values.reserve(org.size());
168  for(typename std::vector<Element>::const_iterator p = org.begin(); p != org.end(); ++p){
169  values.push_back(p->template cast<typename T::Scalar>());
170  }
171  }
172 
173  SgVectorArray(const SgVectorArray& org) : SgObject(org), values(org.values) { }
174 
175  virtual SgObject* clone(SgCloneMap& cloneMap) const { return new SgVectorArray(*this); }
176 
178  values = rhs.values;
179  return *this;
180  }
181  iterator begin() { return values.begin(); }
182  const_iterator begin() const { return values.begin(); }
183  iterator end() { return values.end(); }
184  const_iterator end() const { return values.end(); }
185  size_type size() const { return values.size(); }
186  void resize(size_type s) { values.resize(s); }
187  void resize(size_type s, const T& v) { values.resize(s, v); }
188  bool empty() const { return values.empty(); }
189  void reserve(size_type s) { values.reserve(s); }
190  T& operator[](size_type i) { return values[i]; }
191  const T& operator[](size_type i) const { return values[i]; }
192  T& at(size_type i) { return values[i]; }
193  const T& at(size_type i) const { return values[i]; }
194  T& front() { return values.front(); }
195  const T& front() const { return values.front(); }
196  T& back() { return values.back(); }
197  const T& back() const { return values.back(); }
198  Scalar* data() { return values.front().data(); }
199  const Scalar* data() const { return values.front().data(); }
200  void push_back(const T& v) { values.push_back(v); }
201  void pop_back() { values.pop_back(); }
202  iterator erase(iterator p) { return values.erase(p); }
203  iterator erase(iterator first, iterator last) { return values.erase(first, last); }
204  void clear() { values.clear(); }
205 
206 private:
207  Container values;
208 };
209 
212 
215 
218 
221 
222 typedef std::vector<int> SgIndexArray;
223 
224 
226 {
227 protected:
228  SgMeshBase();
229  SgMeshBase(const SgMeshBase& org, SgCloneMap& cloneMap);
230 
231 public:
232  virtual int numChildObjects() const;
233  virtual SgObject* childObject(int index);
234  virtual const BoundingBox& boundingBox() const;
235  virtual void updateBoundingBox();
236 
237  bool hasVertices() const { return (vertices_ && !vertices_->empty()); }
238  SgVertexArray* vertices() { return vertices_; }
239  const SgVertexArray* vertices() const { return vertices_; }
240  SgVertexArray* setVertices(SgVertexArray* vertices);
241  SgVertexArray* getOrCreateVertices();
242 
243  bool hasNormals() const { return (normals_ && !normals_->empty()); }
244  SgNormalArray* normals() { return normals_; }
245  const SgNormalArray* normals() const { return normals_; }
246  SgNormalArray* setNormals(SgNormalArray* normals);
247  SgNormalArray* getOrCreateNormals();
248 
249  bool hasColors() const { return (colors_ && !colors_->empty()); }
250  SgColorArray* colors() { return colors_; }
251  const SgColorArray* colors() const { return colors_; }
252  SgColorArray* setColors(SgColorArray* colors);
253  SgColorArray* getOrCreateColors();
254 
255  bool hasTexCoords() const { return (texCoords_ && !texCoords_->empty()); }
256  SgTexCoordArray* texCoords() { return texCoords_; }
257  const SgTexCoordArray* texCoords() const { return texCoords_; }
258  SgTexCoordArray* setTexCoords(SgTexCoordArray* texCoords);
259 
263  const SgIndexArray& normalIndices() const { return normalIndices_; }
264  SgIndexArray& normalIndices() { return normalIndices_; }
265 
266  const SgIndexArray& colorIndices() const { return colorIndices_; }
267  SgIndexArray& colorIndices() { return colorIndices_; }
268 
269  const SgIndexArray& texCoordIndices() const { return texCoordIndices_; }
270  SgIndexArray& texCoordIndices() { return texCoordIndices_; }
271 
272  bool isSolid() const { return isSolid_; }
273  void setSolid(bool on) { isSolid_ = on; }
274 
275  protected:
277 
278 private:
279  SgVertexArrayPtr vertices_;
280  SgNormalArrayPtr normals_;
281  SgIndexArray normalIndices_;
282  SgColorArrayPtr colors_;
283  SgIndexArray colorIndices_;
284  SgTexCoordArrayPtr texCoords_;
285  SgIndexArray texCoordIndices_;
286  bool isSolid_;
287 };
289 
290 
292 {
293 public:
294  SgMesh();
295  virtual SgObject* clone(SgCloneMap& cloneMap) const;
296 
297  virtual void updateBoundingBox();
298 
302  const SgIndexArray& triangleVertices() const { return triangleVertices_; }
303  SgIndexArray& triangleVertices() { return triangleVertices_; }
304 
305  int numTriangles() const { return triangleVertices_.size() / 3; }
306  void setNumTriangles(int n) { triangleVertices_.resize(n * 3); }
307  void reserveNumTriangles(int n) { triangleVertices_.reserve(n * 3); }
308 
309  typedef Eigen::Map<Array3i> TriangleRef;
310  TriangleRef triangle(int index){
311  return TriangleRef(&triangleVertices_[index * 3]);
312  }
313 
314  typedef Eigen::Map<const Array3i> ConstTriangleRef;
315  ConstTriangleRef triangle(int index) const {
316  return ConstTriangleRef(&triangleVertices_[index * 3]);
317  }
318 
319  void setTriangle(int index, int v0, int v1, int v2){
320  const int i = index * 3;
321  triangleVertices_[i+0] = v0;
322  triangleVertices_[i+1] = v1;
323  triangleVertices_[i+2] = v2;
324  }
325 
326  TriangleRef addTriangle(){
327  const int s = triangleVertices_.size();
328  triangleVertices_.resize(s + 3);
329  return TriangleRef(&triangleVertices_[s]);
330  }
331 
332  void addTriangle(int v0, int v1, int v2){
333  triangleVertices_.push_back(v0);
334  triangleVertices_.push_back(v1);
335  triangleVertices_.push_back(v2);
336  }
337 
338  enum PrimitiveType { MESH = 0, BOX, SPHERE, CYLINDER, CONE };
339 
340  class Mesh { }; // defined for no primitive information
341 
342  class Box {
343  public:
344  Box() { }
345  Box(Vector3 size) : size(size) { }
347  };
348  class Sphere {
349  public:
350  Sphere() { }
351  Sphere(double radius) : radius(radius) { }
352  double radius;
353  };
354  class Cylinder {
355  public:
356  Cylinder() { }
357  Cylinder(double radius, double height) :
358  radius(radius), height(height), bottom(true), side(true), top(true) { }
359  double radius;
360  double height;
361  bool bottom;
362  bool side;
363  bool top;
364  };
365  class Cone {
366  public:
367  Cone() { }
368  Cone(double radius, double height) :
369  radius(radius), height(height), bottom(true), side(true) { }
370  double radius;
371  double height;
372  bool bottom;
373  bool side;
374  };
375 
376  typedef boost::variant<Mesh, Box, Sphere, Cylinder, Cone> Primitive;
377 
378  const int primitiveType() const { return primitive_.which(); }
379  template<class TPrimitive> const TPrimitive& primitive() const { return boost::get<TPrimitive>(primitive_); }
380  template<class TPrimitive> void setPrimitive(const TPrimitive& prim) { primitive_ = prim; }
381 
382 protected:
383  SgMesh(const SgMesh& org, SgCloneMap& cloneMap);
384 
385 private:
386  SgIndexArray triangleVertices_;
387  Primitive primitive_;
388 };
390 
391 
393 {
394 public:
395  SgPolygonMesh();
396  virtual SgObject* clone(SgCloneMap& cloneMap) const;
397 
398  virtual void updateBoundingBox();
399 
407  SgIndexArray& polygonVertices() { return polygonVertices_; }
408  const SgIndexArray& polygonVertices() const { return polygonVertices_; }
409 
410 protected:
411  SgPolygonMesh(const SgPolygonMesh& org, SgCloneMap& cloneMap);
412 
413 private:
414  SgIndexArray polygonVertices_;
415 };
416 
418 
419 
421 {
422 public:
423  SgShape();
424  virtual SgObject* clone(SgCloneMap& cloneMap) const;
425  virtual int numChildObjects() const;
426  virtual SgObject* childObject(int index);
427  virtual void accept(SceneVisitor& visitor);
428  virtual const BoundingBox& boundingBox() const;
429 
430  SgMesh* mesh() { return mesh_; }
431  const SgMesh* mesh() const { return mesh_; }
432  SgMesh* setMesh(SgMesh* mesh);
433  SgMesh* getOrCreateMesh();
434 
435  SgMaterial* material() { return material_; }
436  const SgMaterial* material() const { return material_; }
437  SgMaterial* setMaterial(SgMaterial* material);
438  SgMaterial* getOrCreateMaterial();
439 
440  SgTexture* texture() { return texture_; }
441  const SgTexture* texture() const { return texture_; }
442  SgTexture* setTexture(SgTexture* texture);
443  SgTexture* getOrCreateTexture();
444 
445 protected:
446  SgShape(const SgShape& org, SgCloneMap& cloneMap);
447 
448 private:
449  SgMeshPtr mesh_;
450  SgMaterialPtr material_;
451  SgTexturePtr texture_;
452 };
454 
455 
456 class CNOID_EXPORT SgPlot : public SgNode
457 {
458 public:
459  SgPlot();
460 
461  virtual int numChildObjects() const;
462  virtual SgObject* childObject(int index);
463  virtual const BoundingBox& boundingBox() const;
464  void updateBoundingBox();
465 
466  bool hasVertices() const { return (vertices_ && !vertices_->empty()); }
467  SgVertexArray* vertices() { return vertices_; }
468  const SgVertexArray* vertices() const { return vertices_; }
469  SgVertexArray* setVertices(SgVertexArray* vertices);
470  SgVertexArray* getOrCreateVertices();
471 
472  SgMaterial* material() { return material_; }
473  const SgMaterial* material() const { return material_; }
474  SgMaterial* setMaterial(SgMaterial* material);
475 
476  bool hasNormals() const { return (normals_ && !normals_->empty()); }
477  SgNormalArray* normals() { return normals_; }
478  const SgNormalArray* normals() const { return normals_; }
479  SgNormalArray* setNormals(SgNormalArray* normals);
480  SgVertexArray* getOrCreateNormals();
481 
482  const SgIndexArray& normalIndices() const { return normalIndices_; }
483  SgIndexArray& normalIndices() { return normalIndices_; }
484 
485  bool hasColors() const { return (colors_ && !colors_->empty()); }
486  SgColorArray* colors() { return colors_; }
487  const SgColorArray* colors() const { return colors_; }
488  SgColorArray* setColors(SgColorArray* colors);
489  SgColorArray* getOrCreateColors();
490 
491  const SgIndexArray& colorIndices() const { return colorIndices_; }
492  SgIndexArray& colorIndices() { return colorIndices_; }
493 
494 protected:
495  SgPlot(const SgPlot& org, SgCloneMap& cloneMap);
496 
497 private:
498  BoundingBox bbox;
499  SgVertexArrayPtr vertices_;
500  SgNormalArrayPtr normals_;
501  SgIndexArray normalIndices_;
502  SgColorArrayPtr colors_;
503  SgIndexArray colorIndices_;
504  SgMaterialPtr material_;
505 };
507 
508 
510 {
511 public:
512  SgPointSet();
513  virtual SgObject* clone(SgCloneMap& cloneMap) const;
514  virtual void accept(SceneVisitor& visitor);
515 
516  void setPointSize(double size) { pointSize_ = size; }
517 
521  double pointSize() const { return pointSize_; }
522 
523 protected:
524  SgPointSet(const SgPointSet& org, SgCloneMap& cloneMap);
525 
526 private:
527  double pointSize_;
528 };
530 
531 
533 {
534 public:
535  SgLineSet();
536  virtual SgObject* clone(SgCloneMap& cloneMap) const;
537  virtual void accept(SceneVisitor& visitor);
538 
539  const SgIndexArray& lineVertices() const { return lineVertices_; }
540  SgIndexArray& lineVertices() { return lineVertices_; }
541 
542  int numLines() const { return lineVertices_.size() / 2; }
543  void setNumLines(int n) { lineVertices_.resize(n * 2); }
544  void reserveNumLines(int n) { lineVertices_.reserve(n * 2); }
545 
546  typedef Eigen::Map<Array2i> LineRef;
547  LineRef line(int index){
548  return LineRef(&lineVertices_[index * 2]);
549  }
550 
551  typedef Eigen::Map<const Array2i> ConstLineRef;
552  ConstLineRef line(int index) const {
553  return ConstLineRef(&lineVertices_[index * 2]);
554  }
555 
556  void setLine(int index, int v0, int v1){
557  const int i = index * 2;
558  lineVertices_[i+0] = v0;
559  lineVertices_[i+1] = v1;
560  }
561 
562  LineRef addLine(){
563  const int s = lineVertices_.size();
564  lineVertices_.resize(s + 2);
565  return LineRef(&lineVertices_[s]);
566  }
567 
568  void addLine(int v0, int v1){
569  lineVertices_.push_back(v0);
570  lineVertices_.push_back(v1);
571  }
572 
573  void setLineWidth(float width) { lineWidth_ = width; }
574 
578  float lineWidth() const { return lineWidth_; }
579 
580 protected:
581  SgLineSet(const SgLineSet& org, SgCloneMap& cloneMap);
582 
583 private:
584  SgIndexArray lineVertices_;
585  float lineWidth_;
586 };
588 
589 
591 {
592 public:
593  SgOverlay();
594  ~SgOverlay();
595 
596  virtual SgObject* clone(SgCloneMap& cloneMap) const;
597  virtual void accept(SceneVisitor& visitor);
598 
599  struct ViewVolume {
600  double left;
601  double right;
602  double bottom;
603  double top;
604  double zNear;
605  double zFar;
606  };
607 
608  virtual void calcViewVolume(double viewportWidth, double viewportHeight, ViewVolume& io_volume);
609 
610 protected:
611  SgOverlay(const SgOverlay& org, SgCloneMap& cloneMap);
612 };
613 
614 }
615 
616 #endif
SgVectorArray()
Definition: SceneDrawables.h:159
int width() const
Definition: SceneDrawables.h:70
ref_ptr< SgPolygonMesh > SgPolygonMeshPtr
Definition: SceneDrawables.h:417
ref_ptr< SgMesh > SgMeshPtr
Definition: SceneDrawables.h:389
SgColorArray * colors()
Definition: SceneDrawables.h:486
void reserveNumLines(int n)
Definition: SceneDrawables.h:544
ref_ptr< SgMaterial > SgMaterialPtr
Definition: SceneDrawables.h:48
SgMaterial * material()
Definition: SceneDrawables.h:435
Container::value_type value_type
Definition: SceneDrawables.h:152
bool bottom
Definition: SceneDrawables.h:372
Definition: SceneDrawables.h:365
float shininess() const
Definition: SceneDrawables.h:32
const SgTexture * texture() const
Definition: SceneDrawables.h:441
ref_ptr< SgColorArray > SgColorArrayPtr
Definition: SceneDrawables.h:217
const SgMaterial * material() const
Definition: SceneDrawables.h:436
double radius
Definition: SceneDrawables.h:370
const unsigned char * pixels() const
Definition: SceneDrawables.h:67
const Vector3f & emissiveColor() const
Definition: SceneDrawables.h:29
const SgTextureTransform * textureTransform() const
Definition: SceneDrawables.h:132
Definition: SceneDrawables.h:291
Definition: SceneGraph.h:142
float lineWidth() const
Definition: SceneDrawables.h:578
Definition: SceneDrawables.h:113
std::vector< int > SgIndexArray
Definition: SceneDrawables.h:222
const T & front() const
Definition: SceneDrawables.h:195
SgVectorArray(const SgVectorArray &org)
Definition: SceneDrawables.h:173
void setRotation(double rotation)
Definition: SceneDrawables.h:96
ref_ptr< SgTextureTransform > SgTextureTransformPtr
Definition: SceneDrawables.h:110
const Vector2 & center() const
Definition: SceneDrawables.h:92
bool side
Definition: SceneDrawables.h:362
Definition: SceneDrawables.h:456
Eigen::Map< const Array2i > ConstLineRef
Definition: SceneDrawables.h:551
float ambientIntensity() const
Definition: SceneDrawables.h:24
double radius
Definition: SceneDrawables.h:352
int numTriangles() const
Definition: SceneDrawables.h:305
Definition: SceneDrawables.h:354
Definition: SceneDrawables.h:17
bool repeatS() const
Definition: SceneDrawables.h:127
SgNormalArray * normals()
Definition: SceneDrawables.h:244
Definition: SceneDrawables.h:509
void setCenter(const Eigen::MatrixBase< Derived > &c)
Definition: SceneDrawables.h:93
iterator end()
Definition: SceneDrawables.h:183
bool bottom
Definition: SceneDrawables.h:361
Cone()
Definition: SceneDrawables.h:367
virtual SgObject * clone(SgCloneMap &cloneMap) const
Definition: SceneDrawables.h:175
const unsigned char * constPixels() const
Definition: SceneDrawables.h:68
Cone(double radius, double height)
Definition: SceneDrawables.h:368
ref_ptr< SgTexCoordArray > SgTexCoordArrayPtr
Definition: SceneDrawables.h:220
bool hasVertices() const
Definition: SceneDrawables.h:237
SgVectorArray(const std::vector< T > &org)
Definition: SceneDrawables.h:163
SgColorArray * colors()
Definition: SceneDrawables.h:250
bool hasNormals() const
Definition: SceneDrawables.h:476
SgImage * image()
Definition: SceneDrawables.h:122
Definition: SceneDrawables.h:51
void setTriangle(int index, int v0, int v1, int v2)
Definition: SceneDrawables.h:319
ref_ptr< SgLineSet > SgLineSetPtr
Definition: SceneDrawables.h:587
const T & at(size_type i) const
Definition: SceneDrawables.h:193
double right
Definition: SceneDrawables.h:601
const SgIndexArray & normalIndices() const
Definition: SceneDrawables.h:482
const Vector2 & translation() const
Definition: SceneDrawables.h:100
SgVertexArray * vertices()
Definition: SceneDrawables.h:238
T & back()
Definition: SceneDrawables.h:196
Definition: SceneDrawables.h:599
const T & back() const
Definition: SceneDrawables.h:197
bool top
Definition: SceneDrawables.h:363
SgTexture * texture()
Definition: SceneDrawables.h:440
double height
Definition: SceneDrawables.h:371
Sphere()
Definition: SceneDrawables.h:350
ref_ptr< SgVertexArray > SgVertexArrayPtr
Definition: SceneDrawables.h:211
const SgIndexArray & colorIndices() const
Definition: SceneDrawables.h:491
SgVectorArray(size_t size)
Definition: SceneDrawables.h:161
const SgMaterial * material() const
Definition: SceneDrawables.h:473
void setNumLines(int n)
Definition: SceneDrawables.h:543
SgIndexArray & normalIndices()
Definition: SceneDrawables.h:264
SgIndexArray & texCoordIndices()
Definition: SceneDrawables.h:270
const SgVertexArray * vertices() const
Definition: SceneDrawables.h:239
void setLineWidth(float width)
Definition: SceneDrawables.h:573
void setDiffuseColor(const Eigen::MatrixBase< Derived > &c)
Definition: SceneDrawables.h:27
Definition: SceneDrawables.h:144
SgTextureTransform * textureTransform()
Definition: SceneDrawables.h:131
Definition: BoundingBox.h:17
ref_ptr< SgTexture > SgTexturePtr
Definition: SceneDrawables.h:141
Definition: SceneGraph.h:56
TriangleRef addTriangle()
Definition: SceneDrawables.h:326
SgVectorArray< Vector3f > SgColorArray
Definition: SceneDrawables.h:216
Definition: SceneDrawables.h:225
void reserveNumTriangles(int n)
Definition: SceneDrawables.h:307
double zNear
Definition: SceneDrawables.h:604
Definition: SceneDrawables.h:392
TriangleRef triangle(int index)
Definition: SceneDrawables.h:310
void setPointSize(double size)
Definition: SceneDrawables.h:516
double zFar
Definition: SceneDrawables.h:605
void pop_back()
Definition: SceneDrawables.h:201
const Vector2 & scale() const
Definition: SceneDrawables.h:97
Definition: Image.h:15
const SgMesh * mesh() const
Definition: SceneDrawables.h:431
const_iterator begin() const
Definition: SceneDrawables.h:182
Cylinder()
Definition: SceneDrawables.h:356
T & operator[](size_type i)
Definition: SceneDrawables.h:190
bool hasColors() const
Definition: SceneDrawables.h:485
ref_ptr< SgMeshBase > SgMeshBasePtr
Definition: SceneDrawables.h:288
bool hasNormals() const
Definition: SceneDrawables.h:243
int numComponents() const
Definition: SceneDrawables.h:72
void push_back(const T &v)
Definition: SceneDrawables.h:200
BoundingBox bbox
Definition: SceneDrawables.h:276
double pointSize() const
Definition: SceneDrawables.h:521
void resize(size_type s)
Definition: SceneDrawables.h:186
const SgIndexArray & colorIndices() const
Definition: SceneDrawables.h:266
bool hasColors() const
Definition: SceneDrawables.h:249
const Image & constImage() const
Definition: SceneDrawables.h:62
Container::iterator iterator
Definition: SceneDrawables.h:149
const SgColorArray * colors() const
Definition: SceneDrawables.h:487
Eigen::Map< const Array3i > ConstTriangleRef
Definition: SceneDrawables.h:314
const Scalar * data() const
Definition: SceneDrawables.h:199
Definition: SceneDrawables.h:342
void addLine(int v0, int v1)
Definition: SceneDrawables.h:568
double bottom
Definition: SceneDrawables.h:602
T & front()
Definition: SceneDrawables.h:194
ConstLineRef line(int index) const
Definition: SceneDrawables.h:552
const int primitiveType() const
Definition: SceneDrawables.h:378
SgTexCoordArray * texCoords()
Definition: SceneDrawables.h:256
Eigen::Map< Array3i > TriangleRef
Definition: SceneDrawables.h:309
iterator erase(iterator first, iterator last)
Definition: SceneDrawables.h:203
void setShininess(float s)
Definition: SceneDrawables.h:33
const SgTexCoordArray * texCoords() const
Definition: SceneDrawables.h:257
ref_ptr< SgNormalArray > SgNormalArrayPtr
Definition: SceneDrawables.h:214
Box(Vector3 size)
Definition: SceneDrawables.h:345
bool hasVertices() const
Definition: SceneDrawables.h:466
SgMaterial * material()
Definition: SceneDrawables.h:472
void setTransparency(float t)
Definition: SceneDrawables.h:38
ref_ptr< SgShape > SgShapePtr
Definition: SceneDrawables.h:453
Definition: SceneGraph.h:160
const SgIndexArray & lineVertices() const
Definition: SceneDrawables.h:539
Vector3 size
Definition: SceneDrawables.h:346
bool empty() const
Definition: SceneDrawables.h:64
const Vector3f & diffuseColor() const
Definition: SceneDrawables.h:26
const SgNormalArray * normals() const
Definition: SceneDrawables.h:478
ref_ptr< SgPlot > SgPlotPtr
Definition: SceneDrawables.h:506
void setPrimitive(const TPrimitive &prim)
Definition: SceneDrawables.h:380
const Vector3f & specularColor() const
Definition: SceneDrawables.h:34
ref_ptr< SgPointSet > SgPointSetPtr
Definition: SceneDrawables.h:529
Definition: SceneDrawables.h:338
const SgVertexArray * vertices() const
Definition: SceneDrawables.h:468
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
Box()
Definition: SceneDrawables.h:344
Definition: SceneDrawables.h:590
void clear()
Definition: SceneDrawables.h:204
Cylinder(double radius, double height)
Definition: SceneDrawables.h:357
const TPrimitive & primitive() const
Definition: SceneDrawables.h:379
Container::pointer pointer
Definition: SceneDrawables.h:155
float transparency() const
Definition: SceneDrawables.h:37
double top
Definition: SceneDrawables.h:603
bool repeatT() const
Definition: SceneDrawables.h:128
const SgIndexArray & polygonVertices() const
Definition: SceneDrawables.h:408
LineRef line(int index)
Definition: SceneDrawables.h:547
SgIndexArray & triangleVertices()
Definition: SceneDrawables.h:303
SgVectorArray< Vector2f, Eigen::aligned_allocator< Vector2f > > SgTexCoordArray
Definition: SceneDrawables.h:219
const SgColorArray * colors() const
Definition: SceneDrawables.h:251
Eigen::Vector2d Vector2
Definition: EigenTypes.h:56
SgIndexArray & polygonVertices()
Definition: SceneDrawables.h:407
SgVertexArray * vertices()
Definition: SceneDrawables.h:467
Container::size_type size_type
Definition: SceneDrawables.h:151
const Image & image() const
Definition: SceneDrawables.h:61
void setRepeat(bool s, bool t)
Definition: SceneDrawables.h:129
double rotation() const
Definition: SceneDrawables.h:95
void resize(size_type s, const T &v)
Definition: SceneDrawables.h:187
SgVectorArray< T > & operator=(const SgVectorArray< T > &rhs)
Definition: SceneDrawables.h:177
bool hasTexCoords() const
Definition: SceneDrawables.h:255
Definition: SceneDrawables.h:420
Container::const_reference const_reference
Definition: SceneDrawables.h:154
int height() const
Definition: SceneDrawables.h:71
SgIndexArray & lineVertices()
Definition: SceneDrawables.h:540
void setTranslation(const Eigen::MatrixBase< Derived > &c)
Definition: SceneDrawables.h:101
bool empty() const
Definition: SceneDrawables.h:188
SgNormalArray * normals()
Definition: SceneDrawables.h:477
Definition: SceneDrawables.h:348
Definition: SceneDrawables.h:340
const_iterator end() const
Definition: SceneDrawables.h:184
SgIndexArray & normalIndices()
Definition: SceneDrawables.h:483
void setSolid(bool on)
Definition: SceneDrawables.h:273
PrimitiveType
Definition: SceneDrawables.h:338
Eigen::Vector3d Vector3
Definition: EigenTypes.h:58
Definition: SceneDrawables.h:83
void setLine(int index, int v0, int v1)
Definition: SceneDrawables.h:556
LineRef addLine()
Definition: SceneDrawables.h:562
Definition: SceneDrawables.h:532
void setAmbientIntensity(float intensity)
Definition: SceneDrawables.h:25
iterator erase(iterator p)
Definition: SceneDrawables.h:202
double height
Definition: SceneDrawables.h:360
#define CNOID_EXPORT
Definition: Util/exportdecl.h:37
void setSpecularColor(const Eigen::MatrixBase< Derived > &c)
Definition: SceneDrawables.h:35
const SgIndexArray & triangleVertices() const
Definition: SceneDrawables.h:302
void setEmissiveColor(const Eigen::MatrixBase< Derived > &c)
Definition: SceneDrawables.h:30
Container::const_pointer const_pointer
Definition: SceneDrawables.h:156
void setScale(const Eigen::MatrixBase< Derived > &c)
Definition: SceneDrawables.h:98
void reserve(size_type s)
Definition: SceneDrawables.h:189
const SgNormalArray * normals() const
Definition: SceneDrawables.h:245
iterator begin()
Definition: SceneDrawables.h:181
double left
Definition: SceneDrawables.h:600
ConstTriangleRef triangle(int index) const
Definition: SceneDrawables.h:315
Container::const_iterator const_iterator
Definition: SceneDrawables.h:150
Sphere(double radius)
Definition: SceneDrawables.h:351
Eigen::Map< Array2i > LineRef
Definition: SceneDrawables.h:546
bool isSolid() const
Definition: SceneDrawables.h:272
Container::reference reference
Definition: SceneDrawables.h:153
const SgIndexArray & normalIndices() const
Definition: SceneDrawables.h:263
int numLines() const
Definition: SceneDrawables.h:542
SgMesh * mesh()
Definition: SceneDrawables.h:430
SgVectorArray< Vector3f > SgNormalArray
Definition: SceneDrawables.h:213
size_type size() const
Definition: SceneDrawables.h:185
T & at(size_type i)
Definition: SceneDrawables.h:192
Scalar * data()
Definition: SceneDrawables.h:198
Definition: SceneVisitor.h:15
void setNumTriangles(int n)
Definition: SceneDrawables.h:306
SgVectorArray< Vector3f > SgVertexArray
Definition: SceneDrawables.h:210
const T & operator[](size_type i) const
Definition: SceneDrawables.h:191
SgIndexArray & colorIndices()
Definition: SceneDrawables.h:267
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
Definition: SceneDrawables.h:86
void addTriangle(int v0, int v1, int v2)
Definition: SceneDrawables.h:332
bool side
Definition: SceneDrawables.h:373
double radius
Definition: SceneDrawables.h:359
SgIndexArray & colorIndices()
Definition: SceneDrawables.h:492
const SgImage * image() const
Definition: SceneDrawables.h:123
SgVectorArray(const std::vector< Element > &org)
Definition: SceneDrawables.h:166
boost::variant< Mesh, Box, Sphere, Cylinder, Cone > Primitive
Definition: SceneDrawables.h:376
Definition: SceneGraph.h:79
const SgIndexArray & texCoordIndices() const
Definition: SceneDrawables.h:269
ref_ptr< SgImage > SgImagePtr
Definition: SceneDrawables.h:80
T::Scalar Scalar
Definition: SceneDrawables.h:157