Parent Directory
|
Revision Log
| Links to HEAD: | (view) (download) (annotate) |
| Sticky Revision: |
Skeleton code for HTriMesh drawing via Planetes glass. libsets/Var1 ============ * Glasses/Planetes.cxx: * Glasses/Planetes.h: * Rnr/GL/Planetes_GL_Rnr.cxx: * Rnr/GL/Planetes_GL_Rnr.h: New files - a planet using HTriMesh for terrain representation. * Glasses/Extendio.cxx: Use display-lists by default. * Glasses/HTriMesh.cxx: * Glasses/HTriMesh.h: Remove mDrawLevel - it belongs into the representation glass. Add mMaxLevel memeber. * Glasses/TriMesh.cxx: * Glasses/TriMesh.h: Add function NormalizeVertices(). * Rnr/GL/Extendio_GL_Rnr.cxx: * Rnr/GL/Extendio_GL_Rnr.h: Beautify. * glass.list: Register new glass Planetes. demos/Var1 ========== * spherula.C: Add HTriMesh and Planetes.
Basic implementation of hierarhically subdivided mesh. * Glasses/HTriMesh.cxx: * Glasses/HTriMesh.h: New glass - hierarhically sub-divided mesh. * Glasses/TriMesh.cxx: * Glasses/TriMesh.h: Rename inner struct xx_edge to Edge. Add fill_edge_map() method and a static version working on raw arrays. * glass.list: Register HTriMesh.
Add icosahedral world support as a first step towards hierarhical triangulation. libsets/Var1 ============ * Glasses/TriMesh.cxx: * Glasses/TriMesh.h: Add functions MakeIcosahedron() and ScaleVertices(). Always use Int_t for triangle indices on gled side, cast to UInt_t when passing them to Opcode. Some gray and white space changes. * Glasses/Tringula.cxx: place_on_terrain(): better initialization of min_dist. * Glasses/TringulaTester.cxx: Add identifiers to printout. * Glasses/TriMeshField.cxx: * Rnr/GL/LandMark_GL_Rnr.cxx: Use Int_t for triangle indices on gled side. demos/Var1 ========== * spherula.C: Add an icosahedron into scene (created by TriMesh directly). * tringula.C: Add world on an icosahedron, mode 98.
Randomly colorize statos. libsets/Var1 ============ * Glasses/TriMesh.cxx: In MakeBox() do not generate triangle colors, use underlaying color of object using the mesh. demos/Var1 ========== * tringula.C: Randomly colorize staticos with witish colors.
In ImportGTSurf() do not automatically generate vertex and triangle normals.
Add support for per-triangle texture coordinates. Geom1/ ====== * Stones/TringTvor.cxx: * Stones/TringTvor.h: Introduce mode enum (per-vertex, per-triangle) and use it for normals, color and texture. Modify constructors and Reset() functions to support that. Add functions for per-triangle texture handling. * Rnr/GL/TringTvor_GL_Rnr.cxx: * Rnr/GL/TringTvor_GL_Rnr.h: Restructure to support all possible per-vertex / per-triangle combinations of normal, color and texture rendering. The setup pass is now well structured (BeginSetup(), do stuff, EndSetup()) and the state is cached indata members. * Glasses/RectTerrain.cxx: Adapt for new TringTvor rendering. Var1/ ===== * Glasses/Extendio.cxx: * Glasses/Extendio.h: Add data-member ZLink<ZImage> mTexture. * Glasses/TriMesh.cxx: * Glasses/TriMesh.h: Add function ImportOoliteDAT() that imports Oolite models. * Glasses/TringuRep.h: Smooth shading requires retriangulation. * Rnr/GL/Extendio_GL_Rnr.cxx: * Rnr/GL/Extendio_GL_Rnr.h: Cache bounding-box rendering state in a data-member. Adapt for new TringTvor rendering. * Rnr/GL/TringuRep_GL_Rnr.cxx: * Rnr/GL/TringuRep_GL_Rnr.h: Keep TringTvor_GL_Rnr instance to avoid setup overhead. Adapt for new TringTvor rendering.
Code stucture improvements. Migrate selection into TSPupilInfo. Replace most Opcode defines with const variables. libsets/Geom1 ============= * Rnr/GL/TringTvor_GL_Rnr.cxx: * Rnr/GL/TringTvor_GL_Rnr.h: Add static function RenderCEBBox() (moved in from Extendio_GL_Rnr). libsets/Var1 ============ * Glasses/Extendio.cxx: * Glasses/Extendio.h: Remove obsolete members bRnrSelf, bVerboseCollide and bSelected. Add debug-bits enum, data-member and access methods. * Glasses/Crawler.cxx: * Glasses/Flyer.cxx: Use debug-bits from extendio. * Glasses/TSPupilInfo.cxx: * Glasses/TSPupilInfo.h: Add selection management (moved in from TringuCam). Add member mSelectionColor. * Glasses/TringuCam.cxx: * Glasses/TringuCam.h: Move selection managememt to TSPupilInfo. * Glasses/TringuRep.cxx: * Glasses/TringuRep.h: Add link to TSPupilInfo - needed for selection display. * Glasses/Tringula.cxx: * Glasses/Tringula.h: Remove member mSelColor. * Rnr/GL/Extendio_GL_Rnr.cxx: * Rnr/GL/Extendio_GL_Rnr.h: Move render_ceaabox() to TringTvor_GL_Rnr. Remove code for rendering boxes around selected extendios - this is now done by TringuRep_GL_Rnr. * Rnr/GL/TringuRep_GL_Rnr.cxx: Render boxes around selected extendios. * Opcode/Ice/IcePoint.h: Remove unused define. * Opcode/Ice/IceTypes.h: Replace defines with const variables in Opcode namespace. * Glasses/Dynamico.cxx: * Glasses/PSTriangle.cxx: * Glasses/TriMesh.cxx: * Glasses/TriMeshField.cxx: * Rnr/GL/LandMark_GL_Rnr.cxx: Opcode defines are now namespace variables. demos/Var1 ========== * tringula.C: Set PupilInfo link of TringuRep.
Major update of Tringula rendering / management. libsets/Geom1 ============= * Stones/TringTvor.cxx: * Stones/TringTvor.h: Add variants of GenerateTriangleColorsFromVertexColors() functions that take external vertex/triangle color arrays as arguments. * Rnr/GL/TringTvor_GL_Rnr.cxx: * Rnr/GL/TringTvor_GL_Rnr.h: Implement also as a class. It is now possible to attach external color arrays into the rendering pipeline. It is trivial to extend this for textures, too. Improve the static do-it-all function. * Rnr/GL/RectTerrain_GL_Rnr.cxx: * Rnr/GL/RectTerrain_GL_Rnr.h: Use the new TringTvor rendering code. libsets/Var1 ============ * Glasses/CrawlerSpiritio.cxx: Attach to TringuRep on activation -- Tringula is not in render path anymore. * Glasses/TSPupilInfo.cxx: * Glasses/TSPupilInfo.h: Add link to TringuRep. * Glasses/TriMesh.cxx: * Glasses/TriMesh.h: Add abstract interace TriMeshColorArraySource. Subclass from it. Allow external color-array-source to be passed into ColorBySomeTerrainProp(). These should really go to TriMeshField. * Glasses/TriMeshField.cxx: * Glasses/TriMeshField.h: * Glasses/TriMeshLightField.cxx: * Glasses/TriMeshLightField.h: Add link to ZGlass that plays the role of TriMeshColorArraySource. Use it when colorizing/modulating color arrays. Beautify most of the code. * Glasses/TringuCam.cxx: * Glasses/TringuCam.h: Remove all field / field-spraying code and code for colorization of terrain based on its height/normal -- moved to TringuRep. * Glasses/TringuRep.cxx: * Glasses/TringuRep.h: Subclass from TriMeshColorArraySource. Move in code for managing fields / terrain coloration from TringuCam. * Glasses/Tringula.cxx: * Glasses/Tringula.h: Remove some obsolete members for rendering control. * Rnr/GL/TringuRep_GL_Rnr.cxx: * Rnr/GL/TringuRep_GL_Rnr.h: Render tringula with tringu-rep's internal color arrays. New TRingTvor renderer allows that. Render all extendios by direct calls to RnrDriver. This could be improved -- see comments in the code. * Rnr/GL/Tringula_GL_Rnr.cxx: Simplify -- now mostly obsolete. Probably should be even removed. demos/Var1 ========== * tringula.C: Use TringuRep as primary/only representation of Tringula. Add buttons to switch shadows and flat/smooth shading to terrain-control menu. Increase initial pupil window size to 1024x768.
Incarnate proto Spiritios.
So far only activated in tringula test mode. Only very basic functionality -
controls work but the Crawlers do not obey them.
gled-build
==========
* libexec/project7.pl:
Make assert_linkname return the pointer the lens pointed
to (auto-generated via L{a} pragma).
libsets/GledCore
================
* Eye/OptoStructs.cxx:
* Eye/OptoStructs.h:
Add function ZGlassImg::DumpLinkData() to simplify debugging of
registered link data.
* Glasses/PupilInfo.cxx:
* Glasses/PupilInfo.h:
Use L{f} pragma for links mOverlay and mEventHandler. Thus
sub-classes can restrict the FID of assigned lenses.
Add local members holding last-render (cam-fix-trans, true window
widt and height) and last-event (mouse pos, ray vectors defined by
the mouse position) info. These are copied in by the
PupilInfo_GL_Rnr.
* Glasses/ZGlPerspective.cxx:
* Glasses/ZGlPerspective.h:
Add new ViewMode_e entry, VM_OrthoTrueAspect, to make it easy to
define "square" coordinate systems (where unit in horizontal and
vertical direction has the same lenght). Add function:
void StandardTrueAspect(); // X{E}
to make it easy to setup.
* Glasses/ZHashList.cxx:
* Glasses/ZHashList.h:
Add functions:
virtual void MoveToFront(ZGlass* lens); // X{E} C{1}
virtual void MoveToBack (ZGlass* lens); // X{E} C{1}
They allow easy movement of lenses in the list.
Improve some element handling functions (don't use unnecessary
temporary iterators.).
Beautify layout.
* Glasses/ZNameMap.cxx:
Improve class-docs.
* Glasses/ZNode.cxx:
* Glasses/ZNode.h:
Add function:
void AddRnrMod(ZGlass* el); // X{E} C{1}
to simplify adding of a rnr-mod.
* Gled/GTime.h:
Add version of ToMiliSec() taking max-time argument:
ULong_t ToMiliSec(Long_t max);
* Gled/GledNS.cxx:
* Gled/GledTypes.h:
Add Exc_t operator+(const Exc_t &s1, char c).
* Pupils/Pupil.cxx:
* Pupils/Pupil.h:
Call PupilInfo_GL_Rnr::InitRendering() at the start of Render().
Call RnrDriver::PreEventHandling() and PupilInfo_GL_Rnr::Hanlde()
before doing any other event handling.
Beautify layout.
* Rnr/GL/GLRnrDriver.cxx:
* Rnr/GL/GLRnrDriver.h:
Add:
void PreEventHandling(A_Rnr::Fl_Event& e)
that copies some event data into local variables.
Add members to store position of mouse, positions at last button
press for each button, last drag dx/dy and mouse ray vectors.
* Rnr/GL/PupilInfo_GL_Rnr.cxx:
* Rnr/GL/PupilInfo_GL_Rnr.h:
Add:
virtual void InitRendering(RnrDriver* rd);
virtual int Handle(RnrDriver* rd, Fl_Event& ev);
They copy some data to the lens side.
* Rnr/GL/ZGlPerspective_GL_Rnr.cxx:
* Rnr/GL/ZGlPerspective_GL_Rnr.h:
Add handling of view-mode VM_OrthoTrueAspect.
* Rnr/GL/ZGlass_GL_Rnr.cxx:
Bug-fix in passing event to list elements (extra ; after if).
* RnrBase/A_Rnr.h:
Add bool fIsKey to A_Rnr::Fl_Event.
* Stones/SVars.h:
SDesireVar: add methods DesireToValue(), IsAbove/BelowDesire().
Make mDesire and bDesireSatisfied mutable to achieve const
correctness.
* perllib/GLED_GledCore_Widgets.pm:
Add sub make_step() to package Widget - it calls only
Fl_Valuator::step(), assuming min/max are set from elsewhere.
Use this in Widgets::DesireVar - min/max are stored in the SVar.
libsets/Var1
============
* Glasses/Crawler.cxx:
* Glasses/Crawler.h:
Move in desire-vars mThrottle and mWheel from deceased XXXCart.
* Glasses/Extendio.cxx:
* Glasses/Extendio.h:
Proper implementation of ctor and dtor.
* Glasses/TriMesh.cxx:
Bugfix: calls to make_tetra_blade() were assuming left-to-right
evaluation of function arguments.
* Glasses/TringuCam.cxx:
* Glasses/TringuCam.h:
Move some menu-handling links and functions into new glass
TSPupilInfo.
Add semi-functional DynoDrive(Dynamico* dyno).
* catalog.patch:
Add entries for new glass Spiritio and new stone-file KeyHandling.
* glass.list:
Register a bunch of new glasses, see below.
Remove XXXCart, TabletReader and TabletImage.
Change glass numbering -- rather drastically.
* Glasses/TSPupilInfo.cxx:
* Glasses/TSPupilInfo.h:
* Rnr/GL/TSPupilInfo_GL_Rnr.cxx:
* Rnr/GL/TSPupilInfo_GL_Rnr.h:
New glass - Tringu-Sol PupilInfo.
Provides handling of stuff connected with a GL window.
Holds lists of overlay-elements, event-handlers and spiritios.
Provides top menu management (taken out of TringuCam).
* Glasses/Spiritio.cxx:
* Glasses/Spiritio.h:
* Glasses/ExtendioSpiritio.cxx:
* Glasses/ExtendioSpiritio.h:
* Glasses/CrawlerSpiritio.cxx:
* Glasses/CrawlerSpiritio.h:
* Rnr/GL/Spiritio_GL_Rnr.cxx:
* Rnr/GL/Spiritio_GL_Rnr.h:
* Rnr/GL/CrawlerSpiritio_GL_Rnr.cxx:
* Rnr/GL/CrawlerSpiritio_GL_Rnr.h:
Preliminary implementation of Spiritio and its proto-incarnation
in CrawlerSpiritio.
* Glasses/TringuObserver.cxx:
* Glasses/TringuObserver.h:
* Glasses/TringuObserverSpiritio.cxx:
* Glasses/TringuObserverSpiritio.h:
* Rnr/GL/TringuObserverSpiritio_GL_Rnr.cxx:
* Rnr/GL/TringuObserverSpiritio_GL_Rnr.h:
Conglomerat of new glasses/rnrs that is to take over currently
default "fly-over-tringula-and-do-fun-stuff" mode.
Some of the stuff in TringCam will be moved here.
* Stones/KeyHandling.cxx:
* Stones/KeyHandling.h:
New file holding multiple stones in namespace KeyHandling.
Key-handling structures for lens and rnr side, including
callbacks into lens methods.
* Glasses/XXXCart.cxx:
* Glasses/XXXCart.h:
Removed -- functionality moved into Crawler.
* Glasses/TabletImage.cxx:
* Glasses/TabletImage.h:
* Glasses/TabletReader.cxx:
* Glasses/TabletReader.h:
* Rnr/GL/TabletImage_GL_Rnr.cxx:
* Rnr/GL/TabletImage_GL_Rnr.h:
Removed -- never really implemented.
demos/Var1
==========
* tringula.C:
Changes for Spiritio handling. So far only activated in test mode.
Only very basic functionality - controls work but the Crawlers do
not obey them.
Add some comments.
Implement terrain-tracking for land-mark perimeter line. There is an issue with Int_t/UInt_t triangle indices - Opcode uses UInt_t, TringTvor Int_t. Need to see how hierarhical tringula will be implemented. Had another creepy idea - to use doubles everywhere - in TriMesh and in Opcode. This requires more memory, but allows to run a large planet on a single tringula! Memory could be regained completely by quantizing the vertex and triangle normals into shorts. Anyway, could start with making a type-defed Opcode and templating the TriMesh. * Glasses/Crawler.cxx: Use closest-hit instead of first-contact for terrain tracking. * Glasses/LandMark.cxx: * Glasses/LandMark.h: Add members for controlling how the perimeter-line of the land-mark region gets calculated and rendered: Float_t mLineHeight - height above terrain; Int_t mNLineSegments - number of main-divisions; Bool_t bDetailedLine - sub-divide on triangle-crossing; Bool_t bRnrIdealLine - render also line that is not projected on terrain. Consolidate stamping calls. * Glasses/TriMesh.cxx: * Glasses/TriMesh.h: Add function Bool_t FindPointFromXYZH(...) - it determines the vertical vector at given position and returns point at given relative height above the terrain. Add function Bool_t FindTriangleExitPoint(...) - given a point (presumably within the triangle) and direction, determine the exit-point of line determined by input data. Consolidate all triangle query functions to use UInt_t. This is a bit weak - but is requirement from Opcode. Needs to be revisited, and maybe changed in Opcode as well. * Glasses/TriMeshField.cxx: Use UInt_t for triangle queries. * Glasses/TringuCam.cxx: In MakeLandmark activated, only store previous mouse-action if not already in * Glasses/Tringula.cxx: * Rnr/GL/LandMark_GL_Rnr.cxx: * Rnr/GL/LandMark_GL_Rnr.h: Add code for almost correct tracing of land-mark region over terrain triangles. Activate PostDraw() - the land-line is calculated in parent's coordinate frame. The points are calculated during Render() and stored in member-vector. As display-lists are used for LandMark, this vector is only regenerated when required. * Rnr/GL/TringuCam_GL_Rnr.cxx: Define PARENT class. * Stones/HTrans.h: Add explicit PtrPAseVecX/Y/Z() and ref_base_vec_x/y/z() methods. * Opcode/OPC_RayCollider.cpp: Allow temporal coherence to be used also when not in first-contact mode. White-space changes. * Opcode/OPC_Collider.h: White-space.
Consolidate mesh-ray collider error reporting. * Glasses/Crawler.cxx: * Glasses/Flyer.cxx: * Glasses/TriMesh.cxx: * Glasses/TriMesh.h: * Glasses/TriMeshLightField.cxx: * Glasses/Tringula.cxx: Use RayCollider::CollideInfo() to format error messages. * Opcode/OPC_RayCollider.cpp: * Opcode/OPC_RayCollider.h: Add function 'string CollideInfo()'. * Opcode/Opcode.h: Correctly include C-headers.
Basic support for land-mark management and rendering. libsets/Var1 ============ * Glasses/LandMark.cxx: * Glasses/LandMark.h: Add members: Float_t mPhi, mSx, mSy; // rotation, size in x/y dirextion; ZColor mColor; // Color of the land-mark and markup. Enable usage of display-lists by default. Add method 'SetFGH(...)'. * Glasses/TriMesh.cxx: * Glasses/TriMesh.h: Add method 'MakeTetraMark(...)' that generates mesh for a land-mark. * Glasses/TringuCam.cxx: * Glasses/TringuCam.h: Add land-mark handling (events, new state for expecting terrain-click). Add method RandomStatico(). * Glasses/Tringula.cxx: * Glasses/Tringula.h: Add data-member 'ZLink<ZHashList> mLandMarks>'. Add function 'AddLandMark()'. * Rnr/GL/Extendio_GL_Rnr.cxx: * Rnr/GL/Extendio_GL_Rnr.h: * Rnr/GL/LandMark_GL_Rnr.cxx: * Rnr/GL/LandMark_GL_Rnr.h: New files - GL renderer for LandMark. * glass.list: LandMark has its own renderer class. demos/Var1 ========== * tringula.C: Generate land-mark mesh. Add Test-Menu (entries "Rnd Statos", "New LandMark"). Add LandMark sub-menu.
Remove ancient debug printout.
libsets/Geom1 ============= * Stones/TringTvor.cxx: * Stones/TringTvor.h: Add members: Float_t mMinEdgeLen, mMaxEdgeLen; and calculate them in CalculateBoundingBox(). Add functions: Float_t SqrLen(const Float_t a[3], const Float_t b[3]); void SqrMinMaxEdgeLen(Int_t ti, Float_t& min, Float_t& max); libsets/Var1 ============ * Glasses/Crawler.cxx: * Glasses/Crawler.h: Rewrite time-step code to use full velocity and angular velocity vectors. Also, cache gravity-data as long as it is valid. Add member 'Float_t mRayOffset' that allows us to reuse gravity-data from the previous step. * Glasses/Dynamico.cxx: * Glasses/Dynamico.h: Add function: void update_grav_safeties(Float_t vl, Float_t vt); that is common to flyers and crawlers. * Glasses/Flyer.cxx: Move code for gravity safety calculation to Dynamico. * Glasses/TriMesh.cxx: * Glasses/TriMesh.h: Add member 'HPointF mSection' that holds side-view areas of the mesh. Calculate it in SetMassAndSpeculate(). * Stones/HTrans.h: Add function Zero(). * Opcode/Ice/IcePoint.h: Add static functions: float MaxDistance(const Point& a, const Point& b, const Point& c); float MaxSquareDistance(const Point& a, const Point& b, const Point& c);
libsets/Geom1 ============= * Glasses/TriMesh.cxx: * Glasses/TriMesh.h: Add function extrude_triangle(). Add function make_tetra_blade() for creation of individual tetrahedrons. Add function MakeTetraChopper() to create a dragon-fly like flyer. * Glasses/Tringula.cxx: * Glasses/Tringula.h: Add function RandomChopper(). libsets/Var1 ============ * Stones/TringTvor.cxx: * Stones/TringTvor.h: Add functions AddVertices(Int_t nv) and AddTriangles(Int_t nt). They allow the tvor to be extended with new vertices and triangles. Add functions: Float_t CalculateTriangleNormal(Int_t ti, Float_t normal[3]) Float_t CalculateTriangleNormalAndCog(Int_t ti, Float_t normal[3], Float_t cog[3]); that simplify some calculations. demos/Var1 ========== * tringula.C: Add some choppers.
Replace svn:keywords with Id, on all files that had it set before. On all files with svn:keywords set, replace $Header$ with $Id$. Header is not supported by svn. Make sure all ClassDefs/Imps() end with an ';'.
Moving libset Var1 into libsets directory.
Fixes for gcc-4.3.
Add inner public structure VertexVisitor (and its sub-class VertexVisitorMaxDist) that together with a new member-function VisitVertices() allow for somewhat painless interation over vertices with custom acceptance condition and operation performed for each vertex.
Added functions: Bool_t FindPointFromFGH(const Float_t fgh[3], ...); Int_t FindClosestVertex(Int_t triangle, const Float_t xyz[3],...);
Moved functions ColorByCoord/Normal[Formula] from Tringula to TriMesh. Added functions ColorByParaSurfCoord/Normal to TriMesh. Removed link-member RGBAPalette from Tringula.
Extend copyright to 2008. Remove trailing white-space.
Add method SetMassFromBBox(): allows easy faking of mesh's mass based on bounding box and surface / height fractions.
Add preliminary members for mass, surface, center-of-mass and angular momentum. Add function SetMassAndSpeculate() that allows setting of mass and calculation of derived quantities by assuming certain fraction of mass is on the shell and the rest is in the COM.
BuildOpcStructs(): throw an exception if build fails.
Added convenience functions for creation of simple meshes, like MakeBox() and MakeTetraFlyer(). Added data-members 'Float_t mVolume, mXYArea'.
Reimplemented VertexData and introduced EdgeData structure; now vertices sharing an edge point to the same data.
Changes for root-5-15-04 (increased modularity).
Added per-vertex spread and surface (summed by edge); canonization of interface.
Added structures to hold vertex-connectivity data and method to build them.
Added support for aa-bbox calculation.
Added missing includes (not needed with pre-compiled headers).
Add a cast to avoid warning on 64-bits.
This commit was generated by cvs2svn to compensate for changes in r1577, which included commits to RCS files with non-trunk default branches.
Initial import.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.
| cvs-admin@gled.org | ViewVC Help |
| Powered by ViewVC 1.1.11 |