From: Allen B. <al...@vr...> - 2005-06-30 13:44:23
|
Last night Dirk commited the first in a series of changes I have proposed to him in the TXFFace interface. The change he commited adds an offset parameter to the geo building interfaces. I found that I commonly wanted to offset the text layout a little bit to position it relative to other graphics I had already drawn. This parameter makes that very simple and easy to do. It also leads into the next proposed changed I have.... I found that I really wanted the ability to add text to a geometry node multiple times. As an example, this would allow me to position some layed out text in the upper left of a virtual UI and then to position some additional text in the lower right without having to create a new geometry core and nodes and groups, etc. I just wanted more text with the same font. While adding support for this, I also began thinking that it would be nice if I could specify the color of the text to be added. Since the code just uses a modulating texture environment it is possible to support this pretty easily using vertex colors on the glyph quads. Anyway, I extended/refined the TextTXFFace interface with the following methods: (note: the params are pretty self explanitory so I left those comments out of this mail.) /** Fills a geometry with a new text. */ void fillGeo(GeometryPtr &geoPtr, const TextLayoutResult &layoutResult, Real32 scale = 1.f, Vec2f offset = Vec2f(0,0), Color3f color = Color3f(1,1,1)); /** Adds geometry for new text to an existing text geometry. */ void addToGeom(GeometryPtr &geoPtr, const TextLayoutResult &layoutResult, Real32 scale = 1.f, Vec2f offset = Vec2f(0,0), Color3f color = Color3f(1,1,1)); /** Creates a new text geometry. */ GeometryPtr makeGeo(const TextLayoutResult &layoutResult, Real32 scale = 1.f, Vec2f offset = Vec2f(0,0), Color3f color = Color3f(1,1,1)); /** Creates a new node with a text geometry. */ NodePtr makeNode(const TextLayoutResult &layoutResult, Real32 scale = 1.f, Vec2f offset = Vec2f(0,0), Color3f color = Color3f(1,1,1)); The key changes were to: - Refactor the geometry data format used to not use any indexing. Dirk tells me that multi-indexing can perform poorly and it just makes it easier to implement... - Added a method (addToGeom) that allows text to be added to an existing text geometry node - Added color data to the geometry to allow for colored text I updated the text param test program to use these additons. You can see a screen shot of the application below. Please note that all the text shown is contained in one single geometry core. http://www.vrsource.org/~allenb/OpenSG_TextStuff.png So, what do people think of this proposed change. If it sounds good, I can pass the patch on to Dirk later today to commit. -Allen |