Logo ROOT  
Reference Guide
No Matches
Go to the documentation of this file.
1/// \file
2/// \ingroup tutorial_geom
3/// Macro allowing to vizualize tessellations from Wavefront's .obj format.
5/// \image html geom_visualizeWavefrontObj.png width=500px
6/// \macro_code
8/// \author Andrei Gheata
10#include <TROOT.h>
11#include <TColor.h>
12#include <TDatime.h>
13#include <TRandom3.h>
14#include <TGeoManager.h>
15#include <TGeoTessellated.h>
18int randomColor()
20 gRandom = new TRandom3();
21 TDatime dt;
22 gRandom->SetSeed(dt.GetTime());
24 TColor *color = new TColor(ci, gRandom->Rndm(), gRandom->Rndm(), gRandom->Rndm());
25 return ci;
29void visualizeWavefrontObj(const char *dot_obj_file="", bool check = false)
31 // Input a file in .obj format (https://en.wikipedia.org/wiki/Wavefront_.obj_file)
32 // The file should have a single object inside, only vertex and faces information is used
34 TString name = dot_obj_file;
35 TString sfile = dot_obj_file;
36 if (sfile.IsNull()) {
37 sfile = gROOT->GetTutorialsDir();
38 sfile += "/geom/teddy.obj";
39 }
40 name.ReplaceAll(".obj", "");
41 gROOT->GetListOfCanvases()->Delete();
42 if (gGeoManager)
43 delete gGeoManager;
44 new TGeoManager(name, "Imported from .obj file");
45 TGeoMaterial *mat = new TGeoMaterial("Al", 26.98, 13, 2.7);
46 TGeoMedium *med = new TGeoMedium("MED", 1, mat);
47 TGeoVolume *top = gGeoManager->MakeBox("TOP", med, 10, 10, 10);
50 auto tsl = TGeoTessellated::ImportFromObjFormat(sfile.Data(), check);
51 if (!tsl) return;
52 tsl->ResizeCenter(5.);
54 TGeoVolume *vol = new TGeoVolume(name, tsl, med);
55 vol->SetLineColor(randomColor());
56 vol->SetLineWidth(2);
57 top->AddNode(vol, 1);
59 if (!gROOT->IsBatch()) top->Draw("ogl");
char name[80]
Definition TGX11.cxx:110
R__EXTERN TGeoManager * gGeoManager
#define gROOT
Definition TROOT.h:407
R__EXTERN TRandom * gRandom
Definition TRandom.h:62
The color creation and management class.
Definition TColor.h:21
static Int_t GetFreeColorIndex()
Static function: Returns a free color index which can be used to define a user custom color.
Definition TColor.cxx:2268
This class stores the date and time with a precision of one second in an unsigned 32 bit word (950130...
Definition TDatime.h:37
Int_t GetTime() const
Return time in form of 123623 (i.e. 12:36:23)
Definition TDatime.cxx:259
The manager class for any TGeo geometry.
Definition TGeoManager.h:44
void CloseGeometry(Option_t *option="d")
Closing geometry implies checking the geometry validity, fixing shapes with negative parameters (run-...
TGeoVolume * MakeBox(const char *name, TGeoMedium *medium, Double_t dx, Double_t dy, Double_t dz)
Make in one step a volume pointing to a box shape with given medium.
void SetTopVolume(TGeoVolume *vol)
Set the top volume and corresponding node as starting point of the geometry.
Base class describing materials.
Media are used to store properties related to tracking and which are useful only when using geometry ...
Definition TGeoMedium.h:23
static TGeoTessellated * ImportFromObjFormat(const char *objfile, bool check=false, bool verbose=false)
Reader from .obj format.
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
Definition TGeoVolume.h:43
void SetLineWidth(Width_t lwidth) override
Set the line width.
virtual TGeoNode * AddNode(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat=nullptr, Option_t *option="")
Add a TGeoNode to the list of nodes.
void Draw(Option_t *option="") override
draw top volume according to option
void SetLineColor(Color_t lcolor) override
Set the line color.
Random number generator class based on M.
Definition TRandom3.h:27
virtual void SetSeed(ULong_t seed=0)
Set the random generator seed.
Definition TRandom.cxx:615
Double_t Rndm() override
Machine independent random number generator.
Definition TRandom.cxx:559
Basic string class.
Definition TString.h:139
const char * Data() const
Definition TString.h:376
TString & ReplaceAll(const TString &s1, const TString &s2)
Definition TString.h:704
Bool_t IsNull() const
Definition TString.h:414