Extensions introduced in Castle Game Engine related to text.
See also documentation of supported nodes of the Text component and X3D specification of the Text component.
Contents:
FontStyle.blending
)FontStyle { ... SFBool [] blending TRUE }
X3D text is rendered using transparent textures.
This allows very efficient rendering on all possible 3D devices.
But it also means that you have the usual choice whether to use
"alpha testing" transparency ("all or nothing",
when the FontStyle.blending
is FALSE
) or smooth blending (default, when
the FontStyle.blending
is TRUE
).
Each one has it's benefits and drawbacks:
With alpha blending, glyph borders looks smooth (currenly our alpha test will make weirdly jagged letter borders).
With alpha testing, you do not have to worry about the order of blending. You will never see any artifacts. With alpha blending, you may need to set NavigationInfo.blendingSort field to "3D".
With alpha testing, the text casts correct shadows using shadow maps.
This is available for all FontStyle
node versions
(VRML 1.0 and VRML 2.0 / X3D).
Text3D
)Since version 5.1.0 of Castle Game Engine (corresponding
to version 3.15.0 of view3dscene), this node is deprecated,
and it is rendered only as a flat Text
node.
If you need 3D text, use a 3D modelling software, like
Blender, to create 3D mesh
for text.
We add new node:
Text3D : X3DGeometryNode { MFString [in,out] string [] SFNode [in,out] fontStyle NULL MFFloat [in,out] length [] SFFloat [in,out] maxExtent 0 SFFloat [in,out] depth 0.1 # must be >= 0 SFBool [in,out] solid TRUE }
This renders the text, pretty much like Text
node from
VRML 97 (see VRML 97 specification about string
, fontStyle
,
length
, maxExtent
fields). But the text is 3D:
it's "pushed" by the amount depth
into negative Z. The normal
text is on Z = 0, the 3D text had front cap on Z = 0, back cap on Z = -Depth,
and of course the extrusion (sides).
Also, it's natural to apply backface culling to such text, so we have
a solid
field. When true (default), then backface culling is done.
This may provide much speedup, unless camera is able to enter
"inside" the text geometry (in which case solid should be set to FALSE
).
If depth
is zero, then normal 2D text is rendered.
However, backface culling may still be applied (if solid
is true)
— so this node also allows you to make 2D text that's supposed to be
visible from only front side.
See our VRML/X3D demo models, file text/text_depth.wrl
for example use of this.
Compatibility:
EXTERNPROTO Text3D [ exposedField MFString string exposedField SFNode fontStyle exposedField MFFloat length exposedField SFFloat maxExtent exposedField SFFloat depth exposedField SFBool solid ] [ "urn:castle-engine.io:node:Text3D", "https://castle-engine.io/fallback_prototypes.wrl#Text3D" ]
This way other VRML browsers should be able to render Text3D node like normal 2D Text.
kambiDepth
, kambiSolid
fields
for AsciiText
and Text
nodes). But later I found
these Parallel Graphics Text3D
definition, so I decided
to make my version compatible.